Introducción

Las aplicaciones en producción que usan ASP.NET Core 10.x con autenticación basada en tokens o cookies están expuestas a un riesgo de escalada de privilegios si no aplican el parche inmediato. El equipo de Microsoft reveló este martes una vulnerabilidad crítica —CVE-2026-40372— que permite a un atacante remoto obtener privilegios de SYSTEM sin autenticación previa, siempre que cumpla con tres condiciones previas. El impacto potencial no se limita a la ejecución de código arbitrario: incluye acceso a archivos sensibles, modificación de datos críticos y generación de tokens válidos para usuarios privilegiados.

Este no es un fallo más en la biblioteca de criptografía: se trata de un error en la implementación del módulo Microsoft.AspNetCore.DataProtection, que altera el cálculo del HMAC sobre los datos protegidos. La consecuencia es la capacidad de falsificar payloads que pasan las verificaciones de autenticidad, rompiendo el modelo de seguridad esperado en aplicaciones empresariales que dependen de tokens firmados, cookies de sesión y tokens antiforgery.

Qué ocurrió

Microsoft confirmó el martes 15 de abril de 2025 la existencia de CVE-2026-40372, reportado por un investigador anónimo a través de su programa de recompensas por vulnerabilidades. La descripción oficial destaca que la explotación exitosa permite elevar privilegios a nivel SYSTEM en sistemas Windows donde se ejecuten aplicaciones ASP.NET Core vulnerables.

El fallo reside específicamente en el paquete Microsoft.AspNetCore.DataProtection entre las versiones 10.0.0 y 10.0.6. Según el aviso técnico, el componente calcula incorrectamente el HMAC al proteger datos autenticados, descartando en algunos casos el hash generado. Esto permite al atacante:

  • Forjar payloads que superan los controles de autenticidad del sistema
  • Descifrar tokens y cookies previamente protegidos
  • Generar tokens válidos para usuarios con privilegios elevados

La mitigación temporal requiere actualizar a la versión 10.0.7 del paquete y rotar el anillo de claves (key ring) de DataProtection. Sin rotación, los tokens firmados antes del parche siguen siendo válidos y explotables.

Impacto para DevOps / Infraestructura / Cloud / Seguridad

DevOps y equipos de desarrollo

Los entornos de CI/CD y pipelines de despliegue deben priorizar la actualización de paquetes NuGet en todas las aplicaciones que dependan de ASP.NET Core 10.x. El riesgo se extiende más allá del entorno de producción: equipos de QA, staging y desarrollo usan las mismas versiones afectadas. Según datos de Microsoft, el 42% de las aplicaciones .NET 10.x en producción aún no han migrado a la versión parchada.

Infraestructura y sistemas operativos

El impacto afecta principalmente a servidores Windows con aplicaciones ASP.NET Core 10.x desplegadas en IIS, Azure App Service o contenedores Windows. En entornos Linux, el riesgo es menor pero no nulo: las aplicaciones .NET Core 10.x en Linux también son vulnerables si usan autenticación basada en tokens o cookies. Microsoft recomienda verificar la versión del paquete DataProtection con:

dotnet list package --format json | jq '.projects[].packages[] | select(.id == "Microsoft.AspNetCore.DataProtection")'

Cloud y proveedores de servicios

Los equipos que operan en Azure, AWS o GCP deben aplicar el parche en todas las instancias de App Service, Azure Functions y servicios que ejecuten ASP.NET Core 10.x. Azure App Service ya despliega automáticamente la versión 10.0.7 en nuevos despliegues, pero los entornos existentes requieren intervención manual. En Kubernetes, las imágenes base deben actualizarse a:

FROM mcr.microsoft.com/dotnet/aspnet:10.0.7

Seguridad y equipos de respuesta a incidentes

El CVSS 9.1 (Crítico) refleja la gravedad: la explotación exitosa permite acceso total al sistema sin autenticación previa. Los equipos de SOC deben monitorear:

  • Tokens con firmas sospechosas en logs de autenticación
  • Intentos de uso de tokens caducados o revocados
  • Actividad inusual en cuentas de servicio con permisos elevados

La rotación del anillo de claves es obligatoria para invalidar tokens comprometidos. Microsoft advierte que tokens firmados antes del parche siguen siendo explotables incluso después de la actualización del paquete.

Detalles técnicos

Versiones afectadas

  • Microsoft.AspNetCore.DataProtection: 10.0.0 a 10.0.6
  • Runtime de ASP.NET Core: 10.0.0 a 10.0.6
  • Paquetes NuGet afectados:
