次の方法で共有


'dotnet restore' は推移的なパッケージを監査します

プロジェクトの依存関係とツールを復元する dotnet restore コマンドによって、推移的なパッケージに対するセキュリティ脆弱性の警告が既定で生成されるようになりました。

以前の動作

.NET 8 では、 NuGetAudit が導入され、既知のセキュリティの脆弱性を持つパッケージの警告が出力されました。 既定では、直接パッケージ参照のみが監査されましたが、 NuGetAuditMode プロパティを変更してすべてのパッケージを含めることができます。

新しい動作

.NET 9 以降では、 NuGetAuditMode 明示的に設定されていない場合は既定で all されます。 この設定は、既知の脆弱性を持つ 推移的パッケージ (プロジェクトが直接参照するパッケージの依存関係) によって警告が報告されることを意味します。 プロジェクトでエラーを警告として扱う場合、この動作によって復元エラーが発生する可能性があります。

導入されたバージョン

.NET 9 Preview 6

破壊的変更の種類

この変更は、動作変更です。

変更理由

既知の脆弱性を持つパッケージは、プロジェクトが脆弱性のあるパッケージを直接参照または使用していない場合でも、アプリが悪用される可能性があります。 .NET 9 の新機能により、パッケージ グラフの調査が容易になり、アプリで脆弱なパッケージがどのように使用されるかとは関係のないアドバイザリを抑制できます。

  • 警告が原因でこの変更によってビルドが破損する可能性を明示的に減らすために、 <TreatWarningsAsErrors> の使用を検討し、 <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors> を使用して、既知のセキュリティ脆弱性が環境内で引き続き許可されるようにすることができます。

  • dotnet nuget whyなどのツールを使用して、既知の脆弱性を持つ推移的なパッケージが含まれる原因となった最上位レベルのパッケージを見つけ、推移的な脆弱性が消えたかどうかを確認するためにアップグレードを試みます。 そうでない場合は、推移的なパッケージを最上位のパッケージに昇格させるために、 PackageReference を追加して、新しいバージョンにアップグレードします。

  • 特定のアドバイザリを抑制する場合は、 <NuGetAuditSuppress Include="url" /> 項目をプロジェクト ファイルに追加できます。ここで、 url は NuGet の警告メッセージで報告される URL です。

    <ItemGroup>
        <NuGetAuditSuppress Include="url" />
    </ItemGroup>
    
  • 既知の脆弱性を持つ直接パッケージ参照についてのみ警告を表示する場合は、 <NuGetAuditMode> をプロジェクト ファイルに direct に設定できます。

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

関連項目