Un paquete NPM malicioso de «B-tree» acumula millones de descargas
Un ataque a la cadena de suministro en el ecosistema NPM ha afectado a un paquete malicioso que logró acumular millones de descargas, de acuerdo con los reportes de Checkmarx. La campaña logró evadir las protecciones actuales de la plataforma al ocultar la activación maliciosa dentro del código de prototipo de JavaScript del paquete, evitando así el uso de un script de instalación que las herramientas de seguridad habrían podido detectar con mayor facilidad.
Para evitar una detección rápida, el responsable detrás de la amenaza decidió no ir tras paquetes muy populares y optó por construir una reputación de confianza mediante la creación de un repositorio en GitHub con apariencia legítima. El paquete malicioso se llama indexed-btree y se hizo pasar por una utilidad legítima de indexación y B-tree llamada sorted-btree, logrando alcanzar una cifra de dos millones de descargas semanales antes de ser detectado gracias a que el atacante creó commits que hacían parecer el proyecto como algo real y legítimo, sin incluir el código dañino en dicho repositorio.
El código malicioso fue colocado de forma oculta en la función principal de la librería, específicamente en el método BTree.prototype.set, el cual activa la primera etapa del malware. Al ejecutarse, el software malicioso recopila datos del sistema para enviarlos a un canal de Slack y a un chat de Telegram específicos, se conecta a un contrato de cadena de bloques desplegado en Sepolia que funciona como centro de comando y control, extrae y descifra la segunda fase desde dicho contrato y finalmente borra sus propios rastros.
Además del paquete ya mencionado, la campaña involucró otros elementos vinculados a la cadena de suministro que sumaban una cantidad considerable de descargas antes de ser eliminados, y el responsable de esta amenaza dinámica con infraestructura resiliente ya había utilizado un contrato inteligente similar en otro paquete anterior, vinculado también a ganancias financieras en criptomonedas.