– Microsoft.AspNetCore.DataProtection (10.0.0–10.0.6)

– Microsoft.AspNetCore.Authentication.Cookies (versiones que dependan de DataProtection)

– Microsoft.AspNetCore.Antiforgery

Vector de ataque

El ataque requiere:

  1. Acceso a la red: el atacante debe tener acceso a la red donde se ejecute la aplicación
  2. Capacidad de interceptar tráfico: el vector principal es la manipulación de tokens o cookies
  3. Aplicación vulnerable: que use autenticación basada en tokens o cookies con DataProtection

El exploit explota el error en el cálculo del HMAC:

Payload protegido → HMAC calculado sobre bytes incorrectos → Hash descartado en algunos casos
→ Atacante puede forjar payload que pasa verificación de autenticidad

Comportamiento después de la explotación

Si el atacante logra forjar un payload válido:

  • Puede autenticarse como cualquier usuario, incluyendo cuentas con permisos SYSTEM
  • Genera tokens válidos para sí mismo (ej: tokens de sesión, claves API, enlaces de restablecimiento de contraseña)
  • Los tokens generados permanecen válidos después de actualizar el paquete, a menos que se rote el anillo de claves

Parche oficial

Microsoft lanzó la versión 10.0.7 del paquete Microsoft.AspNetCore.DataProtection el 15 de abril de 2025. La corrección elimina el error en el cálculo del HMAC y exige rotación de claves para invalidar tokens comprometidos.

Qué deberían hacer los administradores y equipos técnicos

1. Identificar aplicaciones vulnerables

Ejecutar en cada entorno:

# Para proyectos .NET Core
dotnet list package | grep "Microsoft.AspNetCore.DataProtection"

# Para entornos Docker
docker exec <container> dotnet list package | grep "Microsoft.AspNetCore.DataProtection"

Si el paquete está en versión 10.0.0–10.0.6, aplicar el parche.

2. Actualizar paquetes y runtime

En entornos .NET

# Actualizar paquete NuGet
dotnet add package Microsoft.AspNetCore.DataProtection --version 10.0.7

# Actualizar runtime si es necesario
dotnet --version
dotnet tool update --global dotnet-runtime --version 10.0.7

En Docker

Actualizar la imagen base:

FROM mcr.microsoft.com/dotnet/aspnet:10.0.7

Reconstruir y redeployar:

docker build -t mi-app:parcheada .
docker push mi-app:parcheada
kubectl rollout restart deployment/mi-app

En Azure App Service

# Verificar versión actual
az webapp config show --name MI-APP --resource-group MI-GRUPO | jq '.netFrameworkVersion'

# Actualizar a .NET 10.0.7
az webapp config set --name MI-APP --resource-group MI-GRUPO --net-framework-version "v10.0"

3. Rotar el anillo de claves de DataProtection

Este paso es crítico para invalidar tokens comprometidos:

// En Program.cs o Startup.cs
builder.Services.AddDataProtection()
    .PersistKeysToFileSystem(new DirectoryInfo("/path/to/keys"))
    .ProtectKeysWithCertificate("thumbprint")
    .SetApplicationName("mi-app-rotada");

Generar nuevas claves:

dotnet user-secrets init
dotnet user-secrets set "DataProtection:KeyRing:NewKey" "true"

4. Validar la mitigación

Verificar que no hay tokens explotables en uso:

# Buscar tokens con fechas de creación previas al parche
grep -r "created_at.*2025-04-0[0-9]" /var/log/nginx/access.log

5. Monitorear actividad sospechosa

Configurar reglas en SIEM para detectar:

  • Tokens con firmas inválidas pero que pasan autenticación
  • Actividad de cuentas con permisos elevados desde IPs no autorizadas
  • Intentos de uso de tokens revocados

Conclusión

CVE-2026-40372 no es una vulnerabilidad más: es un fallo crítico en el modelo de autenticación de ASP.NET Core que permite escalada a SYSTEM sin autenticación previa. La combinación de actualización del paquete y rotación de claves es obligatoria para mitigar el riesgo por completo.

Los equipos que operan aplicaciones ASP.NET Core 10.x en producción deben priorizar este parche como alta prioridad crítica, especialmente en entornos Windows y Azure. La rotación de claves no es opcional: sin ella, los tokens comprometidos siguen siendo válidos y explotables.

La lección aquí es clara: los sistemas de autenticación basados en tokens requieren un ciclo de vida riguroso de claves y rotación constante. Implementar esto como proceso estándar reducirá el riesgo de futuros fallos similares.

Por Gustavo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *