O malware PhantomRaven mostra como a combinação entre inteligência artificial e ataques à cadeia de suprimentos de software pode criar novas formas de comprometer ambientes de desenvolvimento. Identificado pela CrowdStrike em uma operação associada a um suposto caçador de recompensas por bugs, o código foi distribuído por pacotes maliciosos do npm e projetado para coletar informações de sistemas e ambientes de CI/CD. A empresa avalia, com alto nível de confiança, que o ladrão de informações foi desenvolvido com auxílio de um modelo de linguagem de grande escala (LLM).
O caso chama atenção porque o objetivo identificado não parece ter sido simplesmente roubar dados para revendê-los. Segundo a investigação, o operador utilizava as informações obtidas para encontrar possíveis vulnerabilidades em organizações e buscar recompensas em programas legítimos de bug bounty. A atividade, portanto, mistura técnicas de comprometimento de software com uma tentativa de transformar acessos obtidos de forma indevida em oportunidades de recompensa.
A campanha também expõe um problema maior para desenvolvedores: uma dependência aparentemente inofensiva pode introduzir código remoto, executar comandos durante a instalação e acessar tokens, credenciais e variáveis de ambientes de integração contínua.
Como funciona o malware PhantomRaven no npm
O PhantomRaven foi distribuído por meio de pacotes npm que apresentavam código aparentemente simples e inofensivo. Em alguns casos analisados pela CrowdStrike, os pacotes continham apenas uma pequena aplicação JavaScript, mas declaravam uma dependência hospedada em uma URL externa controlada pelo atacante.
Essa arquitetura permitia separar o código visível no pacote do payload malicioso. A Koi Security identificou uma campanha relacionada com 126 pacotes maliciosos e mais de 86 mil downloads, destacando o uso de dependências remotas que ficavam fora da visualização convencional do npm.
Na prática, isso significa que analisar somente o conteúdo exibido na página de um pacote pode não ser suficiente para determinar o que será executado durante uma instalação.

Técnicas de typosquatting e dependência dinâmica remota
Uma das técnicas utilizadas foi o typosquatting, que consiste em registrar nomes semelhantes aos de projetos ou bibliotecas que desenvolvedores podem procurar ou digitar por engano.
O PhantomRaven combinava essa abordagem com as chamadas Remote Dynamic Dependencies (RDD), ou dependências dinâmicas remotas. Em vez de apontar diretamente para outro pacote convencional do registro npm, o projeto podia especificar uma dependência por meio de uma URL HTTP.
Durante a instalação, o npm buscava o conteúdo nessa infraestrutura externa. A Koi Security observou que esse comportamento fazia com que determinados pacotes aparentassem ter zero dependências na interface do npm, embora uma dependência maliciosa fosse obtida posteriormente.
Esse mecanismo cria uma dificuldade adicional para ferramentas de análise estática. O conteúdo que o desenvolvedor examina no repositório pode não ser exatamente o mesmo conteúdo que será baixado no momento da instalação.
O ataque ainda aproveitava os scripts de ciclo de vida do npm. O payload identificado pela CrowdStrike utilizava um script preinstall, capaz de iniciar a execução do código durante o processo de instalação.
Existe, porém, uma mudança importante no npm. A partir da versão 12, o gerenciador passou a restringir a execução automática de determinados scripts de instalação de dependências. Quando um preinstall é bloqueado, o desenvolvedor recebe uma indicação de que precisa revisar e autorizar explicitamente sua execução.
A campanha também apresenta uma relação interessante com o uso de IA. A Koi Security apontou exemplos de nomes que podem ser associados ao fenômeno conhecido como slopsquatting, no qual nomes plausíveis, mas inexistentes, sugeridos por ferramentas de IA podem ser registrados por criminosos antes que um desenvolvedor os utilize.
Isso cria um novo elo entre assistentes de programação e segurança da cadeia de suprimentos: uma recomendação incorreta de pacote pode deixar de ser apenas um erro de desenvolvimento e se transformar em um vetor de infecção quando alguém registra deliberadamente aquele nome.
Quais dados o malware PhantomRaven conseguia extrair
O PhantomRaven é classificado pela CrowdStrike como um information stealer, ou ladrão de informações. Seu código coleta dados do sistema e procura principalmente informações relacionadas a ambientes de desenvolvimento e CI/CD.
Entre os dados coletados estão:
- Sistema operacional e arquitetura;
- Hostname e informações de rede;
- Endereço IP local e externo;
- Diretório de trabalho;
- Identificador do processo;
- Versão do Node.js;
- Argumentos utilizados na linha de comando;
- Informações de usuário e e-mail presentes em configurações do Git e npm;
- Variáveis de ambiente relacionadas a GitHub Actions, GitLab CI, Jenkins e CircleCI.
Essas variáveis podem revelar informações sobre projetos, servidores e execuções de pipelines. Dependendo da configuração do ambiente, também podem conter tokens, chaves de API e outras credenciais.
O malware enviava os dados coletados para sua infraestrutura usando requisições HTTP GET e POST. O código também continha uma implementação incompleta de comunicação por WebSocket, com um endereço apresentado como placeholder, o que reforça a avaliação da CrowdStrike de que o malware não era tecnicamente sofisticado.
O perigo, portanto, não está apenas na quantidade de informações roubadas. Um único segredo de CI/CD com permissões excessivas pode fornecer acesso a repositórios privados, sistemas de compilação, registros de pacotes ou infraestrutura de produção.
O uso de inteligência artificial na criação do código malicioso
A análise da CrowdStrike indica com alto nível de confiança que o código do PhantomRaven foi produzido com auxílio de um LLM. A conclusão foi baseada em padrões estatísticos dos tokens utilizados no código, além de características estruturais consideradas compatíveis com geração por modelos de linguagem.
Um dos indícios está na quantidade de comentários extremamente detalhados e redundantes. O código possui comentários antes de diversas variáveis e funções, inclusive em situações nas quais o próprio nome da função já deixa clara sua finalidade.
Também foram encontrados placeholders e funcionalidades incompletas, incluindo o mecanismo alternativo de comunicação por WebSocket. Esses elementos são compatíveis com código produzido por um modelo de linguagem sem uma etapa posterior de revisão técnica aprofundada.
O ponto mais importante é que a utilização de IA não significa necessariamente que o malware seja avançado. A CrowdStrike considera o PhantomRaven relativamente simples e avalia que o operador apresenta baixo nível de sofisticação técnica.
A vantagem proporcionada pelo LLM está principalmente na redução da barreira técnica. Um indivíduo pode utilizar inteligência artificial para gerar funções, adaptar código, corrigir erros e montar rapidamente diferentes componentes de uma ferramenta maliciosa.
Para o ecossistema de segurança, isso representa uma mudança relevante. O problema não é apenas o surgimento de malware mais complexo, mas a possibilidade de que mais pessoas consigam produzir ferramentas funcionais em menos tempo.
A ética distorcida do bug bounty e o risco para o ecossistema Open Source
Segundo a CrowdStrike, o operador do PhantomRaven se apresenta como bug hunter e teria recebido recompensas de pelo menos nove organizações por meio de plataformas conhecidas de bug bounty, incluindo HackerOne, Bugcrowd, Intigriti, YesWeHack e outras.
A empresa afirma não ter observado os logs do PhantomRaven sendo comercializados em lojas de dados roubados. Isso levou os pesquisadores a avaliar que o operador provavelmente utilizava as informações obtidas para identificar oportunidades de recompensa por vulnerabilidades.
Essa distinção é importante. Programas legítimos de bug bounty estabelecem escopo, regras e métodos autorizados de teste. Comprometer deliberadamente uma máquina por meio de um pacote malicioso e utilizar as informações obtidas para procurar vulnerabilidades não equivale a realizar um teste autorizado.
A atividade também não ficou restrita ao npm. A CrowdStrike encontrou evidências de uma ferramenta semelhante desenvolvida em Python e relacionada ao PyPI. Um projeto associado ao operador chegou a ser removido após questionamentos sobre suas características e sobre as regras da plataforma para nomes de projetos.
Isso demonstra que o risco da cadeia de suprimentos não pertence exclusivamente ao JavaScript. npm, PyPI e outros repositórios de código aberto dependem de mecanismos de confiança que podem ser explorados por nomes enganosos, dependências comprometidas e pacotes publicados por contas maliciosas.
Conclusão e medidas de proteção para desenvolvedores
O malware PhantomRaven no ecossistema npm combina várias técnicas que, individualmente, não são novas, mas tornam-se perigosas quando utilizadas em conjunto: typosquatting, dependências remotas, scripts de instalação e roubo de informações de CI/CD.
O caso também mostra que a inteligência artificial está se tornando parte da realidade operacional dos ataques. A CrowdStrike avalia que criminosos continuarão incorporando ferramentas geradas por IA porque elas podem diminuir barreiras técnicas e acelerar a criação de código malicioso.
Para os desenvolvedores, algumas medidas podem reduzir significativamente a exposição. A CrowdStrike recomenda considerar o uso de registros npm privados, restringir a execução de scripts de instalação, manter o npm atualizado, educar as equipes sobre ataques de dependency confusion e utilizar ferramentas como npm audit para identificar vulnerabilidades conhecidas.
Também é fundamental aplicar o princípio do menor privilégio aos ambientes de CI/CD. Tokens e chaves disponíveis como variáveis de ambiente devem possuir somente as permissões necessárias e ser revogados ou substituídos diante de qualquer suspeita de comprometimento.
Outra medida importante é revisar cuidadosamente as recomendações feitas por assistentes de programação baseados em IA. Um nome de pacote sugerido por um chatbot não deve ser tratado como uma confirmação de que aquele projeto existe ou é confiável. A origem, o mantenedor, a atividade do projeto e suas dependências precisam ser verificadas antes da instalação.
O PhantomRaven deixa, portanto, uma lição importante para o desenvolvimento moderno: a confiança em uma dependência precisa ser verificada, não presumida. Em ambientes onde uma simples instalação pode ter acesso a credenciais de produção, cada pacote de terceiros deve ser tratado como parte da superfície de ataque.