'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.
Ação recomendada
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 umPackageReference
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, ondeurl
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 dedirect
projeto.<PropertyGroup> <NuGetAuditMode>direct</NuGetAuditMode> </PropertyGroup>