'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.
Ação recomendada
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 umPackageReference
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, ondeurl
é 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>
comodirect
em seu arquivo de projeto.<PropertyGroup> <NuGetAuditMode>direct</NuGetAuditMode> </PropertyGroup>