Compartilhar 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 as referências diretas de pacotes eram auditadas, no entanto, era possível alterar a NuGetAuditMode propriedade para incluir todos os pacotes.

Novo comportamento

A partir do .NET 9, NuGetAuditMode o all padrão é se ele não tiver sido definido explicitamente. Essa configuração significa que pacotes transitivos (dependências de pacotes aos quais seu projeto faz referência direta) com vulnerabilidades conhecidas agora fazem com que avisos sejam relatados. Se o projeto tratar erros como avisos, esse comportamento poderá causar falhas de restauração.

Versão introduzida

.NET 9 Preview 6

Tipo de alteração interruptiva

Esta é uma alteração comportamental.

Motivo da 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 grafo 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 interromper seu build 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 encontrar o pacote de nível superior que fez com que o pacote transitivo com a vulnerabilidade conhecida fosse incluído 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 você quiser suprimir um comunicado específico, poderá adicionar <NuGetAuditSuppress Include="url" /> um item ao arquivo de projeto, onde url está a URL relatada na mensagem de aviso do NuGet.

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

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

Confira também