Avisos do NuGet NU1901, NU1902, NU1903, NU1904
aviso NU1902: O pacote 'NuGet.Protocol' 5.11.2 tem uma vulnerabilidade de gravidade moderada conhecida, https://github.com/advisories/GHSA-g3q9-xf95-8hp5
O código de aviso muda conforme o nível de gravidade da vulnerabilidade conhecida:
Código do aviso | Severidade |
---|---|
NU1901 | low |
NU1902 | moderado |
NU1903 | high |
NU1904 | Crítico |
Problema
Um pacote restaurado para seu projeto tem uma vulnerabilidade conhecida.
Para obter mais informações, confira a documentação sobre pacotes de auditoria.
Solução
Temos uma postagem no blog com mais discussões sobre nossas ações recomendadas quando seu projeto usa um pacote com uma vulnerabilidade conhecida e ferramentas que podem ajudar.
A atualização para uma versão mais recente do pacote provavelmente resolverá o aviso.
Se o projeto não fizer referência direta ao pacote (é um pacote transitivo), o dotnet nuget why
poderá ser usado para entender qual pacote fez com que ele fosse incluído no projeto.
Você pode verificar a URL fornecida pelo comunicado de vulnerabilidade para ver quais versões do pacote foram corrigidas ou verificar a(s) origem(ões) do pacote configurado para ver quais versões do pacote estão disponíveis.
A interface do usuário do gerenciador de pacotes do Visual Studio pode exibir quais versões de pacote são afetadas e quais não têm vulnerabilidades conhecidas.
Se esses avisos estiverem causando falha na restauração porque você estiver usando TreatWarningsAsErrors
, você poderá adicionar <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors>
para permitir que esses códigos permaneçam como avisos.
Se você não quiser ser notificado sobre vulnerabilidades menos graves do que um nível com o qual você se sente confortável, pode editar o arquivo de projeto e adicionar uma propriedade MSBuild NuGetAuditLevel
, com o valor definido como low
, moderate
, high
ou critical
.
Por exemplo, <NuGetAuditLevel>high</NuGetAuditLevel>
.
Se você quiser suprimir um aviso específico, adicione um item NuGetAuditSuppress do MSBuild.
Por exemplo, <NuGetAuditSuppress Include="https://github.com/advisories/GHSA-g3q9-xf95-8hp5" />
.
NuGetAuditSuppress
está disponível no VS 17.11 e no SDK do .NET 8.0.400 para projetos que usam o PackageReference
, e no VS 17.12 para projetos que usam o packages.config
.
Se você não quiser que o NuGet verifique se há pacotes com vulnerabilidades conhecidas durante a restauração, adicione <NuGetAudit>false</NuGetAudit>
um no arquivo de <PropertyGroup>
projeto ou um arquivo Directory.Build.props
.
Se você quiser executar a Auditoria do NuGet em computadores de desenvolvedor, mas desabilitá-la em pipelines de CI, poderá aproveitar as variáveis de ambiente de importação do MSBuild e criar uma variável de ambiente NuGetAudit definida como false
em sua definição de pipeline.
No NuGet 6.12 (Visual Studio/MSBuild 17.12 e SDK do .NET 9.0.100), o NuGet alterou o padrão para NuGetAuditMode
, all
o que significa relatar pacotes transitivos com vulnerabilidades conhecidas.
O valor pode ser definido explicitamente como direct
para reverter para o padrão do .NET 8. Como alternativa, a propriedade SdkAnalysisLevel
pode ser definida como 8.0.400
para desabilitar temporariamente todos os novos avisos e erros introduzidos em versões mais recentes do SDK. Especificamente neste caso, o valor padrão de NuGetAuditMode
é alterado de volta para direct
.