Предупреждения NuGet NU1901, NU1902, NU1903, NU1904

предупреждение NU1902: пакет NuGet.Protocol 5.11.2 имеет известную уязвимость с умеренной серьезностью. https://github.com/advisories/GHSA-g3q9-xf95-8hp5

Код предупреждения изменяется в зависимости от известного уровня серьезности уязвимостей:

Код предупреждения Severity
NU1901 low
NU1902 moderate
NU1903 high
NU1904 critical

Issue

Пакет, восстановленный для проекта, имеет известную уязвимость.

Дополнительные сведения см . в документации по пакетам аудита.

Solution

У нас есть документация по обновлению уязвимых пакетов , которые подробно описывают наши рекомендуемые действия, когда проект использует пакет с известной уязвимостью и средства, которые могут помочь.

Обновление до более новой версии пакета, скорее всего, устраняет предупреждение. Если проект напрямую не ссылается на пакет (это транзитивный пакет), dotnet nuget why можно понять, какой пакет вызвал его включение в проект. Вы можете проверить URL-адрес, предоставленный рекомендацией по уязвимостям, чтобы узнать, какие версии пакета были исправлены, или проверить настроенные исходные версии пакета, чтобы узнать, какие версии пакета доступны. Пользовательский интерфейс диспетчера пакетов Visual Studio может показать, какие версии пакетов затронуты и которые не имеют известных уязвимостей.

Если эти предупреждения вызывают сбой восстановления, так как используется TreatWarningsAsErrors, можно добавить <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors> , чтобы эти коды оставались предупреждениями.

Если вы не хотите получать уведомления об уязвимостях, которые являются менее серьезными, чем уровень, с которым вы комфортно, можно изменить файл проекта и добавить свойство NuGetAuditLevelMSBuild с заданным значением low, moderatehighили critical. Например, <NuGetAuditLevel>high</NuGetAuditLevel>.

Если вы хотите отключить определенные рекомендации, добавьте элемент NuGetAuditSuppress MSBuild. Например, <NuGetAuditSuppress Include="https://github.com/advisories/GHSA-g3q9-xf95-8hp5" />. NuGetAuditSuppressдоступен из пакета SDK VS 17.11 и .NET 8.0.400 для проектов, использующих PackageReferenceи из VS 17.12 для проектов.packages.config

Если вы не хотите, чтобы NuGet проверял наличие пакетов с известными уязвимостями во время восстановления, добавьте <NuGetAudit>false</NuGetAudit> в <PropertyGroup> файл проекта или Directory.Build.props файл. Если вы хотите запустить аудит NuGet на компьютерах разработчиков, но отключить его в конвейерах CI, вы можете воспользоваться преимуществами переменных среды импорта MSBuild и создать переменную среды NuGetAudit, заданную false в определении конвейера.

Для проектов, предназначенных для платформы .NET 10, используется NuGetAuditModeпараметр all по умолчанию. Это означает, что NuGet будет сообщать о транзитивных пакетах с известными уязвимостями для всех платформ в проекте. Значение может быть явно задано, чтобы direct вернуться к умолчанию .NET 9.