El malware PhantomRaven infecta 126 paquetes y roba tokens de GitHub

Ciberataque masivo a través de GitHub expone millones de credenciales

Investigadores de seguridad han detectado el malware PhantomRaven, que ha comprometido al menos 126 paquetes npm disponibles públicamente. Esta es una campaña de ataque a la cadena de suministro de software en el ecosistema de Node.js, diseñada para robar credenciales de desarrolladores, pipelines CI/CD y licencias de software.


PhantomRaven: Robo de Credenciales en el Ecosistema npm

PhantomRaven se distingue por su enfoque en paquetes de mantenimiento menor y su integración con acciones de CI para establecer persistencia, explotando la confianza en el código abierto.


Mecanismo de Infiltración
  • Compromiso de Cuentas: Los atacantes obtienen acceso a cuentas de mantenedores de paquetes npm (mediante phishing, credenciales expuestas o tokens robados).
  • Inyección del Payload: Publican versiones maliciosas o versiones adicionales de los paquetes, a menudo con dependencias secundarias que contienen el payload real.
  • Ejecución Silenciosa: Al instalarse, estos paquetes ejecutan scripts postinstallopreinstall que buscan activamente:
    • Tokens de autenticación de npm/GitHub.
    • Claves de la nube (AWS, Azure, GCP).
    • Archivos de configuración sensibles en la máquina del desarrollador.
  • Persistencia en CI/CD: En algunos casos, el malware instala acciones de GitHub Actions o CI, lo que permite al atacante seguir comprometiendo pipelines y propagar el malware a proyectos dependientes.

Riesgo Estratégico
  • Propagación en Producción: Al afectar a desarrolladores, un token robado o una clave cloud comprometida puede propagar artefactos maliciosos a Múltiples proyectos y entornos de producción.
  • Fallo de Monitoreo: El malware se enfoca en librerías menos populares o de mantenimiento más laxo (los 126 paquetes), lo que reduce la visibilidad y permite que el ataque permanezca latente (latencia en la detección).
  • Baja Barrera de Ataque: El actor se vale de la confianza en el código abierto y credenciales certificadas, no de exploits atractivos, haciendo el ataque accesible a grupos con menos recursos.
  • Persistencia Post-Remoción: Aun cuando un paquete malicioso sea removido del registro npm, los proyectos que ya lo instalaron conservarán la versión infectada hasta que se actualicen conscientemente.

Recomendaciones
  1. Auditoría y Disciplina de Desarrollo (Dev)
  • Verificación Exhaustiva: Verificar todas las dependencias npm instaladas, incluidas las dependencias transitivas. Usar herramientas que muestren el árbol completo de dependencias y buscar paquetes desconocidos.
  • Inspección de Scripts: Revisar los scripts postinstall opreinstall en los paquetes nuevos. Bloquear la instalación de paquetes con scripts que realicen tareas inesperadas (leer variables de entorno, conectarse a webhooks).
  • Segmentación de Entornos: Las máquinas de desarrollo deben tener privilegios limitados. Usar perfiles de máquina separados y no almacenar tokens persistentes de producción en la máquina de desarrollo.
  1. Control de Acceso y Pipelines (DevSecOps)
  • Escaneo Automatizado: Integrar escaneo automático en el CI/CD que detecta paquetes con scripts de instalación o dependencias específicas. Crear alertas para nuevas dependencias con baja reputación.
  • Privilegio mínimo: Aplicar políticas de privilegio mínimo en tuberías: los tokens utilizados para publicación de paquetes o CI deben tener permisos mínimos necesarios y ser rotados periódicamente.
  • Auditoría de Mantenedores: Auditar cuentas de mantenedores de dependencias internas. Habilitar Autenticación Multifactor (MFA) en cuentas de mantenimiento de npm y GitHub.
  • Monitoreo de CI/CD: Implementar detección de anomalías en pipelines: alertas cuando un pipeline instala paquetes nuevos, ejecuta scripts desconocidos o crea nuevas acciones de GitHub (indicador de persistencia).

Related Post