Udostępnij za pośrednictwem


Ostrzeżenia narzędzia NuGet NU1901, NU1902, NU1903, NU1904

ostrzeżenie NU1902: Pakiet "NuGet.Protocol" 5.11.2 ma znaną lukę w średniej ważności, https://github.com/advisories/GHSA-g3q9-xf95-8hp5

Kod ostrzegawczy zmienia się w zależności od znanego poziomu ważności luki w zabezpieczeniach:

Kod ostrzegawczy Ważność
NU1901  Niski
NU1902 umiarkowany
NU1903 wysoki
NU1904 critical

Problem

Przywrócony pakiet dla projektu ma znaną lukę w zabezpieczeniach.

Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą pakietów inspekcji.

Rozwiązanie

Mamy wpis w blogu zawierający więcej dyskusji na temat naszych zalecanych akcji, gdy projekt używa pakietu ze znaną luką w zabezpieczeniach i narzędziami, które mogą pomóc.

Uaktualnienie do nowszej wersji pakietu prawdopodobnie rozwiąże ostrzeżenie. Jeśli projekt nie odwołuje się bezpośrednio do pakietu (jest to pakiet przejściowy), dotnet nuget why można użyć go do zrozumienia, który pakiet spowodował, że został on uwzględniony w projekcie. Możesz sprawdzić adres URL dostarczony przez poradnik dotyczący luk w zabezpieczeniach, aby zobaczyć, jakie wersje pakietu zostały naprawione, lub sprawdzić skonfigurowane źródła pakietów, aby zobaczyć, jakie wersje pakietu są dostępne. Interfejs użytkownika menedżera pakietów programu Visual Studio może pokazywać, których wersji pakietów dotyczy problem i których nie ma znanych luk w zabezpieczeniach.

Jeśli te ostrzeżenia powodują niepowodzenie przywracania, ponieważ używasz TreatWarningsAsErrorspolecenia , możesz dodać <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors> polecenie , aby zezwolić na zachowanie tych kodów jako ostrzeżenia.

Jeśli nie chcesz otrzymywać powiadomień o lukach w zabezpieczeniach, które są mniej poważne niż poziom, z którym się czujesz, możesz edytować plik projektu i dodać właściwość NuGetAuditLevelMSBuild z wartością ustawioną na low, moderate, highlub critical. Na przykład <NuGetAuditLevel>high</NuGetAuditLevel>.

Jeśli chcesz pominąć określony poradnik, dodaj element NUGetAuditSuppress msBuild. Na przykład: <NuGetAuditSuppress Include="https://github.com/advisories/GHSA-g3q9-xf95-8hp5" />. NuGetAuditSuppressjest dostępny w programach VS 17.11 i .NET 8.0.400 SDK dla projektów korzystających z programu i z programu VS 17.12 dla projektów przy użyciu PackageReferenceprogramu packages.config.

Jeśli nie chcesz, aby pakiet NuGet sprawdzał pakiety ze znanymi lukami w zabezpieczeniach podczas przywracania, dodaj <NuGetAudit>false</NuGetAudit> element w <PropertyGroup> pliku projektu lub Directory.Build.props plik. Jeśli chcesz uruchomić inspekcję NuGet na maszynach deweloperskich, ale wyłączyć ją w potokach ciągłej integracji, możesz skorzystać ze zmiennych środowiskowych importowania programu MSBuild i utworzyć zmienną środowiskową NuGetAudit ustawioną na false wartość w definicji potoku.

W pakietach NuGet 6.12 (Visual Studio/MSBuild 17.12 i .NET 9.0.100 SDK pakiet NuGet zmienił wartość domyślną dla NuGetAuditMode elementu na all, co oznacza raport dotyczący pakietów przechodnich ze znanymi lukami w zabezpieczeniach. Wartość można jawnie ustawić, aby direct przywrócić wartość domyślną platformy .NET 8. Alternatywnie można ustawić właściwość SdkAnalysisLevel tak, aby 8.0.400 tymczasowo wyłączyć wszystkie nowe ostrzeżenia i błędy wprowadzone w nowszych wersjach zestawu SDK. W tym przypadku wartość domyślna parametru zostanie zmieniona NuGetAuditMode z powrotem na direct.