En una investigación muy detallada, el equipo de investigación de amenazas de la empresa Socket ha descubierto un ataque continuo y altamente selectivo a la cadena de suministro, atribuido a actores norcoreanos, que se cree está vinculado a la campaña "Contagious Interview". Los atacantes utilizan paquetes NPM con errores tipográficos y sofisticada ingeniería social para comprometer a desarrolladores e ingenieros de software que buscan empleo.
Los atacantes han publicado 35 paquetes NPM maliciosos utilizando 24 cuentas, seis de las cuales siguen activas al momento del informe, incluyendo react-plaid-sdk, sumsub-node-websdk y vite-loader-svg. En conjunto, estos paquetes se han descargado más de 4.000 veces.
Cada paquete contiene un cargador de JavaScript malicioso con codificación hexadecimal conocido como HexEval. Socket describe su función: "HexEval Loader 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)".
Esta estructura de malware en capas (HexEval → BeaverTail → InvisibleFerret) evade los análisis de código estático y deja poco rastro forense en el registro NPM.
La campaña comienza con ingeniería social convincente. Operativos norcoreanos se hacen pasar por reclutadores en LinkedIn y atraen a desarrolladores con ofertas de trabajo lucrativas (por ejemplo, de 16.000 a 25.000 dólares al mes). Los atacantes entregan tareas de código con paquetes maliciosos integrados, instando a las víctimas a ejecutarlas 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.
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, datos de IndexedDB, monederos de criptomonedas y 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.
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".
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".
Recomiendan a los desarrolladores:
- Evitar 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.