Ataque à cadeia de suprimentos no pacote npm @subql/common: Análise e Resposta Urgente
Aprofundamento CEVIU
Aprofundamento
Um ataque sofisticado à cadeia de suprimentos comprometeu a versão 5.8.3 do pacote npm @subql/common, explorando o pipeline de CI/CD do GitHub Actions. O invasor manipulou o arquivo .github/workflows/publish.yml do repositório subquery/subql, substituindo o pacote legítimo por uma versão maliciosa baixada externamente. Esta versão foi então publicada via GitHub Actions OIDC (Trusted Publisher), dificultando a distinção de um lançamento oficial.
O código malicioso incluía um script postinstall, que, ao rodar npm install, acionava um carregador ofuscado chamado manifest-cache.js. Este carregador, disfarçado de classe legítima, decodificava e executava um payload multifuncional. O malware agia como um infostealer, visando credenciais de ambientes AWS, GitHub, Kubernetes e Vault, além de tentar exfiltrar dados sensíveis de arquivos como chaves SSH, .env e configurações de criptomoedas. Também estabelecia comunicação com um servidor de Comando e Controle (C2) para execução de comandos de reverse shell e daemonizava-se para persistência. Notavelmente, ele realizava chamadas de API legítimas usando AWS Signature V4, tornando-o ainda mais difícil de detectar.
O que mudou
A cobertura anterior do CEVIU News mostrou a crescente frequência e complexidade dos ataques à cadeia de suprimentos de software. Incidentes como os do worm Shai-Hulud e ataques contra pacotes npm como Keyv e indexed-btree, alertavam sobre a vulnerabilidade de dependências e a evasão de defesas. Este ataque ao @subql/common, porém, eleva o nível da sofisticação: ele compromete diretamente o processo de CI/CD, publicando o pacote malicioso via GitHub Actions OIDC, o que torna a versão comprometida quase indistinguível de uma legítima. Isso mostra que a simples verificação de proveniência, que era um avanço, não basta quando a própria pipeline é alvo.
Em resposta a essas táticas evoluídas, as recomendações de segurança também se aprofundaram. Além de desabilitar scripts de ciclo de vida (como postinstall), o artigo-fonte, em concordância com a linha editorial do CEVIU, aponta para a necessidade de defesas em camadas. A configuração de um período de carência para dependências (min-release-age no .npmrc) e o uso de proxies de segurança como o Takumi Guard, que inspecionam pacotes recém-publicados, tornaram-se passos cruciais. É uma clara evolução das táticas de defesa, focando em mais controles de tempo e inspeção proativa para combater vetores de ataque mais complexos que subvertem até mesmo a própria proveniência.
Por que isso importa
Este incidente ressalta a vulnerabilidade crítica da cadeia de suprimentos de software, afetando diretamente a confiança em componentes de código aberto. A manipulação do fluxo de trabalho de CI/CD para injetar um backdoor via GitHub Actions OIDC é alarmante, pois explora canais que deveriam garantir a autenticidade e integridade dos pacotes. Isso significa que mesmo pipelines bem configurados e o uso de “publishers confiáveis” podem ser subvertidos se o repositório-fonte for comprometido.
Para empresas e desenvolvedores, o impacto é grave: a exfiltração de credenciais de ambientes sensíveis como AWS, GitHub, Kubernetes e Vault pode levar a uma completa tomada de controle da infraestrutura de nuvem e dos sistemas de desenvolvimento. Isso pode resultar em vazamento de dados, interrupção de serviços e perdas financeiras significativas, tornando a mitigação e a implementação de defesas em múltiplas camadas uma prioridade urgente para proteger a integridade de seus sistemas.
Linha do tempo
Ataque de cadeia de suprimentos npm com características de worm rouba tokens de autenticação.
Pacote npm <code>node-ipc</code> comprometido para roubar credenciais via infostealer ofuscado.
Ataque "TrapDoor" contamina 34 pacotes em npm, PyPI e Crates.io, roubando chaves SSH e credenciais de nuvem.
Ataque à cadeia de suprimentos compromete imagens Docker e extensões VS Code do Checkmarx KICS.
Worm Shai-Hulud compromete mais de 1.280 pacotes npm, incluindo Keyv, via injeção de commits maliciosos.
Pacote malicioso 'indexed-btree' burla defesas do npm v12 ocultando carregador no método BTree.prototype.set().
Ataque à cadeia de suprimentos npm <code>@subql/common</code> injeta backdoor e exfiltra credenciais via GitHub Actions comprometido.
Perguntas frequentes
O que é um ataque de cadeia de suprimentos npm?
Um ataque de cadeia de suprimentos npm ocorre quando um invasor insere código malicioso em um pacote legítimo ou em seu processo de publicação. Isso faz com que desenvolvedores que instalam o pacote acabem com malware em seus sistemas, explorando a confiança na cadeia de dependências.
Como o backdoor foi inserido no pacote @subql/common?
O invasor obteve acesso de push ao repositório GitHub do SubQuery e modificou o workflow de CI/CD (.github/workflows/publish.yml). Essa alteração permitiu que um pacote malicioso externo fosse baixado e usado para substituir a versão legítima, que foi então publicada no npm via GitHub Actions OIDC.
Quais credenciais foram alvo do ataque?
O malware foi projetado para roubar credenciais de ambientes AWS (chaves de acesso, tokens de sessão), GitHub (tokens PATs, GITHUB_TOKEN), Kubernetes e Vault. Além disso, mirava arquivos sensíveis como chaves SSH, arquivos .env e configurações de carteiras de criptomoedas.
Quais são as ações imediatas para mitigar a infecção?
É crucial reverter para a versão 5.8.2 do pacote @subql/common imediatamente. Além disso, todas as credenciais potencialmente comprometidas (AWS, GitHub, Kubernetes, Vault) devem ser revogadas e rotacionadas. Também é necessário verificar e encerrar qualquer processo remanescente de manifest-cache.js --warm.
Fontes
- flatt.techfonte original
- Categoria
- CEVIU Segurança da Informação
- Publicado
- 08 de outubro de 2026
- Editoria
- CEVIU Segurança da Informação

