Udostępnij za pośrednictwem


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.

  • 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ąc PackageReference 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, gdzie url 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> na direct w pliku projektu.

    <PropertyGroup>
      <NuGetAuditMode>direct</NuGetAuditMode>
    </PropertyGroup>
    

Zobacz też