El framework de ataque de robo de credenciales Miasma, que recientemente ha atacado ecosistemas de código abierto mediante ataques a la cadena de suministro, fue publicado brevemente como código abierto en GitHub a través de múltiples cuentas de desarrolladores comprometidas. Según investigadores de SafeDep, los actores de amenazas subieron el código fuente en repositorios llamados 'Miasma-Open-Source-Release' en cada cuenta, lo que sugiere una liberación deliberada en lugar de una filtración accidental.
Miasma parece ser una evolución del gusano Shai-Hulud, cuyo código también se había filtrado anteriormente en GitHub, y comparte muchas de las mismas características, técnicas e incluso fragmentos de código. El malware infecta la máquina de un desarrollador, roba el entorno de compilación y las credenciales en la nube, y luego utiliza esos datos para comprometer repositorios y paquetes legítimos, publicando versiones troyanizadas que infectan a otros desarrolladores, repitiendo el ciclo de propagación.
El análisis del código reveló que el conjunto de herramientas no requiere infraestructura de comando y control (C2) para operar, ya que utiliza GitHub para ese propósito. El framework recolecta credenciales de proveedores de nube, sistemas CI/CD, gestores de contraseñas, Kubernetes y almacenes de secretos, y abusa de ellas para comprometer paquetes npm, PyPI y RubyGems, así como repositorios de GitHub, flujos de trabajo de Actions e instancias de JFrog Artifactory.
Características destacadas del código filtrado
Una de las características interesantes reveladas en el código fuente de Miasma es un 'interruptor de hombre muerto' que se instala cuando el malware utiliza un token de GitHub robado como canal de exfiltración. El componente monitorea la validez del token cada minuto y, si es revocado, ejecuta un comando destructivo (rm -rf ~/; rm -rf ~/Documents) que elimina recursivamente archivos y directorios en las carpetas de inicio y Documentos del usuario. Este monitor se ejecuta como un servicio systemd en Linux o un LaunchAgent en macOS, y permanece activo hasta 72 horas.
Otro aspecto interesante es un proceso de compilación de cinco etapas que genera cargas útiles únicas para cada compilación. SafeDep informa que el proceso combina cifrado AES-256-GCM por archivo de los activos incrustados, ofuscación aleatoria de cadenas, transformaciones de fuente, ofuscación de JavaScript y un cargador autoextraíble que envuelve la carga final en tres capas de cifrado. Claves aleatorias y una capa de codificación externa aleatorizada aseguran que cada muestra generada difiera de compilaciones anteriores, dificultando la detección basada en firmas y el análisis estático.
Miasma se ha vinculado previamente a ataques de alto perfil contra paquetes npm de Red Hat y, más recientemente, a 73 repositorios de Microsoft en GitHub. La filtración del código de Shai-Hulud llevó a la aparición de variantes más avanzadas como Miasma y a un aumento en la tasa de ataques. Se espera que la filtración del código fuente de Miasma tenga un efecto similar, ya que los actores de amenazas adoptarán el código y lo adaptarán aún más, lo que podría tener consecuencias significativas para la seguridad del ecosistema de código abierto.
Se recomienda a los desarrolladores de software fijar las dependencias de los proyectos, introducir retrasos de varios días antes de adoptar nuevas actualizaciones de paquetes y validar las nuevas compilaciones en entornos de prueba aislados.