Nuevo ataque Shai Hulud firman paquetes NPM maliciosos ~ Segu-Info

Cientos de paquetes de npm y PyPI se han visto comprometidos en una nueva
campaña de la cadena de suministro de Shai-Hulud que entrega malware de robo
de credenciales dirigido a desarrolladores.

El atacante secuestró tokens válidos de OpenID Connect (OIDC) para publicar
versiones de paquetes maliciosos con certificación de procedencia verificable
(SLSA Build Level 3). Atribuido al grupo de amenazas TeamPCP, el ataque
comenzó comprometiendo docenas de paquetes de IA TanStack y Mistral, pero
rápidamente se extendió a otros proyectos populares, como Guardrails AI,
UiPath y OpenSearch.

La campaña
Shai-Hulud surgió en septiembre pasado
y tuvo múltiples iteraciones [1,
2,
3], algunas de las cuales expusieron cientos de miles de secretos de
desarrolladores en repositorios de GitHub generados automáticamente. Entre los
proyectos comprometidos más recientemente se encuentran el paquete CLI de
Bitwarden y los
paquetes oficiales de SAP.

La última ola de ataques ocurrió ayer cuando el actor de amenazas publicó
múltiples paquetes maliciosos en los espacios de nombres de TanStack en Node
Package Manager (npm) y luego se propagó a otros proyectos utilizando
credenciales de CI/CD robadas.

La empresa de seguridad de aplicaciones StepSecurity señala que el actor de
amenazas publicó los paquetes infectados a través de la canalización CI/CD
legítima, con certificaciones de procedencia SLSA válidas emitidas por la
infraestructura de firma de npm y «vinculadas al flujo de trabajo de
lanzamiento legítimo de TanStack/router».

Endor Labs informa
más de 160 paquetes comprometidos en npm,
Aikido registró
373 entradas de versiones de paquetes maliciosos y
Socket rastreó
416 artefactos de paquetes comprometidos en npm y el índice de paquetes de
Python (PyPI).

Según el
informe post-mortem de TanStack, los atacantes encadenaron tres vulnerabilidades: un flujo de trabajo
riesgoso ‘pull_request-target’, envenenamiento de la caché de GitHub
Actions y robo de tokens OIDC de la memoria del corredor.

Los atacantes publicaron 84 versiones maliciosas en 42 paquetes TanStack que
tenían procedencia válida, certificaciones Sigstore válidas y firmas legítimas
de GitHub Actions. Desde la perspectiva del desarrollador, los paquetes
parecían ser criptográficamente auténticos y no había indicios de compromiso.

Endor Labs destaca un ingenioso truco de confirmación de Git en el que los
atacantes abusaron de una confirmación huérfana enviada a una bifurcación del
repositorio TanStack/router, haciéndola accesible a través del almacenamiento
de objetos bifurcado compartido de GitHub aunque no perteneciera a ninguna
rama.

Se hizo referencia a la confirmación a través de una dependencia opcional
maliciosa, lo que provocó que npm buscara y ejecutara automáticamente código
controlado por el atacante durante la instalación del paquete.

El malware apunta a secretos de los desarrolladores, que incluyen:

  • Tokens OIDC y PAT de GitHub Actions
  • Credenciales de git
  • Tokens de publicación npm
  • Credenciales de tareas de AWS Secrets Manager, IAM y ESC
  • Tokens de cuenta de servicio de Kubernetes y credenciales de clúster
  • Token de bóveda de HashiCorp
  • Claves SSH
  • Configuraciones del Código Claude
  • Tareas de código VS
  • archivos .env

StepSecurity dice
que la carga útil lee la memoria del proceso de GitHub Actions para recopilar
credenciales de más de 100 rutas de archivos asociadas con proveedores de
nube, tokens de criptomonedas y aplicaciones de mensajería.

Para filtrar la información confidencial, el malware utilizó la red Session
P2P, haciéndola aparecer como tráfico de mensajería cifrado y complicando los
esfuerzos de detección, bloqueo y eliminación.

Una vez que se produce una infección, el malware se escribe en los
hooks de Claude Code y en las tareas de ejecución automática de VS
Code, por lo que la desinstalación de los paquetes maliciosos no lo elimina.

El mecanismo de autopropagación permanece prácticamente sin cambios con
respecto a oleadas anteriores: utiliza credenciales de GitHub/npm robadas,
enumera los paquetes vinculados al mantenedor comprometido, modifica archivos
tar para inyectar la carga útil y luego vuelve a publicar versiones
maliciosas.

Según la plataforma de seguridad de la cadena de suministro SafeDep, aunque
el mecanismo de activación es diferente
en los paquetes Mistral AI y TanStack comprometidos, arrojan la misma carga
útil de robo de credenciales.

Microsoft Threat Intelligence analizó la carga útil entregada a través de un
paquete malicioso de IA Mistral en PyPI. El actor lo llamó
‘transformers.pyz’, que puede ser para hacerse pasar por la biblioteca
Python de código abierto de Hugging Face que Transformers utiliza para acceder
a modelos previamente entrenados para el procesamiento del lenguaje natural.

Los
investigadores dicen
que la carga útil lanza un malware que roba información en los sistemas Linux.
El ladrón incluye una lógica básica de geofencing, evitando específicamente la
ejecución en hosts donde se detecta la configuración del idioma ruso.

También está presente una rutina secundaria destructiva. En entornos que
parecen originarse en Israel o Irán, el malware introduce un mecanismo de
sabotaje probabilístico con una probabilidad de 1 entre 6 de ejecutar un
comando de borrado recursivo (rm -rf/).

El comportamiento se asemeja a la
campaña CanisterWorm que TeamPCP
implementó en marzo y se centró en las plataformas Kubernetes. Si CanisterWorm
aterrizara en máquinas que coincidieran con la zona horaria y la configuración
regional de Irán, las borraría.

Las listas de paquetes comprometidos están disponibles en los informes de
varios proveedores de seguridad [1,
2,
3,
4,
5],, y se recomienda verificar todos los recursos para obtener una vista
completa del impacto.

Los desarrolladores que descargaron una versión de paquete afectada deben
asumir que las credenciales estuvieron expuestas. Los investigadores
recomiendan que los equipos de seguridad tomen las siguientes medidas:

  • comprobar las versiones de paquetes afectadas
  • comprobar la persistencia en las máquinas de desarrollador
  • rotar todas las credenciales (tokens de GitHub, tokens de npm, credenciales
    de AWS, tokens de Vault, cuentas de servicio de Kubernetes y secretos de
    CI/CD)
  • auditar los directorios IDE en busca de archivos maliciosos que sobrevivan a
    la instalación de npm (por ejemplo, router_runtime.js o setup.mjs)
  • bloquear la infraestructura de comando y control del actor de amenazas
    (api.masscan.cloud, git-tanstack.com y *.getsession.org) a nivel de DNS o
    proxy

Los
investigadores de Snyk dicen
que dado que
«el ataque produce certificaciones SLSA Build Nivel 3 válidas para paquetes
maliciosos»
, es necesario verificar la procedencia y agregar una capa de análisis de
comportamiento en el momento de la instalación, junto con una verificación
basada en firmas para paquetes maliciosos.

A largo plazo, para mitigar el riesgo de ataques similares, considere imponer
instalaciones de solo archivos de bloqueo, lo que debería evitar las
actualizaciones automáticas/silenciosas de paquetes.

Fuente:
BC


Ver fuente

Related Post