Compartilhar via


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 , allo 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.