NETSDK1238: O SDK de .NET atual tem vulnerabilidades conhecidas

Esse aviso indica que o SDK do .NET usado para compilar seu projeto tem um ou mais CVEs (Vulnerabilidades e Exposições Comuns) conhecidos. A mensagem de aviso completa é semelhante ao exemplo a seguir:

NETSDK1238: O SDK de .NET atual (<version>) tem vulnerabilidades conhecidas (lista <CVE>). Atualize para a versão <versão>. Consulte https://dotnet.microsoft.com/download

Para resolver o aviso, instale um SDK de .NET corrigido de https://dotnet.microsoft.com/download e atualize o global.json (se estiver presente) para selecionar a nova versão.

Como a verificação funciona

A verificação é aceita e só é executada quando a propriedade CheckSdkVulnerabilities MSBuild é definida como true:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <CheckSdkVulnerabilities>true</CheckSdkVulnerabilities>
  </PropertyGroup>
</Project>

Você também pode passar /p:CheckSdkVulnerabilities=true para um comando da CLI .NET, como dotnet build.

Por padrão, a CLI do .NET atualiza um cache local de metadados de versão do SDK em segundo plano no máximo uma vez a cada 24 horas em ~/.dotnet/sdk-vulnerability-cache/. Para alterar esse intervalo, defina DOTNET_SDK_VULNERABILITY_CHECK_INTERVAL_HOURS. A verificação do MSBuild lê somente esse cache; ele não faz chamadas de rede durante o build. Em computadores que nunca tiveram acesso à rede, nenhum aviso é emitido.

Suprimir o aviso

Para suprimir o aviso sem atualizar o SDK:

  • Adicionar NETSDK1238 a NoWarn:

    <NoWarn>$(NoWarn);NETSDK1238</NoWarn>
    
  • Defina CheckSdkVulnerabilities como false (o padrão) para desativar NETSDK1238, NETSDK1239 e NETSDK1240.

  • Defina a variável de ambiente DOTNET_SDK_VULNERABILITY_CHECK_DISABLE como true para desabilitar tanto a atualização do cache quanto a verificação em tempo de compilação.

Consulte também