Seguridad de npm bajo presión: ataques gusano, phishing de mantenedores y reglas más estrictas de GitHub

Actualización definitiva: 09/23/2025
  • Los ataques activos a la cadena de suministro de npm aprovecharon el phishing y la apropiación de cuentas de mantenimiento para impulsar versiones troyanizadas.
  • El malware autopropagante "Shai-Hulud" robó secretos y republicó paquetes comprometidos a gran escala.
  • GitHub está implementando controles más estrictos: 2FA para publicaciones locales, tokens granulares de corta duración y publicaciones confiables.
  • La guía del ecosistema enfatiza la rotación de tokens, las auditorías de dependencia y la adopción de flujos de trabajo respaldados por OIDC y 2FA basados ​​en FIDO.

Ilustración de seguridad de npm

El código abierto impulsa el desarrollo moderno, pero su escala y apertura también crean una amplia superficie de ataque donde seguridad de npm Debe evolucionar constantemente para mantener el ritmo de los adversarios.

En las últimas semanas, los investigadores y los registros han detallado una serie de incidentes centrados en npm que combinan ingeniería social, robo de credenciales y publicación de paquetes maliciosos—culminando en una campaña susceptible de ser atacada y propagada a través de los flujos de trabajo de lanzamiento de los propios mantenedores de confianza.

Ola reciente de ataques contra el ecosistema npm

seguridad del registro npm

Varios informes describen phishing dirigido a los mantenedores de npm, seguido por el rápido lanzamiento de nuevas versiones que contienen cargas útiles posteriores a la instalación que se ejecutan en máquinas de desarrolladores y sistemas CI.

Una campaña, identificada como “Shai-Hulud”, distribuyó un gusano de varias etapas que rastreaba entornos en busca de secretos, abusaba de las API de GitHub e intentaba autopropagarse mediante la publicación de paquetes contaminados en cuentas comprometidas.

Los equipos de seguridad y los registros reaccionaron rápidamente: GitHub eliminó cientos de paquetes afectados y agregó bloques vinculados a indicadores de compromiso de malware, pasos que interrumpió una mayor propagación a través del registro.

Investigaciones independientes vincularon las tácticas con incidentes anteriores (incluido el robo del flujo de trabajo “S1ngularity”/Nx y una ola de actualizaciones de paquetes populares), destacando una clara escalada del robo de credenciales aislado a cadena de suministro automatizada abuso.

  • Los paquetes confiables se actualizaron con scripts posteriores a la instalación diseñados para recolectar tokens y exfiltrar datos.
  • Las cuentas comprometidas publicaron nuevas versiones, lo que multiplicó el riesgo en los proyectos y dependencias posteriores.

Hoja de ruta de GitHub para fortalecer la publicación de npm

refuerzo de la seguridad de los paquetes

Para frenar el abuso de tokens y contener malware susceptible de ser propagado, GitHub describió cambios que reducen la superficie de ataque de publicación y elevan el estándar autenticación del mantenedor.

  • La publicación local requerirá autenticación de dos factores (2FA), sin opción de bypass.
  • Los tokens granulares utilizados para la publicación tendrán un vida útil máxima de siete días.
  • Los tokens clásicos heredados quedarán obsoletos y publicación mediante tokens No estará permitido de forma predeterminada.
  • La 2FA basada en TOTP se eliminará gradualmente en favor de FIDO/Autenticación web métodos.
  • Se ampliará la publicación confiable y habrá más personas elegibles Proveedores de CI/CD.

Estas medidas se introducirán gradualmente, con documentación y soporte de migración para ayudar a los mantenedores a adaptarse. flujos de trabajo de forma segura mientras se minimizan las interrupciones; consulte el Impacto de GitHub Copilot en el desarrollo. para entender cambios en flujos de trabajo.

Cómo funciona la campaña Shai-Hulud

Los actores de amenazas generalmente comienzan falsificando npm o servicios relacionados para engañar a un mantenedor y luego usan credenciales robadas para publicar una actualización que ejecuta un postinstalación maliciosa secuencia.

Una vez ejecutada, la carga útil enumera variables de entorno locales, archivos de configuración, configuraciones npm y claves en la nube; también abusa de las API de GitHub para enumerar repositorios accesibles, crear ramas y eliminar un flujo de trabajo malicioso que automatiza la recopilación y persistencia de secretos.

Los investigadores observaron el uso de utilidades de escaneo de secretos (por ejemplo, TruffleHog) para ampliar la red de credenciales recopiladas antes de borrar los rastros. Los datos se almacenaban en endpoints controlados por el atacante y, en algunos casos, se enviaban a un repositorio público recién creado llamado “Shai-Hulud” bajo la cuenta de la víctima.

