Ataque a la Cadena de Suministro de node-ipc: Versiones Maliciosas Roban Claves AWS y Tokens de GitHub vía DNS
Tres versiones maliciosas de node-ipc (822K descargas semanales) publicadas el 14 de mayo recopilaron más de 90 categorías de credenciales de máquinas de desarrolladores y entornos CI, exfiltrando todo mediante consultas DNS TXT para evadir la monitorización de red. Si ejecutaste npm install el 14 de mayo, rota todas las credenciales de inmediato.
Tres versiones del paquete node-ipc —con 822.000 descargas semanales en npm— fueron publicadas el 14 de mayo de 2026 con una backdoor que robaba credenciales. Las versiones maliciosas (9.1.6, 9.2.3 y 12.0.1) recopilaban más de 90 categorías de secretos y los exfiltraban mediante consultas DNS TXT, una técnica elegida específicamente para evadir la monitorización de seguridad a nivel de red. Los paquetes permanecieron activos aproximadamente dos horas antes de ser eliminados.
El ataque fue posible porque una cuenta de mantenedor inactiva fue secuestrada tras re-registrar un dominio de correo electrónico expirado vinculado a esa cuenta. No se explotó ninguna vulnerabilidad en la infraestructura de npm —solo su mecanismo estándar de recuperación de cuentas.
node-ipc es una dependencia transitiva de varios paquetes de alto perfil. Muchos proyectos descargaron las versiones maliciosas sin tener referencia directa a node-ipc en su propio package.json. Si ejecutaste npm install o actualizaste dependencias el 14 de mayo, asume que estás comprometido.
Lo Que Robó la Backdoor
- Credenciales cloud: claves IAM de AWS y tokens de sesión, credenciales de service principals de Azure, JSON de service accounts de GCP
- Tokens de control de versiones: personal access tokens de GitHub, tokens de GitLab, contraseñas de aplicaciones de Bitbucket
- Claves de infraestructura: claves SSH privadas, archivos
~/.kube/configde Kubernetes, estado y variables de Terraform - Herramientas locales: claves de API de Claude AI, tokens de sesión de Kiro IDE, credenciales de JetBrains Hub
La técnica de exfiltración mediante DNS TXT es el detalle crítico. Al codificar las credenciales como consultas DNS en lugar de peticiones HTTP POST directas, el malware elude la mayoría de los filtros de salida y las reglas SIEM que monitorizan datos hacia rangos de IP desconocidos. La detección requiere registro de consultas DNS —algo que muchas estaciones de trabajo de desarrolladores y entornos CI simplemente no tienen activado por defecto.
Acciones Inmediatas
- Revisa tus lock files: ejecuta
npm ls node-ipcpara determinar si alguna versión afectada aparece en tu árbol de dependencias. - Rota todo: si alguna de las tres versiones estuvo en tu entorno, considera que todas las credenciales de esa máquina están comprometidas. Rota claves de AWS, revoca tokens de GitHub, regenera pares de claves SSH e invalida service accounts de Kubernetes.
- Audita CI/CD: cualquier runner que haya compilado tu proyecto durante la ventana del 14 de mayo debe tener sus secretos rotados y conexiones de servicio re-autorizadas.
- Fija versiones limpias: las versiones seguras son 9.1.5 (estable anterior) o 9.2.2. Fija explícitamente hasta que salga una release verificada en 12.0.2+.
Esta Es la Segunda Vez
node-ipc ya fue protagonista en 2022 de un incidente de protesta en la cadena de suministro, cuando su mantenedor corrompió intencionalmente las salidas para direcciones IP rusas y bielorrusas. Ese incidente demostró el impacto desproporcionado del paquete. Esta es la segunda vez que la cadena de suministro de node-ipc es weaponizada.
El problema de raíz es estructural: el modelo de recuperación de cuentas de npm permite que cuentas inactivas sean secuestradas mediante dominios de correo electrónico expirados, sin ninguna verificación adicional de identidad. Los paquetes de alta descarga con mantenedores inactivos son una superficie de ataque permanente. Hasta que npm introduzca requisitos de clave de hardware o políticas de congelación por inactividad de cuenta, esta clase de ataque seguirá funcionando.
Evalúa si node-ipc sigue siendo una dependencia aceptable en tus proyectos. En la mayoría de los casos, su funcionalidad de comunicación entre procesos puede sustituirse con el módulo nativo worker_threads de Node o con un paquete más pequeño y activamente mantenido.