Seguridad8 min de lectura

Ataques a la cadena de suministro en npm (Shai-Hulud): cómo protege su sitio una empresa moderna

Desde septiembre de 2025, varias oleadas de un gusano que se propaga por npm, conocido como Shai-Hulud, han comprometido cientos de paquetes y, en una variante de agosto de 2026, más de 1.300 versiones. El mecanismo es el mismo: secuestran cuentas de quienes publican paquetes, inyectan código malicioso y roban las credenciales de quien los instala. Si tu sitio usa JavaScript moderno (Next.js, React, Node), tu proveedor debe poder explicarte qué protecciones aplica.

E

Edward Díaz

Edwsystem

Qué está pasando

Los proyectos web modernos dependen de cientos o miles de paquetes de terceros. En un ataque a la cadena de suministro, el atacante no ataca tu sitio directamente: compromete un paquete que tu sitio (o tu equipo de desarrollo) instala.

  • Septiembre de 2025: aparece el gusano Shai-Hulud, que se autopropaga: secuestra cuentas de quienes mantienen paquetes e inyecta código malicioso en los que publican.
  • Noviembre de 2025: el NCSC de Nueva Zelanda alerta de una variante evolucionada que comprometió casi 500 paquetes.
  • Agosto de 2026: la agencia de ciberseguridad de Singapur (CSA) alerta de una variante llamada ChainDrop, con más de 1.300 versiones de paquetes comprometidas, entre ellas librerías de caché como keyv, cacheable y flat-cache, y recomienda tratar como potencialmente comprometidas las credenciales de los sistemas afectados.

Revisado el 26 de octubre de 2026. Las listas de paquetes comprometidos cambian: consulta los avisos oficiales de NCSC Nueva Zelanda y de la CSA de Singapur (AD-2026-009).

Qué roban y cómo se propaga

Según el análisis de Zscaler, el gusano busca credenciales en los equipos donde se instala el paquete: tokens de npm, tokens personales de GitHub, claves de nube y secretos de sistemas de integración continua. Con ellas publica versiones infectadas de otros paquetes, añade flujos de GitHub Actions maliciosos y puede hacer públicos repositorios privados. Por eso el riesgo para una empresa no es solo "mi sitio tiene un paquete malo", sino "alguien con acceso a mis secretos puede ejecutar código con mis permisos".

Medidas que reducen el riesgo en un proyecto

  • Instalaciones reproducibles: instalar siempre desde el archivo de bloqueo (pnpm install --frozen-lockfile o npm ci) para que producción use exactamente las versiones revisadas.
  • Scripts de instalación bajo control: desde pnpm 10, los scripts de instalación de las dependencias no se ejecutan por defecto; solo se permiten los que se autoricen expresamente. Es una barrera importante porque muchos ataques corren código en la instalación.
  • Esperar antes de adoptar versiones nuevas: pnpm ofrece minimumReleaseAge, que impide instalar una versión hasta que pasen unos minutos desde su publicación; desde pnpm 11 el valor por defecto es de un día. Como npm suele retirar versiones maliciosas en pocas horas, esa espera evita muchas infecciones. npm y otros gestores tienen ajustes equivalentes (por ejemplo min-release-age en npm). No es una defensa completa, pero es una capa barata.
  • Revisar los cambios del archivo de bloqueo en cada actualización de dependencias, y vigilar paquetes que de pronto añaden scripts o cambian de mantenedor.
  • Credenciales de corta vida y mínimos permisos: tokens limitados, que caduquen, separados por servicio, y fuera del código.
  • Doble factor resistente al phishing (llaves de seguridad o passkeys) en las cuentas de GitHub y npm.
  • Vigilar GitHub: alertas de flujos de trabajo nuevos que nadie creó y de repositorios que cambian de visibilidad.

Qué está haciendo npm

GitHub, propietario de npm, anunció desde septiembre de 2025 un endurecimiento: la revocación de los tokens clásicos a partir de mediados de noviembre de 2025, tokens granulares con permiso de publicación de vida corta (se habla de siete días), autenticación con llaves FIDO/passkeys y publicación de confianza (trusted publishing), que usa credenciales temporales del sistema de integración continua en lugar de tokens de larga duración. Algunos cambios se despliegan por fases, así que conviene revisar el estado actual en su blog.

Y si usas WordPress

La cadena de suministro de WordPress son los plugins y temas. El principio es el mismo: menos piezas de terceros, solo de fuentes confiables, actualizadas y vigiladas. Lo desarrollamos en plugins de WordPress y cómo proteger tu sitio.

Si quieres saber cómo se protege el proyecto de tu empresa, escríbenos.

Fuentes

Preguntas frecuentes

¿Qué es Shai-Hulud?

Es un gusano que se propaga por el registro de paquetes npm: secuestra cuentas de quienes publican paquetes, inyecta código malicioso y roba credenciales de quienes los instalan. Hubo oleadas desde septiembre de 2025 y una variante en agosto de 2026.

¿Mi sitio de WordPress o mi página estática se ve afectado?

El ataque a npm afecta a proyectos que usan paquetes de JavaScript en el desarrollo o en el servidor. Un sitio de WordPress tiene su propio riesgo de cadena de suministro: los plugins y temas.

¿Qué hago si sospecho que mi proyecto instaló un paquete comprometido?

Aísla el equipo o servidor, elimina las versiones afectadas y reinstala desde un estado limpio, y revoca y rota todos los tokens y claves a los que tuvo acceso (npm, GitHub, nube, integración continua). Revisa también si aparecieron flujos de GitHub Actions o cambios de visibilidad que nadie hizo.

¿Te fue útil este artículo?

Déjame tu email y te aviso cuando publique nuevos artículos técnicos.

Ataques a la cadena de suministro en npm (Shai-Hulud): cómo protege su sitio una empresa moderna | Edwsystem