Productos FTTH

Tienda FFTH desde 2004

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Shai-Hulud roba credenciales de desarrolladores


Una nueva oleada de paquetes maliciosos de npm, denominada Shai-Hulud, está atacando a desarrolladores de infraestructura en la nube y serverless. Esta amenaza, que transporta el malware de la familia Hades, ha ampliado su alcance al ecosistema Leo/RStreams, utilizado habitualmente en flujos de datos y eventos nativos de AWS. El objetivo principal es el robo de credenciales de GitHub, npm, CI/CD y SSH.



Una nueva oleada de paquetes npm maliciosos está atacando a desarrolladores que trabajan con infraestructura en la nube y serverless.

La amenaza, conocida como el payload Shai-Hulud que transporta la familia de malware Hades, ha ampliado ahora su alcance al ecosistema Leo/RStreams, un conjunto de librerías ampliamente utilizadas para el streaming de eventos nativos de AWS y tuberías de datos.

Los equipos de seguridad están dando la voz de alarma ya que el ataque roba discretamente credenciales sensibles de los desarrolladores en el momento en que se instala un paquete.

Lo que hace que esta campaña sea especialmente peligrosa es lo profundo que llega. Cuando instalas uno de los paquetes afectados, el payload comienza a recolectar credenciales almacenadas en archivos, variables de entorno, historial de la shell, tokens de GitHub CLI, claves de acceso a la nube y secretos de tuberías de CI/CD.

Funciona silenciosamente en segundo plano y envía todo lo que encuentra a repositorios de GitHub controlados por el atacante.

La escala de la exposición es difícil de ignorar. Los paquetes afectados registraron aproximadamente 45,000 descargas en un solo mes, lo que significa que miles de desarrolladores pueden haber sido afectados sin saberlo.

Analistas de JFrog Security Research identificaron la nueva oleada y publicaron sus hallazgos en un informe compartido con Cyber Security News (CSN).

El investigador Yair Benamou señaló que esta no es una amenaza completamente nueva, sino otro giro de la misma campaña, con la misma maquinaria de robo de credenciales pero con objetivos frescos y marcadores actualizados.

Las librerías Leo/RStreams se encuentran en el centro de los flujos de trabajo de desarrollo nativos de la nube. Envuelven servicios de AWS como Kinesis, S3, Lambda y DynamoDB, lo que significa que cualquier desarrollador que instale estas herramientas probablemente esté trabajando en un entorno rico en credenciales de nube y tokens de despliegue.

Este posicionamiento significa que una sola instalación comprometida puede exponer mucho más que la estación de trabajo de un solo desarrollador. Esta última oleada confirma que la operación Shai-Hulud sigue activa y sigue creciendo.

En lugar de construir un malware nuevo desde cero, los atacantes están reciclando un payload ya probado y dirigiéndolo hacia familias de paquetes nuevas y confiables. Los defensores que confían solo en nombres de campañas antiguas o firmas desactualizadas tienen muchas probabilidades de pasarlo por alto por completo.

El Payload Shai-Hulud Roba Credenciales de GitHub, npm, Nube, CI/CD y SSH

Los paquetes maliciosos utilizan un truco de entrega ingenioso que les ayuda a evadir los escáneres de seguridad básicos. En lugar de colocar código dañino dentro de los scripts de instalación estándar de npm que la mayoría de las herramientas revisan, el atacante oculta la ejecución dentro de un archivo llamado binding.gyp.

Cientos de repositorios públicos utilizando esta nueva cadena de descripción (Fuente - JFrog)
Cientos de repositorios públicos utilizando esta nueva cadena de descripción (Fuente – JFrog)

Cuando npm encuentra un paquete con este archivo y no hay un script de instalación explícito, ejecuta automáticamente node-gyp, que procesa comandos de shell embebidos dentro de ese archivo. Esto le da al atacante una forma de ejecutar código durante la instalación mientras permanece fuera del radar.

Una vez ejecutado, el payload recolecta credenciales de una amplia gama de fuentes en la máquina del desarrollador. Se dirige a tokens de GitHub, credenciales de publicación de npm y PyPI, claves de acceso de AWS, tokens de JFrog y Artifactory, y claves SSH.

