次の方法で共有


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

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

以前の動作

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

.NET 9 プレビュー 6 では、NuGetAuditMode の既定値はすべてのプロジェクトで all に変更され、この変更は .NET 9.0.101 SDK の direct に戻されました。

新しい動作

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

プロジェクトのターゲットが .NET 9 以下の場合、 NuGetAuditMode の既定値は directのままです。

導入されたバージョン

.NET 10 Preview 3

破壊的変更の種類

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

変更の理由

既知の脆弱性を持つパッケージは、プロジェクトが脆弱性のあるパッケージを直接参照または直接使用していない場合でも、アプリが悪用される可能性があります。

  • <TreatWarningsAsErrors>を使用している場合でも、監査警告がエラーとして扱われるのを防ぐには、<WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904;$(WarningsNotAsErrors)</WarningsNotAsErrors>を使用できます。

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

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

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

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

こちらも参照ください