Malware A partir de Deserialización Insegura en Visual Studio

Malware a partir de deserialización insegura en archivos .suo de Visual Studio

Fecha: 31 de mayo de 2025

Tiempo estimado de lectura: 7 minutos | Dificultad técnica: Intermedia

Conclusiones clave

  • Los archivos .suo de Visual Studio pueden ser vectores de ataque al permitir la deserialización insegura.
  • Proyectos de Visual Studio pueden ejecutar código malicioso automáticamente al abrir soluciones.
  • La utilización de BinaryFormatter en la carga de .suo facilita la ejecución de payloads maliciosos.
  • Es crucial que los desarrolladores tomen precauciones al abrir proyectos de fuentes no confiables.

Tabla de contenido

Introducción

Los vectores de ataque que no son fácilmente discernibles a menudo constituyen las amenazas más ingeniosas y perjudiciales. Un caso particularmente revelador es el proyecto EvilSln, disponible en GitHub, que aprovecha la deserialización insegura en los archivos .suo de Visual Studio para inyectar un backdoor que se activa de manera automática al abrir una solución.

Campañas anteriores, como la del grupo Lazarus en 2021, ya habían demostrado que era posible que proyectos de Visual Studio ejecutaran código malicioso durante la fase de compilación mediante comandos maliciosos. Sin embargo, esas metodologías requerían algún tipo de interacción por parte del usuario, como compilar el proyecto.

Proceso de Explotación en Detalle

El perpetrador crea un payload serializado malicioso, por ejemplo, un objeto que, al invocarse durante la deserialización o en su constructor, ejecuta programas como calc.exe o comandos en PowerShell. Este payload se inyecta en el Stream correspondiente dentro del archivo .suo. Posteriormente, el .suo se distribuye junto con un proyecto legítimo a través de plataformas como GitHub, redes sociales o mediante técnicas de phishing.

Cuando se accede a la solución, Visual Studio deserializa automáticamente el archivo .suo sin mostrar alertas y ejecuta el payload en memoria. Esta ejecución se realiza sin necesidad de compilación o interacción adicional, y no se presenta ninguna advertencia de Smartscreen ni se requiere la validación de confianza.

Estructura Mínima del Proyecto Malicioso

/App1
  /Form1.cs
  /App1.sln
  /.vs/App1/v17/.suo  <-- payload inyectado aquí (el stream específico contiene el objeto serializado malicioso)
    

Recomendaciones de Seguridad

  • Evitar abrir proyectos de orígenes no confiables o desconocidos.
  • Revisar la configuración de Visual Studio para habilitar manualmente las «trusted locations» y otras protecciones (ya que por defecto están desactivadas).
  • Utilizar herramientas que permitan la inspección de archivos .suo y otros archivos binarios relacionados con soluciones.
  • Considerar la posibilidad de abrir proyectos en entornos aislados o máquinas virtuales para mitigar riesgos.

Preguntas Frecuentes

¿Qué es un archivo .suo?
El archivo .suo (Solution User Options) guarda configuraciones del usuario, estados de ventanas y otros metadatos en un formato de almacenamiento estructurado binario que está poco documentado.

¿Cómo puedo protegerme de este tipo de ataques?
Es importante conocer la fuente de los proyectos que se abren y utilizar configuraciones de seguridad en Visual Studio.

Referencias

  • GitHub: Plataforma donde se puede encontrar el proyecto EvilSln.
  • OWASP: Open Web Application Security Project, proporciona información sobre vulnerabilidades de seguridad.
Avatar

Por Mid