Nueva vulnerabilidad de día cero en Visual Studio sin parche podría significa un caos para los desarrolladores

En el panorama siempre evolutivo de la ciberseguridad, asegurar los entornos de desarrollo se ha transformado en un tema de preocupación primordial, especialmente dada la omnipresencia del software en las infraestructuras sociales modernas. Un reciente aumento de las preocupaciones sobre la seguridad del IDE Visual Studio de Microsoft, amplificado por la liberación de un exploit potencialmente pernicioso de un solo clic, subraya la criticidad de la integridad de las herramientas para salvaguardar los procesos de desarrollo de software.

El explora una nueva técnica de explotación para proyectos de Visual Studio, enfocándose particularmente en los archivos .sln. El concepto de usar proyectos de código para ataques de phishing no es nuevo. Por ejemplo, a principios de 2021, el grupo APT Lazarus utilizó una técnica en la que incrustaron comandos de eventos maliciosos dentro de los archivos de proyecto de Visual Studio, lo que permitió la ejecución de código perjudicial durante la compilación del proyecto. Este incidente resaltó las preocupaciones de seguridad relacionadas con Visual Studio y otros IDEs como los de JetBrains y VSCode, que también tienen vulnerabilidades al abrir proyectos inseguros. Estos productos han introducido mecanismos de zona de confianza para deshabilitar ciertas funcionalidades riesgosas en entornos no confiables para proteger a los usuarios. El exploit, ideado por el respetado investigador principal de seguridad Zhiniang Peng de Sangfor, arroja luz sobre las posibles vulnerabilidades dentro de la función “ubicaciones de confianza” de Visual Studio, una medida de seguridad instituida después del notorio ataque del grupo Lazarus en 2021.

Esta función, mientras es una notable contramedida contra el uso de proyectos de Visual Studio para maliciosas empresas de ejecución de código remoto (RCE), sorprendentemente no está activada por defecto, dejando así a una serie de desarrolladores insospechadamente susceptibles a amenazas. El exploit opera con una simplicidad engañosa: se descarga un proyecto aparentemente inofensivo, albergando secretamente un archivo binario .suo malicioso dentro. El archivo, auto-generado subrepticiamente en una carpeta .vs al abrir el proyecto, pivota para convertirse en el epicentro del ataque, explotando la naturaleza clandestina de las carpetas/archivos que comienzan con un punto.

TÉCNICA DE EXPLOTACIÓN

El repositorio presenta una nueva técnica de explotación para proyectos de Visual Studio y proporciona una prueba de concepto. La intención es crear conciencia sobre los riesgos potenciales involucrados y empoderar a las personas para evitar ser hackeadas. La técnica de explotación gira en torno a los archivos de proyecto .sln o .csproj. Cuando se abre un proyecto, Visual Studio genera automáticamente una carpeta .vs en el directorio raíz del proyecto, que contiene un archivo binario especial llamado .suo. Según la documentación de Visual Studio, cuando el entorno abre un archivo .suo, enumera todos los VSPackages actualmente cargados. Si un VSPackage implementa la interfaz IVsPersistSolutionOpts, entonces el entorno llama al método LoadUserOptions en el VSPackage, pidiéndole que cargue todos sus datos del archivo.

PRUEBA DE CONCEPTO

La prueba de concepto implica el uso de ysoserial.net para generar una carga útil e intentar escribirla en el archivo .suo. Al abrir el proyecto en Visual Studio, el archivo .suo malicioso se cargará automáticamente y desencadenará la ejecución de código arbitrario en memoria. El repositorio proporciona una estructura de proyecto maligna de muestra de la siguiente manera:

$ tree -a
├── App1
│ └── Form1.cs
├── App1.sln
└── .vs
└── App1
└── v17
└── .suo
A pesar del riesgo evidente, Microsoft no considera esto un problema de seguridad. La respuesta oficial de Microsoft establece: “Abrir un proyecto de Visual Studio es una operación insegura”, alineándose con la respuesta proporcionada en el blog de Outflank. Por lo tanto, este exploit no será corregido. Sin embargo, los autores del repositorio creen que hay más archivos no divulgados que se cargan automáticamente cuando se abre un proyecto, y simplemente abrir dicho proyecto es suficiente para comprometer su máquina.

Pasos Protectores en la Navegación del Paisaje de Explotación:

  1. Habilitar Ubicaciones de Confianza: Alineado con las percepciones del relato de Microsoft, “Mejorando la seguridad del desarrollador con Visual Studio 2022“, es imperativo activar las ubicaciones de confianza, asegurando que el contenido dentro de Visual Studio 2022 se considere no confiable a menos que se añada explícitamente a la lista de ‘ubicaciones de confianza’.
  2. Manejo de Proyectos con Vigilancia: Los desarrolladores deben adoptar un escepticismo inherente hacia proyectos desconocidos. Abrir dichas entidades dentro de Visual Studio, o de hecho cualquier entorno de desarrollo, navega por un camino cargado de riesgos inherentes de ciberseguridad.

Al extender el diálogo a la comunidad de ciberseguridad, es crucial reconocer las implicaciones más amplias y las posibles adaptaciones de este exploit en otros entornos de desarrollo. Los IDE de JetBrains, VSCode, y varios editores de texto, aunque despliegan sus propios conjuntos de mecanismos

de zona de confianza, no son innatamente impervios a las vulnerabilidades, especialmente al gestionar proyectos no verificados. Aquí yace un llamado implícito a la acción para los profesionales del desarrollo de software y la ciberseguridad por igual: una postura unificada y proactiva hacia el mejoramiento de los mecanismos de seguridad intrínsecos de las herramientas de desarrollo, en un esfuerzo por salvaguardar la integridad de las infraestructuras digitales globales. Además, fomentar un entorno que prospere en el compartir colectivo del conocimiento y la alerta a vectores de amenaza potenciales es crucial para navegar a través de los multifacéticos desafíos de ciberseguridad de nuestra era digital.

Colectivamente, debemos embarcarnos en un camino de vigilancia estratégica, asegurando que nuestras herramientas de creación digital no solo sean funcionalmente robustas, sino también fortificadas contra la miríada de amenazas de ciberseguridad que persisten en las sombras digitales.