NuGet 警告 NU1901、NU1902、NU1903、NU1904
警告 NU1902: パッケージ「NuGet.Protocol」 5.11.2 には、既知で中程度の重大度の脆弱性、https://github.com/advisories/GHSA-g3q9-xf95-8hp5 があります
警告コードは、既知の脆弱性の重大度レベルに応じて変わります。
警告コード | 重要度 |
---|---|
NU1901 | low |
NU1902 | 中 |
NU1903 | high |
NU1904 | critical |
問題点
プロジェクト用に復元されたパッケージには既知の脆弱性があります。
詳しくは、「パッケージの監査に関するドキュメント」を参照してください。
解決策
プロジェクトに既知の脆弱性を持つパッケージを使用する際に推奨されるアクションに加え、約立つツールについて、より多くのディスカッションを含む「ブログ投稿」があります。
パッケージの新しいバージョンにアップグレードすると、警告が解決される可能性があります。
プロジェクトがパッケージを直接参照していない場合 (推移的なパッケージ)、dotnet nuget why
を使用してプロジェクトに含まれる原因となったパッケージについて理解できます。
脆弱性アドバイザリによって提供される URL をチェックして、修正されたパッケージのバージョンを確認したり、構成したパッケージ ソースをチェックして、使用可能なパッケージのバージョンを確認することができます。
Visual Studio のパッケージ マネージャー UI では、影響を受けるパッケージのバージョンおよび、既知の脆弱性がないパッケージを表示できます。
TreatWarningsAsErrors
を使用しているためにこれらの警告が発生し、復元が失敗する場合は、<WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors>
を追加するとこれらのコードを警告に留めることができます。
使い慣れたレベルよりも深刻度の低い脆弱性の通知を受け取らない場合は、プロジェクト ファイルを編集し、MSBuild プロパティ NuGetAuditLevel
を追加し、値を low
、moderate
、high
またはcritical
に設定します。
たとえば、<NuGetAuditLevel>high</NuGetAuditLevel>
のようにします。
特定のアドバイザリを抑制する場合、MSBuild NuGetAuditSuppress 項目を追加します。
たとえば、「 <NuGetAuditSuppress Include="https://github.com/advisories/GHSA-g3q9-xf95-8hp5" />
」のように指定します。
NuGetAuditSuppress
は、VS 17.11 および .NET 8.0.400 SDK 以降の PackageReference
を使用するプロジェクトと VS 17.12 以降の packages.config
を使用するプロジェクトで利用できます。
復元中に、NuGet が既知の脆弱性を持つパッケージをチェックするのを防ぐには、<NuGetAudit>false</NuGetAudit>
をプロジェクト ファイル内の <PropertyGroup>
、または Directory.Build.props
ファイル内に追加します。
開発者マシンで NuGet 監査を実行しても CI パイプラインで無効にする場合、MSBuild インポート環境変数を活用し、パイプライン定義で false
に設定された NuGetAudit 環境変数を作成できます。
NuGet 6.12 (Visual Studio/MSBuild 17.12 および .NET 9.0.100 SDK) では、NuGet は NuGetAuditMode
の既定値を all
に変更しました。これは、既知の脆弱性を持つ推移的なパッケージに関するレポートを意味します。
値を明示的に direct
に設定して、.NET 8 の既定値に戻すことができます。 または、 プロパティ SdkAnalysisLevel
を 8.0.400
に設定して、新しいバージョンの SDK で導入されたすべての新しい警告とエラーを一時的に無効にすることもできます。 具体的には、 NuGetAuditMode
の既定値が direct
に戻されます。