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


"dotnet restore" выполняет аудит транзитивных пакетов

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

Прежнее поведение

В .NET 8 в NuGetAudit было введено предупреждение для пакетов с известными уязвимостями безопасности. По умолчанию были проверены только прямые ссылки на пакеты, однако можно было изменить NuGetAuditMode свойство, чтобы включить все пакеты.

Новое поведение

Начиная с .NET 9, NuGetAuditMode по умолчанию используется all значение, если оно не было явно задано. Этот параметр означает, что транзитивные пакеты (зависимости пакетов проекта напрямую ссылаться) с известными уязвимостями теперь вызывают предупреждения. Если проект обрабатывает предупреждения как ошибки, это поведение может привести к сбоям восстановления.

Представленные версии

.NET 9( предварительная версия 6)

Тип критического изменения

Это изменение поведения.

Причина изменения

Пакеты с известными уязвимостями могут привести к эксплойтируемому приложению, даже если проект не ссылается напрямую или не использует уязвимый пакет. Новые функции в .NET 9 также упрощают изучение графа пакетов и подавление помощников, которые не относятся к тому, как приложение использует уязвимый пакет.

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

  • Используйте такие средства, как dotnet nuget why поиск пакета верхнего уровня, вызвавшего транзитивный пакет с известной уязвимостью, которая будет включена, и попробуйте обновить его, чтобы узнать, исчезнет ли транзитивная уязвимость. В противном случае добавьте для него транзитивный пакет, добавив PackageReference его и обновив его до более новой версии.

  • Если вы хотите отключить определенные рекомендации, вы можете добавить <NuGetAuditSuppress Include="url" /> элемент в файл проекта, где url указан URL-адрес, указанный в сообщении об предупреждении NuGet.

    <ItemGroup>
        <NuGetAuditSuppress Include="url" />
    </ItemGroup>
    
  • Если вы хотите предупреждать только о прямых ссылках на пакеты с известными уязвимостями, вы можете задать <NuGetAuditMode> значение direct в файле проекта.

    <PropertyGroup>
      <NuGetAuditMode>direct</NuGetAuditMode>
    </PropertyGroup>
    

См. также