Atacantes desconhecidos comprometeram o repositório GitHub do projeto SDK (kit de desenvolvimento de software) da Injective Labs e o utilizaram para publicar um pacote malicioso no registro npm (gerenciador de pacotes do Node.js) com o objetivo de roubar chaves privadas e frases-semente mnemônicas de carteiras de criptomoedas.
A versão comprometida, @injectivelabs/sdk-ts@1.20.21, vinha com uma funcionalidade de telemetria falsa que exfiltrava dados de carteiras de criptomoedas. A versão foi publicada em 8 de julho de 2026, mas desde então foi descontinuada no registro. Ainda assim, os artefatos de release pertencentes à versão comprometida continuam disponíveis para download no GitHub até o momento da publicação.
"A funcionalidade maliciosa foi introduzida no repositório oficial do projeto no GitHub por meio de commits enviados por uma conta pertencente a um desenvolvedor com histórico consolidado de contribuições no repositório", afirmou a Socket em comunicado.
A empresa de segurança da cadeia de suprimentos de software disse que o agente malicioso por trás do ataque também publicou a versão 1.20.21 em outros 17 pacotes do escopo @injectivelabs que dependiam e fixavam a versão maliciosa do SDK, colocando em risco usuários transitivos que talvez não tivessem instalado a biblioteca diretamente. Entre eles estão:
- @injectivelabs/utils
- @injectivelabs/networks
- @injectivelabs/ts-types
- @injectivelabs/exceptions
- @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
O malware presente no pacote é bastante simples e direto, sendo acionado quando a funcionalidade da biblioteca é utilizada por um desenvolvedor desatento. Ao evitar scripts de ciclo de vida e não ser executado durante a fase de instalação, o malware consegue passar despercebido.
Especificamente, descobriu-se que a versão envenenada modifica funções legítimas usadas em fluxos de trabalho para gerar chaves privadas, invocando uma função "trackKeyDerivation()" sob o pretexto de coletar métricas de uso anônimas para otimização do SDK.
"Rastreia quais métodos de derivação de chaves são usados (hexadecimal vs mnemônico) e deriva padrões de tempo para ajudar a equipe do SDK a identificar gargalos de desempenho e entender a adoção de diferentes formatos de chave no ecossistema", diz a descrição da suposta função de telemetria. "Todas as métricas são do tipo 'dispare e esqueça' e nunca bloqueiam ou afetam a derivação de chaves."
Segundo a Socket, os parâmetros passados para a função incluem um marcador codificado que descreve o método usado para gerar a chave privada e as próprias informações sensíveis necessárias para gerá-la. O material capturado é suficiente para que o agente malicioso regenere a chave privada em seu lado.
"O malware adiciona uma lógica de roubo de carteiras cripto a um pacote de carteiras cripto: toda vez que um usuário legítimo cria ou usa a lógica que lê frases mnemônicas — que são basicamente a chave mestra de qualquer carteira cripto —, o malware as lê e as envia para um servidor remoto", afirmou a OX Security em comunicado.
Na tentativa de reduzir o número de requisições de saída, o mecanismo de exfiltração foi projetado para acumular várias derivações de chaves em uma janela de dois segundos em uma única fila e enviá-las em uma única requisição HTTPS POST (método de envio de dados por meio do protocolo seguro de transferência de hipertexto) para um servidor externo ("testnet.archival.chain.grpc-web.injective[.]network") em um único beacon.
A StepSecurity destacou que a publicação maliciosa foi viabilizada por meio do próprio pipeline trusted-publisher (publicador confiável) do repositório, que utiliza o padrão OIDC (protocolo aberto de identidade federada), acrescentando que os commits maliciosos foram criados e enviados sob a identidade de um mantenedor confiável já existente ("thomasRalee").
Usuários que tenham instalado a versão maliciosa devem atualizar para a nova versão limpa do pacote (1.20.23), tratar como comprometidas quaisquer chaves privadas ou frases mnemônicas que tenham sido processadas pelo pacote e trocá-las, além de verificar as dependências transitivas.