3 puntos por GN⁺ 2025-10-31 | Aún no hay comentarios. | Compartir por WhatsApp
  • Se confirmó que en el repositorio de NPM se subieron más de 100 paquetes maliciosos para robar credenciales sin ser detectados desde agosto, y que en conjunto fueron descargados más de 86 mil veces
  • La empresa de seguridad Koi informó que una campaña de ataque llamada PhantomRaven distribuyó 126 paquetes maliciosos aprovechando la función Remote Dynamic Dependencies (RDD) de NPM
  • RDD es una estructura que permite que un paquete descargue dinámicamente código de dependencias desde dominios no confiables, por lo que no es detectada por herramientas de análisis estático
  • Los atacantes aprovecharon esta función para descargar código malicioso mediante conexiones HTTP y, en los metadatos del paquete, aparecía como “0 Dependencies”, por lo que ni los desarrolladores ni los escáneres de seguridad lo detectaban
  • Esta vulnerabilidad estructural expone los límites de la gestión de seguridad del ecosistema de NPM y los riesgos del mecanismo de instalación automática

Expansión de paquetes maliciosos en el repositorio de NPM

  • Los atacantes aprovecharon una debilidad estructural del repositorio de código de NPM para subir, desde agosto, más de 100 paquetes para robar credenciales
    • La mayoría de los paquetes se distribuyó sin ser detectada, y el total acumulado de descargas superó las 86,000
  • La empresa de seguridad Koi nombró este ataque como la campaña PhantomRaven y analizó que se explotó una función específica de NPM
    • Según Koi, de los 126 paquetes maliciosos, alrededor de 80 seguían todavía en NPM al momento de redactarse el artículo

Estructura vulnerable de Remote Dynamic Dependencies (RDD)

  • RDD es una función que permite que un paquete descargue dinámicamente código de dependencias desde sitios web externos
    • Normalmente las dependencias se descargan desde la infraestructura confiable de NPM, pero RDD también permite descargas mediante conexiones no cifradas como HTTP
  • Los atacantes de PhantomRaven configuraron esta función para descargar código desde una URL maliciosa, por ejemplo http://packages.storeartifact.com/npm/unused-imports
    • Estas dependencias no son visibles para los desarrolladores ni para los escáneres de seguridad, y en la información del paquete aparecen como “0 Dependencies”
  • Debido a la función de instalación automática de NPM, este código de dependencia “invisible” se ejecuta automáticamente

Límites de detección de las herramientas de seguridad

  • Oren Yomtov, de Koi, señaló que “PhantomRaven es un caso que explota con precisión un punto ciego de las herramientas de seguridad existentes
    • RDD no es detectado por herramientas de análisis estático
  • Por esto, los atacantes pudieron evadir las verificaciones de seguridad y distribuir código malicioso

Factores adicionales de vulnerabilidad

  • Koi explicó que las dependencias descargadas mediante RDD se vuelven a descargar desde el servidor del atacante en cada instalación
    • Como no hay caché ni control de versiones, incluso el mismo paquete podría inyectar código malicioso distinto según el momento de instalación
  • Esta estructura de descarga dinámica dificulta la verificación de integridad de los paquetes

Estructura y contexto de NPM

  • NPM es un administrador de paquetes para JavaScript gestionado por npm, Inc., una subsidiaria de GitHub
    • Es el administrador de paquetes predeterminado de Node.js y está compuesto por un cliente de línea de comandos y el npm registry
    • En el registry se almacenan paquetes públicos y privados de pago, y pueden buscarse a través del sitio web
  • Este incidente se señala como un caso que muestra cómo la estructura de gestión automática de dependencias de NPM puede ser explotada en ataques

Otras menciones

  • Al final del artículo se menciona la opinión de que debería bloquearse la ejecución innecesaria de JavaScript
    • Sin embargo, se señala que en este ataque incluso código JavaScript esencial fue utilizado de forma maliciosa

Aún no hay comentarios.

Aún no hay comentarios.