Sequestro do pacote npm do Bitwarden CLI: descoberta campanha de roubo em massa de credenciais de desenvolvedores
(research.jfrog.com)A equipe de pesquisa de segurança da JFrog descobriu que a versão 2026.4.0 de @bitwarden/cli no npm foi sequestrada. Mantendo intactos os metadados e a identidade visual legítimos do Bitwarden, apenas o script preinstall e o ponto de entrada do binário bw foram substituídos por um loader malicioso (bw_setup.js).
Como funciona
Durante a instalação, o loader primeiro baixa o runtime Bun do GitHub e depois executa uma carga JavaScript ofuscada (bw1.js). O uso de Bun em vez de Node.js é, por si só, uma estratégia para escapar da detecção.
A carga coleta credenciais de forma ampla em estações de trabalho de desenvolvedores e ambientes de CI por meio de três coletores.
- Coletor de sistema de arquivos: chaves SSH (
~/.ssh/), credenciais do Git (.git-credentials), tokens npm (~/.npmrc),.env, credenciais AWS (~/.aws/credentials), credenciais GCP (~/.config/gcloud/credentials.db) etc. - Coletor de shell/ambiente: execução do comando
gh auth token, varredura deprocess.envpara correspondência de padrões de tokens do GitHub e npm - Coletor do GitHub Actions: injeta workflows em repositórios onde o token tem permissão para extrair até os segredos do Actions
O ponto mais notável é que arquivos de configuração de ferramentas de IA e MCP, como ~/.claude.json, ~/.claude/mcp.json e ~/.kiro/settings/mcp.json, também estão incluídos entre os alvos de coleta.
Caminho duplo de exfiltração
Os dados roubados são comprimidos com gzip e transmitidos após passarem por criptografia híbrida AES-256-GCM + RSA-OAEP.
- Caminho primário: HTTPS POST para
audit.checkmarx.cx/v1/telemetry(disfarçando-se como um serviço de segurança legítimo) - Caminho secundário (abuso do GitHub): se o caminho primário falhar, o malware procura em mensagens de commit do GitHub um PAT codificado em Base64 duplo com o marcador
LongLiveTheResistanceAgainstMachinespara extraí-lo. Com o marcadorbeautifulcastlee verificação de assinatura RSA, ele também recupera dinamicamente um domínio alternativo de exfiltração. Por fim, cria um novo repositório na conta GitHub da vítima e envia o JSON criptografado para o diretórioresults/.
Identificação da infecção
Os metadados legítimos embutidos do Bitwarden CLI são 2026.3.0, mas a raiz do pacote está marcada como 2026.4.0, o que indica que uma camada maliciosa foi aplicada externamente, e não pelo pipeline normal de build.
Como responder
Se houver histórico de instalação dessa versão, deve-se assumir que todas as credenciais daquele host foram comprometidas.
npm uninstall -g @bitwarden/clie limpeza do cache- Rotação completa de GitHub PATs, tokens npm e chaves de acesso AWS
- Verificação dos logs de auditoria do Azure Key Vault / GCP Secret Manager
- Revisão do histórico de execuções não autorizadas em workflows do GitHub Actions
- Bloqueio de rede para
audit.checkmarx.cxe94.154.172.43 - Verificação de eventual exposição de informações sensíveis em arquivos de configuração de ferramentas de IA (Claude, Kiro etc.)
Mais do que um ladrão comum de credenciais npm, trata-se de um ataque sofisticado que combina comprometimento da cadeia de suprimentos, roubo de segredos em múltiplas etapas e uso do GitHub como infraestrutura ofensiva.
4 comentários
Como o slogan do site da empresa me pareceu sem sentido, cancelei minha conta.
Dá até arrepios;; eu usava isso todo dia, e por sorte a parte do Homebrew não foi comprometida.
Nossa… acho que vou ter que remover todas as bibliotecas globais do npm por enquanto, ou então desativar o pre/postinstall.
O Homebrew passou a desativar
postinstallpor padrão e permitir apenas em casos excepcionais. Talvez eu tenha dado sorte; como atualizo pelo tag do repositório sem olhar o npm, essa versão acabou passando batida para mim. Recentemente também entrou o cooldown do npm, então provavelmente, mesmo se eu estivesse olhando para o npm, ela não teria sido distribuída.Uau, isso é bem chocante mesmo