NuGet 警告 NU1901、NU1902、NU1903、NU1904

warning NU1902: Package 'NuGet.Protocol' 5.11.2 has a known moderate severity vulnerability, https://github.com/advisories/GHSA-g3q9-xf95-8hp5

警告コードは、既知の脆弱性の重大度レベルに応じて変わります。

警告コード 重要度
NU1901 low
NU1902
NU1903 high
NU1904 critical

問題点

プロジェクト用に復元されたパッケージには既知の脆弱性があります。

詳しくは、「パッケージの監査に関するドキュメント」を参照してください。

解決策

パッケージの新しいバージョンにアップグレードすると、警告が解決される可能性があります。 脆弱性アドバイザリによって提供される URL をチェックして、修正されたパッケージのバージョンを確認したり、構成したパッケージ ソースをチェックして、使用可能なパッケージのバージョンを確認することができます。 Visual Studio のパッケージ マネージャー UI では、影響を受けるパッケージのバージョンおよび、既知の脆弱性がないパッケージを表示できます。

使い慣れたレベルよりも深刻度の低い脆弱性の通知を受け取らない場合は、プロジェクト ファイルを編集し、MSBuild プロパティ NuGetAuditLevel を追加し、値を lowmoderatehigh またはcritical に設定します。 たとえば、<NuGetAuditLevel>high</NuGetAuditLevel> のようにします。

TreatWarningsAsErrors を使用しているためにこれらの警告が発生し、復元が失敗する場合は、<WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors> を追加するとこれらのコードを警告に留めることができます。

復元中に、NuGet が既知の脆弱性を持つパッケージをチェックするのを防ぐには、<NuGetAudit>false</NuGetAudit> をプロジェクト ファイル内の <PropertyGroup>、または Directory.Build.props ファイル内に追加します。

Note

NuGetAudit の最初のリリースでは、特定のアドバイザリ (URL) を抑制する方法は提供されていません。 これは、他の機能強化の優先順位付けに基づいて追加する予定の機能です。

軽減策として、適切な NoWarnPackageReference 宣言に追加できます。 たとえば、<PackageReference Include="Contoso.Library" Version="1.0.0" NoWarn="NU1901" /> のようにします。 ただし、これにより、同じ重大度の新しい脆弱性が報告されるのを防ぐことに注意してください。