Предупреждения 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>
, чтобы эти коды оставались предупреждениями.
Если вы не хотите получать уведомления об уязвимостях, которые являются менее серьезными, чем уровень, с которым вы комфортно, можно изменить файл проекта и добавить свойство NuGetAuditLevel
MSBuild с заданным значением low
, moderate
high
или 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
на .