Cualquier dato robado se empaqueta en archivos cifrados y se exfiltra creando repositorios bajo un token de GitHub robado y enviando los resultados allí, una técnica conocida como GitHub dead drop.

Tácticas de Persistencia y Movimiento Lateral

El payload no se detiene al robar credenciales durante la instalación. Planta varios ganchos de persistencia para seguir ejecutándose mucho tiempo después de la instalación inicial.

Se configura como un servicio de systemd en Linux o un LaunchAgent en macOS, mientras que también se engancha a herramientas de desarrollo de IA modificando archivos de configuración para herramientas como Cursor, Copilot y Gemini.

Las claves SSH encontradas en la máquina comprometida se utilizan para intentar un movimiento lateral hacia otros sistemas a los que el desarrollador tiene acceso. El payload también se inyecta en los flujos de trabajo de GitHub Actions para volcar los secretos de la tubería.

Una sola instalación infectada en una máquina podría propagarse hacia repositorios de equipo, cuentas de nube y tuberías de producción.

JFrog recomienda aislar las máquinas afectadas y los ejecutores de CI antes de rotar cualquier credencial. Todos los artefactos de persistencia, incluido el servicio de monitorización, los ganchos de herramientas de IA y los archivos de flujo de trabajo sospechosos, deben eliminarse primero.

Después de la limpieza, se deben rotar todas las credenciales de GitHub, npm, nube, SSH, Docker y registros de paquetes. Las cuentas de GitHub y npm también deben ser auditadas en busca de repositorios inesperados, lanzamientos de paquetes o cambios sospechosos en los flujos de trabajo.

Indicadores de Compromiso (IoCs):-

Versiones de Paquetes npm Maliciosos

TipoIndicadorDescripción
Paquete npmleo-auth v4.0.6Paquete Leo/RStreams secuestrado (XRAY-1009715)
Paquete npmleo-aws v2.0.4Paquete Leo/RStreams secuestrado (XRAY-1009716)
Paquete npmleo-cache v1.0.2Paquete Leo/RStreams secuestrado (XRAY-1009726)
Paquete npmleo-cdk-lib v0.0.2Paquete Leo/RStreams secuestrado (XRAY-1009721)
Paquete npmleo-cli v3.0.3Paquete Leo/RStreams secuestrado (XRAY-1009724)
Paquete npmleo-config v1.1.1Paquete Leo/RStreams secuestrado (XRAY-1009720)
Paquete npmleo-connector-elasticsearch v2.0.6Paquete Leo/RStreams secuestrado (XRAY-1009713)
Paquete npmleo-connector-mongo v3.0.8Paquete Leo/RStreams secuestrado (XRAY-1009714)
Paquete npmleo-connector-mysql v3.0.3Paquete Leo/RStreams secuestrado (XRAY-1009729)
Paquete npmleo-connector-oracle v2.0.1Paquete Leo/RStreams secuestrado (XRAY-1009718)
Paquete npmleo-connector-redshift v3.0.6Paquete Leo/RStreams secuestrado (XRAY-1009725)
Paquete npmleo-cron v2.0.2Paquete Leo/RStreams secuestrado (XRAY-1009723)
Paquete npmleo-logger v1.0.8Paquete Leo/RStreams secuestrado (XRAY-1009727)
Paquete npmleo-sdk v6.0.19Paquete Leo/RStreams secuestrado (XRAY-1009717)
Paquete npmleo-streams v2.0.1Paquete Leo/RStreams secuestrado (XRAY-1009728)
Paquete npmrstreams-metrics v2.0.2Paquete Leo/RStreams secuestrado (XRAY-1009731)
Paquete npmrstreams-shard-util v1.0.1Paquete Leo/RStreams secuestrado (XRAY-1009732)
Paquete npmserverless-convention v2.0.4Paquete Leo/RStreams secuestrado (XRAY-1009719)
Paquete npmserverless-leo v3.0.14Paquete Leo/RStreams secuestrado (XRAY-1009730)
Paquete npmsolo-nav v1.0.1Paquete Leo/RStreams secuestrado (XRAY-1009722)

