Investigadores de Koi Security han documentado la campaña PhantomRaven, activa desde agosto de 2024, que subió 126 paquetes maliciosos al registro npm y acumuló más de 86 000 descargas. Al momento del informe, cerca de 80 paquetes seguían activos. La característica distintiva es el uso de Remote Dynamic Dependencies (RDD), una técnica que permite descargar y ejecutar código desde Internet durante la instalación del paquete, eludiendo controles tradicionales de integridad y la mayoría de escáneres estáticos.
Qué es RDD y por qué elude la detección en npm
Normalmente, las dependencias de un paquete se declaran en package.json y quedan fijadas en el lockfile, lo que posibilita auditorías y reproducibilidad. RDD rompe este modelo: el paquete invoca código que, en tiempo de instalación (npm install), obtiene e interpreta scripts desde URLs externas —incluso sobre HTTP no cifrado— sin quedar reflejados como dependencias formales. El resultado es que la “verdadera” carga útil no pasa por el registro de npm, no se bloquea en el lockfile y no requiere interacción del usuario, por lo que el análisis estático tradicional no la detecta.
Alcance, sigilo y exfiltración de datos
Koi Security destaca que la carga maliciosa se descarga en cada instalación y no se cachea, habilitando respuestas selectivas por IP, entorno o AS empresarial. Esto dificulta la replicación por parte de analistas y complica la forensia, ya que la infraestructura de mando y control puede devolver un payload “limpio” a entornos de investigación.
Tras la ejecución inicial, el malware recopila telemetría del host y roba credenciales y tokens de acceso, una vía de entrada a repositorios legítimos y pipelines CI/CD. La exfiltración se instrumenta por múltiples canales para resiliencia: HTTP GET con datos en la URL, HTTP POST en JSON y WebSocket. Este enfoque recuerda campañas previas contra el ecosistema JavaScript, como event-stream (2018), la intrusión en ua-parser-js (2021) o IconBurst (2022), pero RDD eleva el sigilo al escapar del modelo de dependencias fijadas.
Impersonación de ecosistemas y el auge del slopsquatting
Varios paquetes imitaban herramientas asociadas a GitLab y Apache, aumentando su credibilidad. Además, los operadores explotaron el slopsquatting: cuando los asistentes con IA “alucinan” dependencias plausibles pero inexistentes, los atacantes registran rápidamente esos nombres en npm y transforman la recomendación de la IA en un canal de distribución de malware. Este vector se suma al ya conocido typosquatting, ampliando la superficie de ataque contra desarrolladores apresurados.
Impacto en la cadena de suministro y en CI/CD
Como RDD no queda reflejado en manifests ni lockfiles, las herramientas de inventario (SBOM) y los escáneres de SCA pueden omitir componentes realmente ejecutados en build. En entornos de CI/CD, el riesgo es crítico: un build agent con permisos amplios y salida a Internet puede exponer secretos de entorno, artefactos firmados y credenciales de publicación, catalizando ataques masivos a la cadena de suministro. La lección es clara: los controles de paquetes deben complementarse con controles de red y de ejecución.
Medidas de mitigación prioritarias
Reducir superficies de instalación. En CI/CD, ejecutar con scripts deshabilitados (por ejemplo, npm ci con ignorar scripts) y en entornos con acceso a Internet restringido, permitiendo solo dominios de registro por HTTPS.
Políticas de red estrictas. Bloquear salidas HTTP y descargas de código desde URLs no verificadas; aplicar egress control y, cuando sea viable, inspección TLS para detectar anomalías.
Gobernanza de dependencias. Validar autoría, repositorios y changelogs; vigilar typosquatting/slopsquatting; adoptar espejos internos o cachés de paquetes confiables y revisar manualmente nuevos módulos críticos.
Higiene de secretos. Usar tokens de corta vida y privilegios mínimos, rotaciones frecuentes, escaneo de secretos y separación estricta entre entornos de build y producción.
Formación y verificación. No instalar paquetes sugeridos por LLM sin comprobación independiente. Capacitar a los equipos para reconocer módulos con cargas externas no declaradas y comportamientos atípicos.
PhantomRaven confirma que los atacantes ya explotan características del ecosistema npm y hábitos de desarrollo para ganar sigilo y alcance. Audite hoy sus pipelines: desactive scripts innecesarios, limite las conexiones salientes, use registros internos y verifique nuevas dependencias con el mismo rigor que el código propio. Ese cambio de postura reduce de forma tangible la probabilidad del próximo incidente en su cadena de suministro.