NETSDK1238: el SDK de .NET actual tiene vulnerabilidades conocidas

Esta advertencia indica que el SDK de .NET usado para compilar el proyecto tiene una o varias vulnerabilidades comunes conocidas y exposiciones (CVE). El mensaje de advertencia completo es similar al ejemplo siguiente:

NETSDK1238: el SDK de .NET actual (<version>) tiene vulnerabilidades conocidas (<CVE list>). Actualice a la versión <versión>. Vea https://dotnet.microsoft.com/download.

Para resolver la advertencia, instale un SDK de .NET revisado desde https://dotnet.microsoft.com/download y actualice la global.json (si existe) para seleccionar la nueva versión.

Cómo funciona la comprobación

La comprobación es opcional y solo se ejecuta cuando la propiedad de MSBuild CheckSdkVulnerabilities se establece en true:

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

También puede pasar /p:CheckSdkVulnerabilities=true a un comando de la CLI de .NET, como dotnet build.

De forma predeterminada, la CLI de .NET actualiza una caché local de metadatos de versión del SDK en segundo plano como máximo cada 24 horas en ~/.dotnet/sdk-vulnerability-cache/. Para cambiar ese intervalo, establezca DOTNET_SDK_VULNERABILITY_CHECK_INTERVAL_HOURS. La comprobación de MSBuild solo lee esa memoria caché; no realiza llamadas de red durante la compilación. En las máquinas que nunca han tenido acceso a la red, no se emite ninguna advertencia.

Supresión de la advertencia

Para suprimir la advertencia sin actualizar el SDK:

  • Agregue NETSDK1238 a NoWarn:

    <NoWarn>$(NoWarn);NETSDK1238</NoWarn>
    
  • Establezca CheckSdkVulnerabilities en false (valor predeterminado) para desactivar NETSDK1238, NETSDK1239 y NETSDK1240.

  • Establezca la DOTNET_SDK_VULNERABILITY_CHECK_DISABLE variable de entorno en true para deshabilitar la actualización de caché y la comprobación en tiempo de compilación.

Consulte también