
Un atacante desconocido comprometió el repositorio GitHub del proyecto Injective Labs SDK y lo aprovechó para publicar paquetes maliciosos en el registro npm y robar claves privadas de billetera criptográfica y frases iniciales mnemotécnicas.
La versión comprometida @injectivelabs/sdk-ts@1.20.21 incluía una funcionalidad de telemetría falsa que extraía datos de carteras de criptomonedas. Esta versión se lanzó el 8 de julio de 2026, pero desde entonces ha quedado obsoleta en el registro. Dicho esto, al momento de escribir este artículo, los artefactos de lanzamiento que pertenecen a la versión comprometida todavía están disponibles para descargar desde GitHub.
«La funcionalidad maliciosa se introdujo en el repositorio oficial de GitHub del proyecto a través de una confirmación enviada por una cuenta de GitHub que pertenece a un desarrollador con un historial establecido de contribución al repositorio», dijo Socket.
La firma de seguridad de la cadena de suministro de software dijo que los atacantes detrás del ataque también publicaron la versión 1.20.21 en 17 paquetes adicionales con alcance de @injectivelabs que dependían y precisaban la versión maliciosa del SDK, lo que comprometió a los usuarios transitivos que tal vez no hayan instalado la biblioteca directamente. Esto incluye –
@injectivelabs/utils @injectivelabs/networks @injectivelabs/ts-types @injectivelabs/Exception @injectivelabs/wallet-base @injectivelabs/wallet-core @injectivelabs/wallet-cosmos @injectivelabs/wallet-private-key @injectivelabs/wallet-evm @injectivelabs/wallet-trezor @injectivelabs/wallet-cosmostation @injectivelabs/wallet-ledger @injectivelabs/wallet-wallet-connect @injectivelabs/wallet-magic @injectivelabs/wallet-strategy @injectivelabs/wallet-turnkey @injectivelabs/wallet-cosmos-strategy
El malware presente en el paquete es muy simple y directo, y cuando un desarrollador desprevenido utiliza la funcionalidad de la biblioteca, se activa el malware. Omitir los scripts del ciclo de vida y no ejecutarlos durante la etapa de instalación permite que el malware pase desapercibido.
Específicamente, se descubrió que la versión contaminada modifica funciones legítimas utilizadas en flujos de trabajo para generar claves privadas llamando a la función «trackKeyDerivation()» con el pretexto de recopilar métricas de uso anónimas para la optimización del SDK.

Una descripción de la función de telemetría prevista dice: «Rastrea los métodos de derivación de claves utilizados (hexadecimales y mnemotécnicos) y deriva patrones de tiempo que ayudan al equipo del SDK a identificar cuellos de botella en el rendimiento y comprender la adopción de diferentes formatos de claves en todo el ecosistema». «Todas las métricas se activan y olvidan y no bloquean ni afectan la derivación de claves».
Según Socket, los parámetros pasados a la función incluyen el método utilizado para generar la clave privada y un marcador codificado que describe la información confidencial real necesaria para generar la clave privada. El material capturado es suficiente para que un atacante regenere la clave privada.
«Este malware agrega lógica para robar billeteras criptográficas en el paquete de billetera criptográfica. Cada vez que un usuario legítimo crea o usa lógica para leer la frase mnemotécnica, la frase mnemotécnica, que es esencialmente la clave maestra de la billetera criptográfica, es leída por el malware y enviada a un servidor remoto», dijo OX Security.
Para reducir la cantidad de solicitudes salientes, el mecanismo de extracción está diseñado para agregar múltiples derivaciones de claves a una cola en una ventana de 2 segundos y enviarlas en una baliza en forma de una solicitud HTTPS POST a un servidor externo (‘testnet.archival.chain.grpc-web.injective(.)network’).
StepSecurity señaló que la liberación maliciosa se facilitó a través del propio editor confiable (OIDC) del repositorio, y agregó que la confirmación maliciosa se creó y se envió bajo la identidad de un mantenedor confiable existente (‘thomasRalee’).
Se recomienda a los usuarios que hayan instalado la versión maliciosa que actualicen a la versión limpia del paquete recién publicado (1.20.23), traten las claves privadas o frases mnemotécnicas pasadas a través del paquete como comprometidas, las roten y verifiquen si hay dependencias transitivas.
Source link
