Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Команда dotnet restore
, которая восстанавливает зависимости проекта, теперь создает предупреждения об уязвимостях безопасности для транзитивных пакетов по умолчанию, когда проект предназначен для .NET 10 или более поздней версии.
Предыдущее поведение
NuGetAudit появился в .NET 8, чтобы выдавать предупреждения для пакетов с известными уязвимостями безопасности.
По умолчанию были проверены только прямые ссылки на пакеты, однако можно было изменить NuGetAuditMode
свойство, чтобы включить все пакеты.
В предварительной версии .NET 9 6, значение по умолчанию NuGetAuditMode изменилось на all
для всех проектов, и это изменение было возвращено обратно на direct
в SDK .NET 9.0.101.
Новое поведение
Если проекты предназначены для .NET 10 или более поздней версии, по умолчанию NuGetAuditMode
принимает значение all
, если оно не было явно задано.
Этот параметр означает, что транзитивные пакеты (зависимости пакетов, на которые ваш проект напрямую ссылается) с известными уязвимостями теперь вызывают предупреждения.
Если проект обрабатывает предупреждения как ошибки, это поведение может привести к сбоям восстановления.
Если проект предназначен для .NET 9 или ниже, значение по умолчанию остается NuGetAuditMode
direct
.
Представленная версия
.NET 10 (предварительная версия 3)
Тип разрушающего изменения
Причина изменения
Пакеты с известными уязвимостями могут сделать ваше приложение уязвимым для атак, даже если ваш проект не ссылается или не использует напрямую уязвимый пакет.
Рекомендуемое действие
Чтобы предотвратить обработку предупреждений аудита как ошибок, даже при использовании
<TreatWarningsAsErrors>
, можно использовать<WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904;$(WarningsNotAsErrors)</WarningsNotAsErrors>
.Используйте такие инструменты, как
dotnet nuget why
, чтобы найти пакет верхнего уровня, из-за которого был включен транзитивный пакет с известной уязвимостью, и попробуйте обновить его, чтобы выяснить, исчезнет ли транзитивная уязвимость. В противном случае продвигайте транзитивный пакет на верхний уровень пакетов, добавив для негоPackageReference
, и обновите его до более новой версии.Если вы хотите отключить определенные рекомендации, вы можете добавить
<NuGetAuditSuppress Include="url" />
элемент в файл проекта, гдеurl
указан URL-адрес, указанный в сообщении об предупреждении NuGet.<ItemGroup> <NuGetAuditSuppress Include="url" /> </ItemGroup>
Если вы хотите получать предупреждения только о прямых ссылках на пакеты с известными уязвимостями, вы можете установить
<NuGetAuditMode>
вdirect
в вашем файле проекта.<PropertyGroup> <NuGetAuditMode>direct</NuGetAuditMode> </PropertyGroup>