Partilhar via


'dotnet restore' audita pacotes transitivos

O dotnet restore comando, que restaura as dependências e ferramentas de um projeto, agora produz avisos de vulnerabilidade de segurança para pacotes transitivos por padrão.

Comportamento anterior

No .NET 8, o NuGetAudit foi introduzido para emitir avisos para pacotes com vulnerabilidades de segurança conhecidas. Por padrão, apenas referências diretas de pacotes foram auditadas, no entanto, foi possível alterar a NuGetAuditMode propriedade para incluir todos os pacotes.

Novo comportamento

A partir do .NET 9, NuGetAuditMode o all padrão será se ele não tiver sido definido explicitamente. Essa configuração significa que pacotes transitivos (dependências de pacotes que seu projeto referencia diretamente) com vulnerabilidades conhecidas agora fazem com que avisos sejam relatados. Se o seu projeto trata erros como avisos, esse comportamento pode causar falhas de restauração.

Versão introduzida

.NET 9 Visualização 6

Tipo de mudança de rutura

Esta mudança é uma mudança comportamental.

Razão para a alteração

Pacotes com vulnerabilidades conhecidas podem fazer com que seu aplicativo seja explorável, mesmo que seu projeto não faça referência ou use diretamente o pacote vulnerável. Os novos recursos do .NET 9 também facilitam a investigação do gráfico de pacotes e a supressão de avisos que não são relevantes para a forma como seu aplicativo usa o pacote vulnerável.

  • Para reduzir explicitamente a probabilidade de essa alteração quebrar sua compilação devido a avisos, você pode considerar seu uso <TreatWarningsAsErrors> e uso <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors> para garantir que vulnerabilidades de segurança conhecidas ainda sejam permitidas em seu ambiente.

  • Use ferramentas como dotnet nuget why para localizar o pacote de nível superior que causou a inclusão do pacote transitivo com a vulnerabilidade conhecida e tente atualizá-lo para ver se a vulnerabilidade transitiva desaparece. Caso contrário, promova o pacote transitivo para um pacote de nível superior adicionando um PackageReference para ele e atualize-o para uma versão mais recente.

  • Se quiser suprimir um aviso específico, você pode adicionar <NuGetAuditSuppress Include="url" /> um item ao seu arquivo de projeto, onde url é a URL relatada na mensagem de aviso do NuGet.

    <ItemGroup>
        <NuGetAuditSuppress Include="url" />
    </ItemGroup>
    
  • Se você quiser ser avisado apenas de referências diretas de pacotes com vulnerabilidades conhecidas, você pode definir <NuGetAuditMode> como direct em seu arquivo de projeto.

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

Consulte também