Investigadores de seguridad de varias empresas han detectado una nueva oleada de ataques a la cadena de suministro, vinculada a la familia de malware Mini Shai-Hulud, Miasma y Hades. Se han visto comprometidos al menos 23 paquetes npm de los ecosistemas LeoPlatform y RStreams, así como el módulo Go del proyecto Verana Blockchain. La campaña está orientada al robo de credenciales de desarrolladores y mantenedores, con la posterior propagación a través de registros de paquetes, repositorios de GitHub y pipelines de CI/CD. Las organizaciones que utilicen dichos paquetes en cargas de trabajo en la nube y serverless deben comprobar de inmediato las versiones de sus dependencias y rotar todos los tokens potencialmente comprometidos.
Paquetes afectados y alcance del compromiso
Según datos de Socket, en la nueva oleada de ataques se han visto afectados los siguientes paquetes npm, con las versiones concretas troyanizadas:
- [email protected], [email protected]
- [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]
- [email protected], [email protected], [email protected], [email protected], [email protected]
- [email protected], [email protected], [email protected], [email protected]
- [email protected], [email protected], [email protected]
- [email protected], [email protected], [email protected]
- Módulo Go: github.com/verana-labs/[email protected]
Tal como informa StepSecurity, se presume que los atacantes comprometieron la cuenta npm del mantenedor de LeoPlatform y usaron su token para publicar las versiones troyanizadas durante una ventana de seis segundos, lo que evidencia un alto grado de automatización del proceso.
Anatomía técnica del ataque
Los paquetes npm maliciosos emplean un enfoque no estándar para la ejecución de código durante la instalación. En lugar de los típicos hooks del ciclo de vida definidos en package.json, utilizan el archivo binding.gyp, un mecanismo de compilación de módulos nativos de Node.js que permite ejecutar código arbitrario en el momento de la instalación del paquete. Esta técnica permite eludir herramientas de análisis estático centradas en la inspección de la sección scripts de package.json.
La cadena de infección es la siguiente:
- binding.gyp lanza un loader JavaScript durante la instalación del paquete
- El loader comprueba la presencia del runtime Bun y lo instala si no está disponible
- Se ejecuta la carga útil principal, un stealer que recopila secretos, credenciales y tokens
- El malware inyecta en GitHub Actions un flujo de trabajo llamado «Run Copilot», que extrae secretos del entorno CI/CD desde la memoria del runner
- Los datos recopilados se cifran y se exfiltran hacia repositorios públicos de GitHub
Según los investigadores, el malware incorpora un mecanismo de desactivación para sistemas con configuración regional rusa (el llamado killswitch) y comprueba la presencia de soluciones de protección de endpoints antes de ejecutar la carga útil principal.
Indicadores de compromiso
Los investigadores han identificado varias cadenas de texto características utilizadas en la campaña:
- «Alright Lets See If This Works»: descripción de los repositorios de GitHub usados como puntos de volcado de los datos robados. En el momento de la publicación del estudio, 559 repositorios coincidían con esta descripción
- «RevokeAndItGoesKaboom»: marcador actual de retransmisión de tokens, que ha sustituido al previamente utilizado «IfYouInvalidateThisTokenItWillNukeTheComputerOfTheOwner»
- «firedalazer»: cadena presente en commits de GitHub, mediante la cual el malware consulta la plataforma cada hora para obtener y ejecutar una variante de Hades
Relación con la compromisión de codfish/semantic-release-action
El marcador «RevokeAndItGoesKaboom» vincula esta campaña con la reciente compromisión de la GitHub Action codfish/semantic-release-action. Según el informe de StepSecurity, el 24 de junio de 2026 a las 15:39:06 UTC el atacante ejecutó un force-push de un commit malicioso y redirigió varias etiquetas de versión hacia dicho commit. Todos los flujos de trabajo que utilizaron las etiquetas comprometidas después de ese momento ejecutaron la carga útil del atacante directamente en el runner de GitHub Actions.
En este caso, según los investigadores, la carga útil robaba tokens OIDC de GitHub, recopilaba personal access tokens (PAT), cifraba el material mediante AES-128-GCM e intentaba propagar una puerta trasera a otros repositorios accesibles. El uso de marcadores comunes indica que todos estos incidentes pertenecen a un mismo clúster operativo o comparten una base de herramientas.
Expansión al ecosistema Go
La compromisión del módulo Go de Verana Blockchain marca la expansión de la campaña más allá de npm. Sin embargo, como señala Socket, esta muestra no utiliza binding.gyp ni depende de los mecanismos de resolución de módulos o de compilación de Go. En su lugar, la amenaza se materializa mediante la ejecución de código en el contexto del repositorio de origen: un desarrollador que clone o abra el repositorio en un IDE de confianza o en un entorno de asistente de IA para programación puede activar involuntariamente la carga útil maliciosa a través de la configuración del proyecto.
Esto supone un cambio fundamental en la táctica: Miasma se desplaza entre distintas ecosistemas de paquetes, atacando los flujos de trabajo de los desarrolladores y no solo los hooks de instalación de los gestores de paquetes.
Evaluación del impacto
Tal como destaca JFrog, el conjunto de paquetes Leo/RStreams está relacionado con cargas de trabajo en la nube y serverless. La compromisión de estos paquetes potencialmente afecta a:
- Estaciones de trabajo de desarrolladores
- Sistemas de CI/CD y pipelines de despliegue
- Aplicaciones basadas en AWS
- Repositorios de GitHub y credenciales para la publicación de paquetes
- Consumidores aguas abajo de los paquetes comprometidos
El peligro clave de la campaña no reside en la radical novedad de la carga útil, sino en la capacidad de Shai-Hulud para moverse de forma sistemática entre ecosistemas de paquetes legítimos, cambiando los indicadores justo lo suficiente como para dejar obsoletas las detecciones existentes.
Recomendaciones de respuesta
- Verificación inmediata de dependencias: contraste las versiones utilizadas de todos los paquetes enumerados con las versiones comprometidas indicadas. Utilice
npm lsogo list -m allpara realizar un inventario - Rotación de secretos: si se detectan versiones comprometidas, rote todos los tokens npm, GitHub PAT, tokens OIDC, claves de AWS y cualquier otro secreto accesible desde los entornos afectados
- Auditoría de GitHub Actions: revise los flujos de trabajo en busca de workflows llamados «Run Copilot» o referencias a codfish/semantic-release-action. Fije todas las Actions utilizadas a hashes de commit concretos en lugar de etiquetas de versión
- Búsqueda de IOC: examine los registros en busca de las cadenas «Alright Lets See If This Works», «RevokeAndItGoesKaboom» y «firedalazer» en el tráfico de red y en las configuraciones de repositorios
- Monitorización de binding.gyp: configure alertas en las herramientas de análisis de dependencias ante la aparición de archivos binding.gyp en paquetes que no sean módulos nativos
- Revisión de entornos de IDE: al trabajar con repositorios clonados desde fuentes no verificadas, desactive la ejecución automática de scripts de configuración del proyecto en el IDE y en los asistentes de IA para desarrollo
La campaña Shai-Hulud/Miasma muestra un modelo persistente de ataque auto-propagado a la cadena de suministro, en el que cada cuenta de desarrollador comprometida se convierte en un vector para infectar nuevos ecosistemas. La acción prioritaria para los equipos que utilicen paquetes de LeoPlatform, RStreams o Verana Blockchain es la fijación inmediata de las versiones de sus dependencias, la rotación de todos los secretos de los entornos de CI/CD potencialmente afectados y la adopción del pinning de GitHub Actions por hash de commit en lugar de etiquetas mutables.