La característica que define al gusano es la autorreplicación: si se encuentran tokens npm, intenta publicar paquetes modificados, convirtiendo efectivamente los privilegios de los mantenedores en un motor para propagación exponencial.

  • Comportamientos clave: abuso posterior a la instalación, operaciones automatizadas de API de GitHub e inyección de flujo de trabajo del repositorio.
  • Las amenazas incluyen la vulneración de cuentas en la nube, el robo de IP a través de espejos de repositorio completos y movimiento lateral en todas las organizaciones.

Alcance e impacto

Los equipos de investigación han catalogado cientos de versiones afectadas en diversos proyectos, incluidas bibliotecas ampliamente utilizadas con millones de descargas semanales, aumentando el radio de explosión para los consumidores desprevenidos.

Los resultados de telemetría y respuesta a incidentes indican que las organizaciones en América del Norte y Europa estaban entre las más expuestas a cargas útiles relacionadas, con riesgos que van desde criptojacking y robo de datos a la interrupción en los procesos de construcción y despliegue.

Hallazgos de seguridad de npm relacionados que conviene tener en cuenta

Los analistas también señalaron fezbox, un paquete npm de corta duración que incorporaba un Carga útil basada en código QR técnica para obtener y ejecutar JavaScript para obtener credenciales del navegador a partir de las cookies, una forma inusual de evasión esteganográfica.

Si bien muchas aplicaciones evitan hoy almacenar contraseñas en cookies, el método subraya la rapidez con la que los atacantes iteran Ofuscación y entrega dentro de los ecosistemas de paquetes.

Publicación confiable: un cambio más amplio en los registros

La publicación confiable, recomendada por grupos de seguridad de código abierto, reemplaza las claves API de larga duración por claves de API de corta duración. Identidades respaldadas por OIDC de los sistemas CI, lo que reduce la proliferación de tokens y el riesgo de exfiltración.

Visto por primera vez en PyPI y luego adoptado por RubyGems, crates.io, npm y NuGet, este enfoque aporta procedencia criptográfica y garantías más sólidas sobre cómo y dónde Se creó un paquete.

API
Artículo relacionado:
Evolución de las API: Nuevas fronteras en integración, seguridad e IA agente

Qué pueden hacer los mantenedores ahora

Hay medidas inmediatas que los mantenedores y los equipos pueden tomar para reducir la exposición mientras se implementan las defensas a nivel de registro y mejoran el rendimiento general. postura de seguridad de sus proyectos.

  • Adopte la publicación confiable con OIDC y elimine los errores de larga duración fichas de API de CI/CD.
  • Habilitar y hacer cumplir Autenticación en dos pasos FIDO/WebAuthn para proveedores de npm, GitHub y CI.
  • Revisar y bloquear permisos de publicación; eliminar tokens y cuentas no utilizados.
  • Dependencias de auditoría (especialmente actualizaciones recientes) y versiones de pin para reducir la deriva en la cadena de suministro.
  • Rotar credenciales de npm, GitHub y la nube; asumir cualquier secreto presente en un máquina desarrolladora Podría quedar expuesto.
  • Busque archivos de flujo de trabajo sospechosos (por ejemplo, .github/workflows/shai-hulud-workflow.yml) y ramas inesperadas.

Indicadores e ideas de caza

Los equipos pueden reforzar la detección con indicadores y consultas compartidas, adaptándolos a las herramientas locales y evitando el ruido. falsos positivos.

  • Ejemplo de SHA-256 observado en la naturaleza: 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
  • Artefacto de webhook reportado: hxxps://webhooksite/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7
  • Esté atento a la creación de repositorios públicos denominados “Shai-Hulud” bajo cuentas de contribuyentes.
  • Busque script posterior a la instalación patrones de ejecución y repentina rotación de dependencias.

Señales de búsqueda de muestra (adaptar a su plataforma): supervisar las conexiones a los dominios de los sitios web de hooks; marcar las escrituras de flujo de trabajo shai-hulud.yml; alerta sobre líneas de comando que invocan “trufflehog” en agentes de compilación; y revisar cambios recientes en el repositorio que introducen Flujos de trabajo de CI sin aprobación.

Aspectos destacados de la línea de tiempo

A finales de agosto se produjo una infracción dirigida a una falla en el flujo de trabajo que filtró un token de publicación y condujo a lanzamientos troyanizados; a principios y mediados de septiembre se produjo un ataque más amplio que involucró paquetes npm populares, y luego la campaña Shai-Hulud con propagación tipo gusano y cosecha secreta agresiva.

En todo momento, la respuesta coordinada de los operadores de registro y los proveedores de seguridad eliminó las versiones comprometidas, bloqueó los IoC conocidos y aceleró los planes para exigir medidas más estrictas. autorización y procedencia para la publicación de npm.

Estos incidentes muestran con qué rapidez un agente de amenazas puede convertir la confianza del mantenedor en distribución para código maliciosoy por qué el ecosistema está avanzando hacia FIDO 2FA, credenciales de corta duración y versiones certificadas por CI para cortar clases enteras de ataques.

Artículos Relacionados: