Um pacote npm aparentemente legítimo roubou tokens de autenticação de desenvolvedores que usam o OpenAI Codex. O malware atingiu mais de 29 mil downloads semanais no npm e mais de 60 mil instalações em apps Android. A tática usada é sofisticada: o código malicioso só foi injetado um mês após a publicação inicial do pacote, enquanto o repositório no GitHub permanecia limpo. O token de refresh roubado não expira — quem o obtém pode se passar pela vítima indefinidamente.

O pacote codexui-android e a emboscada

O pacote codexui-android se apresentava como uma interface web remota para o OpenAI Codex, a ferramenta de engenharia de software da OpenAI. O repositório no GitHub era funcional, com código limpo e desenvolvimento ativo. Nada indicava risco. O pacote foi publicado na conta npm “friuns”, de Igor Levochkin, e atraiu desenvolvedores que queriam acessar o Codex de forma remota.

O golpe aconteceu na versão 0.1.82, cerca de um mês após a primeira publicação. O código malicioso extrai o conteúdo do arquivo ~/.codex/auth.json — que contém o access_token, refresh_token, id_token e o ID da conta — e envia para o servidor sentry.anyclaw[.]store. O domínio foi registrado em 12 de abril de 2026, dois dias depois da primeira versão do pacote subir ao npm, conforme apurou a The Hacker News.

A pesquisa foi conduzida e divulgada por Charlie Eriksen, da Aikido Security. Segundo Eriksen, o refresh_token é o problema central: “Não expira. Quem o obtém pode se passar por você de forma silenciosa e por tempo indeterminado. Vai além do acesso a uma interface de chat — é acesso persistente a tudo que aquela conta pode fazer.”

Ataques via apps Android

A mesma campanha se estendeu para o ecossistema Android. Dois apps publicados por um desenvolvedor chamado “BrutalStrike” na Google Play Store também distribuíam o malware:

App Pacote Downloads
OpenClaw Codex Claude AI Agent gptos.intelligence.assistant 50 mil+
Codex codex.app 10 mil+

A mecânica é engenhosa. O APK tem apenas 26 MB e passa nas verificações de pré-publicação da Google. Na primeira execução, extrai um ambiente Linux derivado do Termux para o armazenamento privado do app, executa Node.js dentro de um sandbox PRoot e puxa a versão mais recente do pacote npm — sem fixar versão. Quando o usuário faz login no Codex dentro do app, o auth.json é gerado e o código malicioso o exfiltra imediatamente para o mesmo servidor sentry.anyclaw.store.

Risco real dos tokens roubados

Um atacante que obtém os tokens roubados tem acesso amplo. Pode ler sessões ativas do Codex da vítima, gastar créditos de API, visualizar projetos e código-fonte privados, e se passar pelo desenvolvedor nos serviços da OpenAI. A Android Headlines destaca que o atacante pode até acessar repositórios conectados e ambientes de CI/CD que o desenvolvedor usa junto com o Codex.

O problema se agrava porque a própria OpenAI recomenda tratar o auth.json como um arquivo sensível. A instrução da empresa é clara: não faça commit, não cole em tickets e não compartilhe em chats. Mas o pacote malicioso faz exatamente isso — rouba o arquivo sem que o desenvolvedor perceba.

A falha na revogação do Google

A mesma investigação da Aikido Security revelou outro problema sério: chaves de API do Google que são deletadas permanecem ativas por até 23 minutos (mediana de 16 minutos). Joe Leon, também da Aikido, explicou que um atacante com uma chave deletada continua enviando requisições até que todos os servidores do Google sincronizem a revogação. Se o Gemini estiver habilitado no projeto, o atacante pode dumps de arquivos e conversas em cache.

O Google classificou inicialmente o comportamento como “propriedade conhecida” e não como vulnerabilidade. Após a divulgação, reclassificou como bug P0 — prioridade máxima que exige correção imediata. Um paralelo direto existe com chaves de acesso da AWS, que apresentam janela de exploração de 4 segundos após a deleção.

Como se proteger

Desenvolvedores que instalaram o codexui-android via npm ou os apps Android mencionados precisam agir imediatamente. A primeira ação é revogar os tokens do Codex nas configurações da conta OpenAI e gerar novos credenciais. Depois, verificar se há atividade incomum nos logs de uso da API — consumo atípico de créditos pode indicar exploração ativa.

Para prevenção futura, as recomendações são:

  • Fixar versões nos arquivos package.json e package-lock.json para evitar atualizações silenciosas de pacotes maliciosos.
  • Auditar dependências com ferramentas como npm audit, Socket.dev ou Snyk antes de instalar pacotes novos.
  • Verificar diffs entre o repositório GitHub e o pacote npm — discrepâncias são sinal de alerta.
  • Tratar arquivos de autenticação como senhas em texto puro. Nunca permitir que pacotes de terceiros acessem ~/.codex/ ou equivalentes.
  • Desconfiar de pacotes com crescimento rápido e pouca história — crescimento orgânico raro em ecossistemas de código aberto maduros.

O mesmo padrão de ataques supply chain contra o npm que afetaram Daemon Tools e outros projetos agora atinge desenvolvedores de IA. A campanha do IronWorm mostrou que o ecossistema de pacotes JavaScript segue sob pressão constante.

O padrão dos ataques à cadeia

Ataques de supply chain no ecossistema JavaScript/NPM seguem um roteiro que se repete com variações. O atacante publica um pacote funcional, acumula usuários e credibilidade por semanas ou meses, e depois injeta código malicioso em uma atualização. O repositório GitHub permanece limpo, o que dificulta a detecção por revisões de código tradicionais.

No caso do codexui-android, o detalhe do domínio registrado dois dias antes do primeiro upload do pacote e o endpoint de exfiltração disfarçado de Sentry são indicadores de planejamento deliberado. Quando confrontado, o autor alegou perda de acesso à conta npm e disse estar “removendo a funcionalidade afetada” — mas não explicou por que o código malicioso existia apenas no build do npm e por que tokens do Codex precisavam ser acessados.

Referências