Resumen ejecutivo
Unit 42 de Palo Alto Networks está investigando un ataque activo y generalizado a la cadena de suministro de software dirigido al ecosistema Node Package Manager (npm). Un nuevo gusano autorreplicante, al que actualmente se conoce con el nombre de “Shai-Hulud”, es responsable de la vulneración de más de 180 paquetes de software.
Este ataque representa una evolución significativa en las amenazas a la cadena de suministro, aprovechando la propagación automatizada para alcanzar escala. Unit 42 también evalúa con una confianza moderada que se utilizó un LLM para generar el script bash malicioso, basándose en la inclusión de comentarios y emojis.
Los clientes de Palo Alto Networks están mejor protegidos contra este ataque y reciben mitigación para algunos de sus aspectos a través de varios productos y servicios, entre los que se incluyen:
- Cortex Cloud
- Prisma Cloud
- Cortex XDR y XSIAM
- Advanced URL Filtering
- Advanced WildFire
- Next-Generation Firewall con Advanced Threat Prevention
El equipo de respuesta ante incidentes de Unit 42 también puede involucrarse para ayudar con una intrusión o para proporcionar una evaluación proactiva que permita reducir el riesgo.
Temas relacionados con Unit 42 | Cadena de suministro, recolección de credenciales, Phishing, JavaScript |
Antecedentes de los paquetes npm y la cadena de suministro
El ataque podría originarse en una campaña de phishing de recolección de credenciales que suplanta a npm y pide a los desarrolladores que “actualicen” sus opciones de inicio de sesión de autenticación multifactor (MFA). Una vez obtenido el acceso inicial, el autor de amenazas implementa una carga maliciosa que funciona como un gusano, iniciando una secuencia de ataque en varias fases. Basándose en la inclusión de comentarios y emojis en el script bash, Unit 42 determina con confianza moderada que el actor de amenazas aprovechó un LLM para ayudar a escribir el código malicioso.
Las versiones maliciosas de los paquetes contienen un gusano que ejecuta un script posterior a la instalación. Este malware escanea el entorno comprometido en busca de credenciales sensibles, incluyendo:
- Archivos .npmrc (para tokens npm)
- Variables de entorno y archivos de configuración dirigidos específicamente a tokens de acceso personal (PAT) de GitHub y claves API para servicios en la nube como los siguientes:
- Amazon Web Services (AWS)
- Google Cloud Platform (GCP)
- Microsoft Azure
Las credenciales recolectadas se exfiltran a un endpoint controlado por un actor. El malware crea mediante programación un nuevo repositorio público de GitHub llamado “Shai-Hulud” bajo la cuenta de la víctima y consigna en él los secretos robados, exponiéndolos públicamente.
Utilizando el token npm robado, el malware se autentica en el registro npm como el desarrollador comprometido. Luego, identifica otros paquetes mantenidos por ese desarrollador, inyecta código malicioso en ellos y publica las nuevas versiones comprometidas en el registro. Este proceso automatizado permite que el malware se propague exponencialmente sin la intervención directa de un actor.
Alcance actual del ataque
El alcance del ataque es amplio y afecta a numerosos paquetes, incluida la muy usada biblioteca @ctrl/tinycolor, que recibe millones de descargas semanales.
El robo de credenciales de esta campaña puede conducir directamente a comprometer los servicios en la nube (como AWS, Azure, GCP), lo que lleva al robo de datos de los cubos de almacenamiento, la implementación de ransomware, la criptominería o la eliminación de los entornos de producción. También puede provocar el robo directo de bases de datos y el secuestro de servicios de terceros para phishing. Además, las claves SSH robadas pueden permitir el movimiento lateral dentro de redes comprometidas.
Guías provisionales
- Rotación de credenciales: rote inmediatamente todas las credenciales de desarrollador. Esto incluye tokens de acceso a npm, PAT y claves SSH de GitHub, y todas las claves de acceso programático para servicios en la nube y de terceros. Asuma que cualquier secreto presente en la máquina de un desarrollador puede haber sido comprometido.
- Auditoría de dependencia: realice una auditoría exhaustiva e inmediata de todas las dependencias del proyecto. Utilice herramientas como npm audit para identificar las versiones vulnerables de los paquetes. Revise los archivos package-lock.json o yarn.lock del proyecto para asegurarse de no estar usando ninguno de los paquetes con problemas conocidos. Elimine o actualice inmediatamente las dependencias afectadas.
- Revisión de la seguridad de la cuenta de GitHub: todos los desarrolladores deben revisar sus cuentas de GitHub en busca de repositorios públicos no reconocidos (en concreto, “Shai-Hulud”), confirmaciones sospechosas o modificaciones inesperadas en los flujos de trabajo de Acciones de GitHub que podrían establecer la persistencia.
- Hacer cumplir la MFA: asegúrese de que la MFA se aplique estrictamente en todas las cuentas de desarrolladores, especialmente en plataformas críticas como GitHub y npm, para evitar el abuso de credenciales.
Consultas de búsqueda de amenazas gestionadas de Unit 42
1 2 3 4 5 6 7 |
// Description: Reports indicate only Linux+Mac is targeted due to an os.platform() check, ensure agent coverage on these devices dataset = endpoints | filter endpoint_status in (ENUM.CONNECTED, ENUM.DISCONNECTED) | comp count() by platform |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Description: Check for connections to any webhook.site domains in raw NGFW URL logs. Optional filter for specific URI observed in use by threat actor. dataset = panw_ngfw_url_raw | filter lowercase(url_domain) contains "webhook.site" | alter susp_uri = if(uri contains "bb8ca5f6-4175-45d2-b042-fc9ebb8170b7") // Optional filter: // | filter susp_uri = true | fields url_domain, uri, susp_uri, * |
1 2 3 4 5 6 7 8 9 |
// Description: Check for connections to any webhook.site domains in XDR telemetry. Optional filter for specific URI observed in use by threat actor. dataset = xdr_data | filter event_type = STORY | filter lowercase(dst_action_external_hostname) contains "webhook.site" or lowercase(dns_query_name) contains "webhook.site" | fields agent_hostname, dst_action_external_hostname, dns_query_name |
1 2 3 4 5 6 7 |
// Description: Detect malicious YAML file dataset = xdr_data | filter event_type = FILE and action_file_name = "shai-hulud-workflow.yml" and agent_os_type in (ENUM.AGENT_OS_MAC, ENUM.AGENT_OS_LINUX) | fields agent_hostname, actor_effective_username, action_file_name, action_file_path, actor_process_image_name, actor_process_command_line |
1 2 3 4 5 6 7 |
// Description: Detects Trufflehog usage. Legitimate tool abused by threat actor for secrets discovery. False positives may occur if there is legitimate use. dataset = xdr_data | filter event_type = PROCESS and lowercase(action_process_image_command_line) contains "trufflehog" | fields agent_hostname, actor_effective_username, actor_process_command_line, action_process_image_command_line |
1 2 3 4 5 6 7 8 9 |
// Description: Detect malicious bundle.js file config case_sensitive = false | dataset = xdr_data | filter event_type = FILE and action_file_sha256 = "46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09" | fields agent_hostname, action_file_name, action_file_path, event_type, event_sub_type, actor_process_image_name, actor_process_command_line |
Conclusión
El gusano Shai-Hulud representa una escalada significativa en la actual serie de ataques de NPM dirigidos a la comunidad de código abierto. Esto se produce tras incidentes recientes como la vulneración de s1ngularity/Nx, que supuso el robo de credenciales y expuso repositorios privados, y una campaña generalizada de phishing de NPM observada en septiembre de 2024.
Destaca especialmente su diseño autorreplicante, que combina eficazmente la recogida de credenciales con un mecanismo de difusión automatizado que aprovecha los derechos de publicación de los mantenedores para proliferar en todo el ecosistema. Además, observamos la integración de contenidos generados por IA en la campaña Shai-Hulud, una evolución que sigue al armamento explícito de herramientas de línea de comandos de IA para reconocimiento del ataque s1ngularity/Nx. Esto significa la amenaza en constante evolución de los actores maliciosos que explotan la IA para actividades maliciosas, acelerando la expansión secreta.
La naturaleza consistente y refinada de estas metodologías de ataque subraya una amenaza creciente para las cadenas de suministro de software de código abierto. Estos ataques se propagan a la velocidad de la Integración Continua y la Entrega Continua (CI/CD), lo que plantea retos de seguridad duraderos y cada vez mayores para todo el ecosistema.
Palo Alto Networks ha compartido nuestros resultados con nuestros compañeros de Cyber Threat Alliance (CTA). Los miembros de CTA utilizan esta inteligencia para implementar rápidamente medidas de protección para sus clientes y desarticular sistemáticamente a los ciberdelincuentes. Obtenga más información sobre Cyber Threat Alliance.
Protecciones y detecciones de productos de Palo Alto Networks para ataques a la cadena de suministro de paquetes npm
Los clientes de Palo Alto Networks pueden aprovechar varias protecciones, servicios y actualizaciones de productos diseñados para identificar y defenderse contra esta amenaza.
Si cree que podría haber resultado vulnerado o tiene un problema urgente, póngase en contacto con el equipo de respuesta ante incidentes de Unit 42 o llame al:
- Norteamérica: llamada gratuita: +1 (866) 486-4842 (866.4.UNIT42)
- Reino Unido: +44.20.3743.3660
- Europa y Oriente Medio: +31.20.299.3130
- Asia: +65.6983.8730
- Japón: +81.50.1790.0200
- Australia: +61.2.4062.7950
- India: 00 800 050 45107
Advanced WildFire
Los modelos de aprendizaje automático y las técnicas de análisis de Advanced WildFire se han revisado y actualizado a la luz de los indicadores asociados con esta amenaza.
Firewalls de próxima generación con prevención avanzada de amenazas
El Firewall de próxima generación (Next-Generation Firewall), con la suscripción de seguridad de Prevención Avanzada de Amenazas (Advanced Threat Prevention), puede ayudar a bloquear el ataque a través de la siguiente firma de Prevención de Amenazas: 87042, 87046 y 87047.
Servicios de seguridad suministrados desde la nube para el Firewall de próxima generación
El servicio de Filtrado Avanzado de URL (Advanced URL Filtering) ayuda a bloquear ataques de phishing de tipo Meddler-in-the-Middle (MitM) y clasifica como maliciosas las URL asociadas con esta actividad.
Cortex XDR y XSIAM
Cortex XDR y XSIAM ayudan a proteger contra las amenazas descritas en este artículo. Los agentes impiden la ejecución de malware malicioso conocido y también pueden impedir la ejecución de malware desconocido utilizando protección frente a amenazas de comportamiento y el aprendizaje automático basado en el módulo de análisis local.
Cortex Cloud
Cortex Cloud ayuda a detectar paquetes maliciosos e identificar malas configuraciones en los pipelines que podrían exponer a los clientes a dependencias de código abierto no probadas o no autorizadas. El escáner está diseñado para marcar vulnerabilidades, problemas de licenciamiento y riesgos operativos, pero su propósito no es detectar código malicioso en paquetes recién publicados. Es fundamental revisar las alertas relevantes de CI/CD y verificar que sus aplicaciones no dependan de versiones no autorizadas de paquetes npm.
Cortex Cloud publicó una entrada de blog detallada que describe cómo puede utilizarse Cortex Cloud para detectar y prevenir ataques a la cadena de suministro.
Prisma Cloud
Prisma Cloud puede ayudar a detectar el uso de paquetes maliciosos y reconocer errores de configuración en las canalizaciones que podrían llevar a los clientes a utilizar versiones de paquetes OSS no comprobadas o no autorizadas. Sin embargo, el escáner está diseñado para detectar vulnerabilidades, problemas de licencia y riesgos operativos, y no para detectar código malicioso en paquetes nuevos. Es importante investigar las alertas de CI/CD pertinentes y asegurarse de que las aplicaciones no utilizan versiones no autorizadas de paquetes npm.
Indicadores de vulneración
- 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
- b74caeaa75e077c99f7d44f46daaf9796a3be43ecf24f2a1fd381844669da777
- dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c
- 4b2399646573bb737c4969563303d8ee2e9ddbd1b271f1ca9e35ea78062538db
- hxxps://webhook[.]site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7
Recursos adicionales
- Breakdown: Widespread npm Supply Chain Attack Puts Billions of Weekly Downloads at Risk (Un ataque generalizado a la cadena de suministro de npm pone en peligro miles de millones de descargas semanales), Palo Alto Networks