Los investigadores de seguridad advierten que un nuevo tipo de ataque está utilizando silenciosamente contratos inteligentes de Ethereum como un canal de comando y control (C2), ocultando malware en paquetes npm JavaScript aparentemente inofensivos, dirigidos específicamente a las computadoras de los desarrolladores. Este método no solo aumenta la dificultad de rastrear y eliminar, sino que también aprovecha la inmutabilidad y la transparencia de la cadena de bloques, lo que hace que sea más difícil para la parte defensora bloquearlo.
ReversingLabs ha descubierto que dos paquetes de npm llamados colortoolsv2 y mimelib2 leen contratos inteligentes específicos en Ethereum para obtener la URL de un descargador malicioso de segunda etapa, en lugar de codificar la infraestructura en los paquetes.
Este diseño reduce la posibilidad de detección estática y deja menos pistas en la revisión del código. Aunque las descargas de estos dos paquetes son extremadamente bajas (7 y 1, respectivamente), su enfoque de ataque representa una amenaza significativa para la seguridad de la cadena de suministro.
La investigación muestra que la promoción de estos paquetes de malware proviene de una red de repositorios de GitHub disfrazados como robots de trading, como solana-trading-bot-v2.
Los atacantes inducen a los desarrolladores a instalar dependencias maliciosas sin darse cuenta, a través de estrellas falsas, historial de envíos exagerado y cuentas de mantenedores títeres.
Este método es similar al ataque de registro de dominio npm a finales de 2024, cuando cientos de paquetes consultaban contratos inteligentes de Ethereum durante la fase de instalación, obteniendo la URL base y luego descargando ejecutables maliciosos para Windows, Linux y macOS.
La empresa de seguridad Checkmarx y Phylum descubrieron que la dirección del contrato central utilizada por los atacantes es 0xa1b40044EBc2794f207D45143Bd82a1B86156c6b, y a través de ethers.js invocaron getString(address) para obtener la dirección del servidor C2 más reciente.
Estos nodos C2 incluyen 45.125.67.172:1337 y 193.233.201.21:3001, que cambiarán con el tiempo para evitar bloqueos.
Debido a que los datos de los contratos inteligentes no se pueden modificar, este tipo de almacenamiento en la cadena es más difícil de eliminar que los Gist de GitHub tradicionales o el almacenamiento en la nube.
Los expertos sugieren que el equipo de desarrollo debe habilitar el parámetro --ignore-scripts en la instalación de npm y en el proceso de CI para evitar la ejecución automática de scripts de ciclo de vida maliciosos, y asegurar la versión de los paquetes mediante archivos de bloqueo.
Al mismo tiempo, se deben bloquear las IP maliciosas conocidas y las direcciones de contratos en el firewall o en un proxy de seguridad, y monitorear las llamadas sospechosas a getString(address) en los registros de construcción.
La guía de seguridad oficial de Node.js también recomienda realizar una revisión más estricta de la identidad de los mantenedores y los metadatos de los paquetes para reducir el riesgo de ataques a la cadena de suministro.
Aunque el impacto en la cantidad de descargas de este incidente no fue grande, revela un patrón de ataque más encubierto y difícil de defender: utilizar la Cadena de bloques como un canal de comando persistente, combinando ingeniería social y la infiltración de la cadena de suministro de código abierto, lo que representa una amenaza a largo plazo para desarrolladores y empresas. En el futuro, la combinación de malware en cadena y ataques de cadena de suministro tradicionales podría convertirse en la nueva norma en el campo de la ciberseguridad.