Se ha identificado una campaña de software malicioso distribuida a través del registro de paquetes npm. La campaña utiliza 10 paquetes que suplantan la identidad de bibliotecas legítimas y populares (typosquatting) para desplegar un info-stealer (ladrón de información) avanzado.

El payload malicioso está diseñado para operar en múltiples plataformas, incluyendo Windows, macOS y Linux, con el objetivo específico de extraer credenciales sensibles de los entornos de desarrollo. Los paquetes, subidos el 4 de julio de 2025, acumularon más de 9,900 descargas antes de su detección.

Paquetes Maliciosos Identificados

La campaña se basa en los siguientes 10 paquetes, que imitan nombres de herramientas conocidas como discord.js, ethers.js, nodemon, typescript, react-router-dom y zustand:

  • deezcord.js
  • dezcord.js
  • dizcordjs
  • etherdjs
  • ethesjs
  • ethetsjs
  • nodemonjs
  • react-router-dom.js
  • typescriptjs
  • zustand.js

Vector de Infección y Metodología de Ataque

La operación se ejecuta en múltiples etapas y emplea técnicas de ofuscación y evasión diseñadas para ocultar su actividad al desarrollador.

1. Fase de Infección y Ejecución Inicial: El vector de entrada es la instalación del paquete por parte del desarrollador. El ataque se activa automáticamente tras la instalación mediante un script postinstall definido en el package.json. Este hook ejecuta un archivo install.js.

2. Evasión de Detección (Terminal Independiente): El script install.js realiza una detección del sistema operativo. Su táctica de evasión principal consiste en iniciar un nuevo proceso de terminal independiente del proceso de instalación de npm:

  • Windows: Lanza una nueva ventana de Command Prompt.
  • Linux: Utiliza GNOME Terminal o x-terminal-emulator.
  • macOS: Abre una nueva instancia de Terminal.

El malware limpia inmediatamente esta nueva ventana de terminal para evitar la inspección visual, permitiendo que el payload se ejecute de forma desacoplada y sigilosa.

3. Ofuscación y Decepción: El script install.js invoca un payload secundario, app.js, que está protegido por cuatro capas de ofuscación. Estas técnicas incluyen cifrado XOR con claves generadas dinámicamente, codificación URL del payload y el uso de aritmética hexadecimal y octal para oscurecer el flujo del programa y dificultar el análisis estático.

Mientras el payload ofuscado se ejecuta, el malware emplea dos técnicas de decepción en la terminal original del desarrollador:

  1. Salida Legítima Falsificada: Imprime un resultado de instalación que imita al paquete legítimo suplantado.
  2. Señuelo de CAPTCHA: Muestra un falso prompt de CAPTCHA para añadir una capa de aparente legitimidad.

4. Despliegue del Payload Final (Stealer): En segundo plano, el script realiza un fingerprinting de la víctima (capturando la dirección IP) y lo comunica a un servidor de Comando y Control (C2) en 195.133.79[.]43. Posteriormente, descarga el info-stealer principal, un ejecutable de 24MB llamado data_extracter y empaquetado con PyInstaller.

Análisis del Payload y Objetivos de Exfiltración

El info-stealer data_extracter está diseñado para una recolección exhaustiva de secretos del entorno de desarrollo.

Objetivo Primario: System Keyrings (Llaveros del Sistema) A diferencia de los stealers convencionales, este malware se enfoca en el almacén de credenciales nativo del sistema operativo. Utiliza la biblioteca keyring de npm para implementar rutinas específicas de cada plataforma y extraer credenciales en su forma descifrada.

Al atacar el keyring directamente, el malware elude la seguridad a nivel de aplicación y obtiene acceso a:

  • Credenciales de clientes de correo (Outlook, Thunderbird).
  • Tokens de herramientas de sincronización en la nube (Dropbox, Google Drive, OneDrive).
  • Configuraciones y contraseñas de conexiones VPN (Cisco AnyConnect, OpenVPN).
  • Frases de contraseña de claves SSH.
  • Cadenas de conexión a bases de datos.
  • Credenciales almacenadas por gestores de contraseñas integrados.

Además, el stealer recolecta cookies de sesión de navegadores, archivos de configuración y tokens de autenticación. La información recopilada se comprime en un archivo ZIP y se exfiltra al servidor C2.

El impacto de esta exfiltración es severo, ya que proporciona a los atacantes acceso directo a redes corporativas, almacenamiento en la nube, bases de datos de producción e infraestructura interna.

Contención y Remediación Recomendadas

Refuerzo de Políticas: Se debe reforzar la obligatoriedad del uso de herramientas de auditoría de seguridad (ej. npm audit) y considerar políticas más estrictas para la ingesta de dependencias de terceros.

Auditoría de Dependencias: Se recomienda a las organizaciones auditar de inmediato sus entornos de desarrollo, integración continua (CI/CD) y archivos package-lock.json para detectar la presencia de cualquiera de los 10 paquetes maliciosos listados.

Respuesta a Incidentes: Cualquier máquina donde se haya instalado uno de estos paquetes debe considerarse comprometida.

Rotación de Credenciales: Es imperativa la rotación inmediata de todas las credenciales y secretos almacenados en los system keyrings de los sistemas afectados, incluyendo claves SSH, tokens de API, contraseñas de bases de datos y accesos a VPN.

Bloqueo de Red (IoC): Se debe implementar el bloqueo a nivel de red (firewall) del siguiente Indicador de Compromiso:

Servidor C2 (IP): 195.133.79[.]43

Refuerzo de Políticas: Se debe reforzar la obligatoriedad del uso de herramientas de auditoría de seguridad (ej. npm audit) y considerar políticas más estrictas para la ingesta de dependencias de terceros.

Fuente: thehackernews[.]com