次の方法で共有


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 を追加し、値を lowmoderatehigh または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 の既定値に戻すことができます。 または、 プロパティ SdkAnalysisLevel8.0.400 に設定して、新しいバージョンの SDK で導入されたすべての新しい警告とエラーを一時的に無効にすることもできます。 具体的には、 NuGetAuditMode の既定値が directに戻されます。