Un equipo de investigación de amenazas de la empresa Socket ha identificado una campaña de ataque a la cadena de suministro que se atribuye a actores norcoreanos. Esta actividad está relacionada con la campaña denominada «Contagious Interview». Los atacantes emplean paquetes NPM con errores tipográficos y técnicas de ingeniería social para comprometer a desarrolladores e ingenieros de software en busca de empleo.
Paquetes maliciosos y su distribución
Se han publicado 35 paquetes NPM maliciosos utilizando 24 cuentas. Seis de estas cuentas siguen activas al momento del informe, entre ellas se incluyen react-plaid-sdk, sumsub-node-websdk y vite-loader-svg. En conjunto, estos paquetes han sido descargados más de 4.000 veces.
Estructura del malware
Cada paquete contiene un cargador JavaScript malicioso denominado HexEval. Socket describe su función como sigue: «HexEval recopila metadatos del host, decodifica su script de seguimiento y, al activarse, obtiene y ejecuta BeaverTail, el malware de segunda etapa que roba información y está vinculado a los atacantes de la República Popular Democrática de Corea (RPDC)».
La estructura del malware en capas (HexEval → BeaverTail → InvisibleFerret) evita análisis estáticos y deja poca evidencia forense en el registro NPM.
Ingeniería social y reclutamiento falso
La campaña comienza con una ingeniería social convincente. Los atacantes se hacen pasar por reclutadores en LinkedIn, ofreciendo empleos lucrativos a desarrolladores (por ejemplo, entre 16.000 y 25.000 dólares al mes). Se les entrega tareas de código que incluyen paquetes maliciosos, instando a las víctimas a ejecutarlos fuera de entornos contenedorizados mientras comparten la pantalla.
Se contacta a las víctimas con ofertas de trabajo lucrativas, instruyendo a los desarrolladores de blockchain a interactuar con un repositorio de Bitbucket como parte de un proceso de reclutamiento falso.
Funcionamiento del malware
Una vez ejecutado el código, HexEval transmite datos del entorno a un servidor C2 y obtiene BeaverTail, un malware de segunda etapa que ataca las cookies del navegador, los datos de IndexedDB, los monederos de criptomonedas y los archivos de llavero de macOS.
BeaverTail escanea los sistemas de archivos locales, incluyendo perfiles de Brave, Chrome y Opera. Intenta extraer archivos como el id.json de Solana y los datos del monedero de Exodus.
El malware se adapta dinámicamente a los hosts de Windows, macOS y Linux. En algunos casos, también se implementa una puerta trasera de tercera etapa, InvisibleFerret.
Características adicionales
Varios paquetes contienen scripts de reconocimiento que identifican el host. En el caso de jsonsecs, también se integró un keylogger multiplataforma que se conecta a las funciones de entrada del sistema operativo para capturar las pulsaciones de teclas en tiempo real.
«El paquete jsonsecs incluye binarios nativos compilados… lo que permite la exfiltración o la vigilancia en tiempo real por parte de los actores de amenazas».
Cambio en el enfoque de la campaña
Socket observa un cambio de la infección directa de malware a un enfoque modular de recuperación bajo demanda mediante HexEval. Esto dificulta la detección y retrasa la ejecución de las cargas útiles hasta que se cumplen las condiciones de tiempo de ejecución.
Socket advierte: «La campaña sigue activa y prevemos que aparezcan más paquetes maliciosos».
Recomendaciones para desarrolladores
- Avoidar instalar paquetes npm desde cuentas desconocidas o sospechosas.
- Utilizar entornos aislados o en contenedores para ejecutar código desconocido.
- Comprobar si hay errores tipográficos e inspeccionar el código fuente de las dependencias.
- Utilizar herramientas automatizadas de seguridad de la cadena de suministro que detecten anomalías basadas en el comportamiento.