Inspekcja pakietów przechodnich "dotnet restore"
Poleceniedotnet restore
, które przywraca zależności i narzędzia projektu, domyślnie generuje ostrzeżenia o lukach w zabezpieczeniach dla pakietów przechodnich.
Poprzednie zachowanie
Na platformie .NET 8 wprowadzono narzędzie NuGetAudit w celu emitowania ostrzeżeń dotyczących pakietów ze znanymi lukami w zabezpieczeniach. Domyślnie tylko bezpośrednie odwołania do pakietów zostały poddane inspekcji, jednak można było zmienić właściwość tak NuGetAuditMode
, aby zawierała wszystkie pakiety.
Nowe zachowanie
Począwszy od platformy .NET 9, NuGetAuditMode
wartość domyślna to all
, jeśli nie została jawnie ustawiona. To ustawienie oznacza, że pakiety przechodnie (zależności pakietów bezpośrednio odwołują się do projektu) ze znanymi lukami w zabezpieczeniach powodują teraz zgłaszanie ostrzeżeń.
Jeśli projekt traktuje błędy jako ostrzeżenia, to zachowanie może spowodować błędy przywracania.
Wprowadzona wersja
.NET 9 (wersja zapoznawcza 6)
Typ zmiany powodującej niezgodność
Ta zmiana jest zmianą behawioralną.
Przyczyna wprowadzenia zmiany
Pakiety ze znanymi lukami w zabezpieczeniach mogą spowodować możliwość wykorzystania aplikacji, nawet jeśli projekt nie odwołuje się bezpośrednio lub korzysta z pakietu podatnego na zagrożenia. Nowe funkcje na platformie .NET 9 ułatwiają również badanie grafu pakietów i pomijanie porad, które nie są istotne dla sposobu, w jaki aplikacja korzysta z pakietu podatnego na zagrożenia.
Zalecana akcja
Aby jawnie zmniejszyć prawdopodobieństwo wystąpienia tej zmiany powodującej niezgodność kompilacji z powodu ostrzeżeń, możesz rozważyć użycie
<TreatWarningsAsErrors>
i użyć<WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors>
polecenia , aby zapewnić, że znane luki w zabezpieczeniach są nadal dozwolone w danym środowisku.Użyj narzędzi, takich jak
dotnet nuget why
, aby znaleźć pakiet najwyższego poziomu, który spowodował przejście pakietu ze znaną luką w zabezpieczeniach, i spróbuj uaktualnić go, aby sprawdzić, czy luka w zabezpieczeniach przechodnich zniknie. Jeśli nie, podwyższ poziom pakietu przejściowego do pakietu najwyższego poziomu, dodającPackageReference
dla niego element i uaktualnij go do nowszej wersji.Jeśli chcesz pominąć określony poradnik, możesz dodać
<NuGetAuditSuppress Include="url" />
element do pliku projektu, gdzieurl
jest to adres URL zgłoszony w komunikacie ostrzegawczym Narzędzia NuGet.<ItemGroup> <NuGetAuditSuppress Include="url" /> </ItemGroup>
Jeśli chcesz ostrzegać tylko przed bezpośrednimi odwołaniami do pakietów ze znanymi lukami w zabezpieczeniach, możesz ustawić wartość
<NuGetAuditMode>
nadirect
w pliku projektu.<PropertyGroup> <NuGetAuditMode>direct</NuGetAuditMode> </PropertyGroup>