Поделиться через


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

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

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

Код предупреждения Важность
NU1901 Низкий
NU1902 умеренный
NU1903 high
NU1904 критический

Проблема

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

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

Решение

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

Обновление до более новой версии пакета, скорее всего, устраняет предупреждение. Если проект напрямую не ссылается на пакет (это транзитивный пакет), 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 в определении конвейера.

В 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на .