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" /> 」のように指定します。

復元中に、NuGet が既知の脆弱性を持つパッケージをチェックするのを防ぐには、<NuGetAudit>false</NuGetAudit> をプロジェクト ファイル内の <PropertyGroup>、または Directory.Build.props ファイル内に追加します。 開発者マシンで NuGet 監査を実行しても CI パイプラインで無効にする場合、MSBuild インポート環境変数を活用し、パイプライン定義で false に設定された NuGetAudit 環境変数を作成できます。

Note

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

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