Indicadores de Red y Servicio

TipoIndicadorDescripción
URLhxxps[:]//api[.]anthropic[.]com/v1/apiCamuflaje de API de Anthropic usado para comunicación del payload
URLhxxps[:]//api[.]github[.]comAPI de GitHub usada para exfiltración dead-drop
URLhxxps[:]//api[.]github[.]com/search/commits?q=firedalazherEndpoint de búsqueda de commits de GitHub usado en el seguimiento de la campaña
URLhxxps[:]//github[.]com/oven-sh/bun/releases/download/bun-v1.3.13/Descarga del runtime Bun utilizada por el payload
URLhxxps[:]//github[.]com/oven-sh/bun/releases/download/bun-v1.3.14/Descarga del runtime Bun utilizada por el payload

Indicadores de Host y Persistencia

TipoIndicadorDescripción
Ruta de Archivo/tmp/p*.jsScript de payload temporal
Ruta de Archivo/tmp/b-/bunBinario del runtime Bun soltado en temp
Ruta de Archivo/tmp/b-/b.zipArchivo del runtime Bun en temp
Ruta de Archivo~/.config/gh-token-monitor/Directorio de configuración de persistencia
Ruta de Archivo~/.config/gh-token-monitor/tokenArchivo de token almacenado para el servicio de monitorización
Ruta de Archivo~/.config/gh-token-monitor/handlerScript manejador para el servicio de monitorización
Ruta de Archivo~/.local/bin/gh-token-monitor.shScript de shell de monitorización
Ruta de Archivo~/.config/systemd/user/gh-token-monitor.serviceServicio de persistencia systemd de Linux
Ruta de Archivo~/Library/LaunchAgents/com.user.gh-token-monitor.plistPersistencia de LaunchAgent de macOS
Ruta de Archivo~/.local/share/updater/update.pyScript de persistencia del actualizador de Python
Ruta de Archivo~/.local/share/updater/update-monitor.serviceServicio systemd del actualizador
Ruta de Archivo~/.config/index.jsÍndice de configuración del payload
Nombre de Archivoai_setup.shScript de gancho de configuración de herramientas de IA
Nombre de Archivoai_init.jsScript de gancho de inicialización de herramientas de IA
Ruta de Archivoresults/results-.jsonArchivos de resultados de credenciales exfiltradas

Indicadores de Repositorio y Flujo de Trabajo

TipoIndicadorDescripción
Marcador de CampañaAlright Lets See If This WorksMarcador de descripción de repositorio público de la oleada actual
Cadena de TokenRevokeAndItGoesKaboomCadena marcadora de relé de token actual
Cadena de TokenTheBeautifulSandsOfTimeCadena marcadora de campaña alternativa
Cadena de TokenthebeautifulmarchofftimeCadena marcadora de campaña alternativa
Variable de EnvSEED_PATGitHub PAT usado en la ruta de sembrador restringida
Variable de EnvVARIABLE_STOREReferencia de entorno de almacenamiento de variables
Nombre de Archivoformat-results.txtArchivo de salida de formato de credenciales
Config de IA.cursor/rules/setup.mdcGancho de reglas de Cursor AI
Config de IA.gemini/settings.jsonGancho de ajustes de Gemini AI
Config de IA.cursorrulesArchivo de persistencia de reglas de Cursor
Config de IA.windsurfrulesArchivo de persistencia de reglas de Windsurf
Config de IA.github/copilot-instructions.mdArchivo de persistencia de instrucciones de Copilot
Config de IAmcp.jsonGancho de configuración de MCP
Config de IA.aider.conf.ymlGancho de configuración de Aider AI

Nota: Las direcciones IP y los dominios están intencionadamente desactivados (ej., [.]) para evitar la resolución accidental o la creación de hipervínculos. Reactívalos solo dentro de plataformas de inteligencia de amenazas controladas como MISP, VirusTotal o tu SIEM.



Fuentes:
https://cybersecuritynews.com/shai-hulud-payload-steals-github-npm-cloud/


0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.