Analistas de seguridad de Tier Zero Security advirtieron esta semana que la integración entre NuGet, Visual Studio y MSBuild genera una superficie de ataque significativa, permitiendo la ejecución de código incluso antes de que un proyecto sea compilado. La investigación de la firma destaca cómo la naturaleza automatizada de las canalizaciones de CI/CD puede ser utilizada como arma para comprometer los entornos de desarrollo.
Las canalizaciones modernas de CI/CD automatizan tareas rutinarias como las pruebas unitarias y el despliegue mediante la ejecución de scripts cada vez que se confirma código. Aunque esto mejora la velocidad de desarrollo, estas canalizaciones suelen albergar credenciales sensibles, como cadenas de conexión a bases de datos y claves de publicación. Tier Zero Security señala que el diseño del ecosistema .NET —específicamente la forma en que NuGet interactúa con MSBuild— permite la inclusión de objetivos de compilación personalizados que pueden activar ejecuciones desde la línea de comandos.
Según la firma, los paquetes NuGet pueden contener archivos `.targets` o `.props` que MSBuild interpreta durante la fase de restauración del proyecto. Estos archivos pueden utilizar la tarea `exec` de MSBuild, diseñada para ejecutar programas o comandos específicos. Dado que estas operaciones ocurren al inicio de la canalización, el código malicioso puede ejecutarse antes de que las dependencias sean validadas por completo.
Zonas de confianza y la brecha de la 'Marca de la Web'
Los investigadores también analizaron el control de seguridad 'Mark of the Web' (MoTW) de Microsoft, diseñado para advertir a los usuarios cuando abren archivos descargados de internet. Aunque Visual Studio utiliza 'Zonas de Confianza' para proteger a los desarrolladores de macros o ejecutables maliciosos, Tier Zero Security descubrió que estas protecciones suelen ser eludidas al clonar repositorios de código directamente.
Cuando la firma informó sobre este comportamiento al Centro de Respuesta de Seguridad de Microsoft (MSRC), la compañía declinó tratarlo como una vulnerabilidad inmediata. Microsoft afirmó que los proyectos de Visual Studio están diseñados intencionalmente para admitir múltiples rutas de ejecución de código, señalando que abrir o clonar un proyecto es una acción iniciada por el usuario que puede implicar la evaluación de objetivos de compilación.
Esta no es la primera vez que surge este riesgo arquitectónico. Tier Zero Security informó que el problema fue planteado al equipo de NuGet desde 2020. En aquel momento, el equipo respondió: "Creo que romperíamos muchos paquetes, herramientas, etc., que dependen en gran medida de esta funcionalidad sin tener una alternativa".
La firma advierte que, a medida que los ataques a la cadena de suministro —como el reciente incidente de LiteLLM, donde se robaron credenciales de publicación a través de un escáner ascendente comprometido— se vuelven más frecuentes, los desarrolladores deben permanecer vigilantes ante las rutas ocultas de ejecución de código inherentes a sus herramientas de compilación.