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 TreatWarningsAsErrors
polecenia , 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ść NuGetAuditLevel
MSBuild z wartością ustawioną na low
, moderate
, high
lub 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" />
.
NuGetAuditSuppress
jest 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 PackageReference
programu 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
.