Ataques por Machine Keys en ASP.NET

Las aplicaciones ASP.NET utilizan la clave machineKey para proteger datos sensibles, como el ViewState, que almacena el estado de la página en el cliente y se envía de vuelta al servidor. Esta clave es esencial para garantizar la integridad y confidencialidad de la información intercambiada entre el cliente y el servidor.

Las machineKey en ASP.NET son claves criptográficas utilizadas para garantizar la seguridad de datos sensibles dentro de una aplicación web. Su función principal es proporcionar cifrado y validación de integridad en procesos clave como:

🔹 Autenticación de usuarios (cuando se usa Forms Authentication)

🔹 Protección del ViewState (evita modificaciones maliciosas del estado de la página)

🔹 Cifrado de cookies (protege datos almacenados en las cookies de sesión)

🔹 Hashing de contraseñas (cuando se usa ASP.NET Membership o Identity)


¿Qué son los ataques de inyección de código de ViewState?

ViewState es el método mediante el cual los formularios web ASP.NET conservan el estado de la página y del control entre devoluciones. Los datos de ViewState se almacenan en un campo oculto en la página y se codifican mediante codificación Base64. Para proteger ViewState contra la manipulación y la divulgación de información, el framework de la página ASP.NET utiliza claves de máquina: ValidationKey y DecryptionKey. ValidationKey los cuales se utilizan para crear un código de autenticación de mensajes (MAC) que se adjuntará en ViewState. DecryptionKey está relacionada con la opción de cifrar ViewState. Estas claves se generan automáticamente y se almacenan en el registro o se especifican manualmente en los archivos de configuración.


Si estas claves son robadas o se ponen a disposición de los actores de amenazas, estos actores de amenazas pueden crear un ViewState malicioso utilizando las claves robadas y enviarlo al sitio web a través de una solicitud POST. Cuando ASP.NET Runtime procesa la solicitud en el servidor de destino, el ViewState se descifra y se valida correctamente porque se utilizan las claves correctas. Luego, el código malicioso se carga en la memoria del proceso de trabajo y se ejecuta, lo que proporciona al actor de amenazas capacidades de ejecución remota de código en el servidor web IIS de destino.




Recomendaciones para mitigar riesgos:

  • Generar claves únicas: Asegúrese de que cada instalación de su aplicación genere claves machineKey únicas y aleatorias durante el proceso de instalación.

  • Revisar configuraciones existentes: Verifique las configuraciones actuales de sus aplicaciones ASP.NET para identificar y reemplazar cualquier clave machineKey que no sea única.

  • Mantener sistemas actualizados: Aplique las actualizaciones de seguridad proporcionadas por los proveedores de software para corregir vulnerabilidades conocidas.

  • Monitorear aplicaciones: Implemente herramientas de monitoreo para detectar actividades sospechosas o intentos de explotación relacionados con la deserialización de ViewState.

Al seguir estas prácticas, puede reducir significativamente el riesgo de ataques de inyección de código en aplicaciones ASP.NET y proteger la integridad de sus sistemas. En el link de la fuente, estan las recomendaciones tecnicas de que hacer para poder protegerse ante este tipo de ataques.


Fuente: https://www.microsoft.com/en-us/security/blog/2025/02/06/code-injection-attacks-using-publicly-disclosed-asp-net-machine-keys/

Si te gusta este contenido, no olvides seguirnos en nuestras redes sociales!: