Investigadores de seguridad han identificado una operación de malware en npm que evita las protecciones más recientes durante la instalación al incluir su funcionalidad maliciosa dentro de código de paquetes ordinario que se ejecuta solo después de que una aplicación comienza a utilizar la biblioteca.
La campaña se centra en un paquete llamado indexed-btree, que, según investigadores de Checkmarx, fue diseñado para parecerse al proyecto legítimo sorted-btree. Según los informes, el paquete acumuló aproximadamente 2 millones de descargas semanales antes de su eliminación o investigación, lo que ilustra el alcance potencial del typosquatting y de las dependencias similares en las cadenas de suministro de software.
Un activador en tiempo de ejecución evita los controles de scripts del ciclo de vida
Los controles de seguridad recientes de npm restringen los scripts del ciclo de vida de las dependencias, incluidos los hooks preinstall, install y postinstall, a menos que los usuarios los aprueben explícitamente. Estas medidas buscan reducir el riesgo de que código malicioso se ejecute en cuanto se instala un paquete.
Según Checkmarx, el paquete malicioso no utilizaba esos hooks. En su lugar, su cargador estaba incrustado en la función BTree.prototype.set() de la biblioteca. El código se activa durante la actividad normal en tiempo de ejecución cuando se llama al método con una clave determinada, lo que permite que el paquete parezca benigno durante la instalación y potencialmente evita los escáneres centrados en scripts del ciclo de vida.
Una vez activado, el malware puede recopilar información del dispositivo y del sistema, como el nombre de host, la arquitectura del procesador, la memoria, el tiempo de actividad y detalles de la CPU. Los investigadores indicaron que los datos podrían enviarse a través de infraestructura de Slack y Telegram codificada de forma fija.
Según los informes, la carga útil también utiliza un contrato inteligente de la red de prueba Ethereum Sepolia como parte de su proceso de comando y control. Recupera información necesaria para derivar una clave de cifrado y, posteriormente, descifra una carga útil de una fase posterior. Checkmarx indicó que el malware incluye capacidades de limpieza que pueden eliminar archivos y retirar el activador inyectado cuando los operadores deciden finalizar una operación.
Identificado un clúster más amplio de paquetes
Los investigadores vincularon otros nueve paquetes npm con la misma actividad, entre ellos btree-core, ordered-kv-index, btree-leaderboard, priority-slot-queue y btree-range-store. Varios registraban cantidades considerables de descargas. La operación también utilizó una presencia pulida en GitHub, incluido un perfil de desarrollador cuidadosamente elaborado y un historial de commits aparentemente fabricado, para reforzar su legitimidad.
Los desarrolladores deben revisar los inventarios de dependencias en busca de los nombres de paquetes identificados, rotar las credenciales potencialmente expuestas y reconstruir, cuando corresponda, los entornos de desarrollo afectados a partir de copias de seguridad de confianza. El incidente también subraya la necesidad de supervisión del comportamiento y revisión de código, más allá del análisis realizado únicamente durante la instalación.
