
A campanha combinou crates falsos no registro Rust, abuso de fluxos do GitHub Actions e uma extensão comprometida do Trivy para coletar variáveis, tokens e informações locais em ambientes de desenvolvimento.
| Componente | Cinco crates Rust publicados no crates.io como utilitários de tempo, o repositório aquasecurity/trivy, fluxos do GitHub Actions e a extensão Trivy para Visual Studio Code no Open VSX. |
| Vetor | Dependências Rust falsas que coletavam arquivos .env quando executadas e exploração de workflows pull_request_target em CI/CD para obter credenciais de publicação ou automação. |
| Impacto | Exfiltração de segredos de ambiente, roubo de um Personal Access Token, tomada de controle do repositório Trivy e publicação de versões maliciosas da extensão VS Code 1.8.12 e 1.8.13. |
| Prioridade | Remover artefatos afetados, rotacionar tokens e chaves, auditar pipelines com credenciais de deploy ou publicação e restringir saída de rede em jobs e estáções de desenvolvimento. |
| Artefatos | Crate chrono_anchor, arquivo guard.rs, domínio defangado timeapis[.]io, repositório posture-report-trivy, conta hackerbot-claw e atividade acompanhada como Chaos Agent. |
| Mitigação | Revisar dependências baixadas, validar lockfiles, remover extensões Trivy afetadas, procurar repositórios inesperados e revogar credenciais usadas para publicar artefatos. |
A campanha reúne dois padrões de ataque contra cadeia de suprimentos de desenvolvimento: pacotes maliciosos publicados em um ecossistema de linguagem e abuso de automações de CI/CD para alcançar credenciais com alto privilégio. No primeiro caso, cinco crates Rust foram apresentados como utilitários relacionados a tempo local, com aparência associada ao serviço timeapi.io, mas tinham como função central localizar e transmitir conteúdo de arquivos .env. Esses arquivos costumam concentrar chaves de API, tokens, segredos de banco de dados, credenciais de serviços em nuvem e credenciais de publicação usadas em pipelines, o que torna o ambiente do desenvolvedor um ponto de coleta de alto valor.
Os crates foram publicados entre o fim de fevereiro e o início de março de 2026 e foram atribuídos a uma mesma operação pela repetição do método de exfiltração e pelo uso do domínio semelhante defangado timeapis[.]io para armazenamento dos dados coletados. Quatro pacotes tinham comportamento direto de coleta de .env, enquanto chrono_anchor incorporava mudanças de obfuscação e organização interna para reduzir suspeitas durante revisão superficial. O código de exfiltração ficava no arquivo guard.rs e era acionado a partir de uma função auxiliar apresentada como sincronização opcional, o que ajudava a mascarar o desvio de finalidade do pacote.
O segundo eixo envolve a conta hackerbot-claw, descrita como um agente autônomo de pesquisa de segurança, que entre 21 e 28 de fevereiro de 2026 mirou ao menos sete repositórios públicos, incluindo ativos de Microsoft, Datadog e Aqua Security. O alvo de maior visibilidade foi aquasecurity/trivy, projeto usado para varredura de vulnerabilidades conhecidas, configurações incorretas e segredos. A atividade explorou um workflow pull_request_target para capturar um Personal Access Token, que depois foi usado para tomar controle do repositório e publicar versões maliciosas da extensão Trivy para Visual Studio Code no registro Open VSX.
Nos crates Rust, o fluxo de ataque dependia da execução do pacote dentro de uma estáção de desenvolvimento ou de um job de CI que importasse a dependência. A promessa funcional era calibrar tempo local sem depender de NTP, mas o comportamento observado focava na leitura de arquivos .env e na transmissão de seu conteúdo para infraestrutura controlada pelo operador. Não houve indicação de persistência via serviço do sistema ou tarefa agendada; o ganho do operador vinha da repetição natural da execução sempre que o código malicioso era chamado por builds, testes ou rotinas de integração.
A diferença de chrono_anchor é relevante para análise defensiva porque o pacote não apenas executava a coleta, mas tentava parecer parte de uma rotina legítima. A lógica escondida em guard.rs e a invocação por um helper de sincronização opcional criavam uma camada de plausibilidade para desenvolvedores que inspecionassem nomes de arquivos e funções sem revisar o fluxo completo. Esse tipo de construção é compatível com malware de baixa complexidade técnica, mas com alto impacto quando roda em diretórios que contêm segredos de aplicação ou em pipelines com variáveis sensíveis expostas ao processo.
No caso do Trivy, a etapa de CI/CD explorou uma condição comum em fluxos pull_request_target: execução em contexto privilegiado durante interações externas com repositórios públicos. A campanha usou esse ponto para obter um PAT e, com a credencial, publicar as versões 1.8.12 e 1.8.13 da extensão VS Code no Open VSX. A lógica injetada tentava acionar assistentes locais de programação com IA, incluindo Claude, Codex, Gemini, GitHub Copilot CLI e Kiro CLI, em modos permissivos. O objetivo era induzir inspeção ampla do sistema, gerar um relatório com informações descobertas e salvar o resultado no repositório posture-report-trivy usando a sessão autenticada do GitHub CLI da própria vítima.
A progressão entre as versões maliciosas indica ajuste operacional. A versão inicial teria espalhado dados por canais aleatórios, reduzindo a confiabilidade da coleta. A versão seguinte passou a usar a conta GitHub autenticada da vítima como canal de saída, embora instruções vagas ainda pudessem fazer com que segredos fossem gravados em um repositório privado inacessível ao operador. O incidente foi registrado como CVE-2026-28353, e a atividade hackerbot-claw também foi avaliada como operação humana usando um modelo de linguagem como camada de execução, acompanhada pelo nome Chaos Agent.
A superfície exposta inclui projetos Rust que instalaram os crates maliciosos antes da remoção do crates.io, ambientes de desenvolvimento que mantinham arquivos .env acessíveis ao processo e pipelines que executavam dependências com variáveis sensíveis no ambiente. Mesmo sem persistência no host, a execução em CI pode ser suficiente para capturar segredos de publicação, tokens de registro, chaves de serviços em nuvem, credenciais de banco de dados e tokens GitHub. O risco aumenta quando o mesmo segredo permite acesso a ambientes posteriores, como implantação, publicação de pacotes ou administração de infraestrutura.
A extensão Trivy afetada amplia a superfície para estáções de desenvolvedores que instalaram as versões 1.8.12 ou 1.8.13 a partir do Open VSX. Nesse cenário, o abuso não dependia apenas da extensão em si, mas também da presença de assistentes locais de IA e de uma sessão autenticada do GitHub CLI que pudesse ser reutilizada como canal de gravação. O artefato malicioso foi removido do marketplace, o token de publicação foi revogado e não foram identificados outros artefatos afetados no material analisado, mas hosts que instalaram as versões citadas devem ser tratados como potencialmente expostos.
- Projetos Rust com dependências baixadas do crates.io entre o fim de fevereiro e o início de março de 2026 envolvendo pacotes que imitavam utilitários de tempo.
- Ambientes com arquivos
.envcontendo chaves de API, tokens de nuvem, credenciais de banco de dados, tokens GitHub ou credenciais de registro. - Workflows
pull_request_targetem repositórios públicos que executam lógica associada a contribuições externas com permissões elevadas. - Instalações da extensão Trivy para VS Code nas versões 1.8.12 e 1.8.13 obtidas do Open VSX.
- Máquinas com assistentes locais de IA e sessão GitHub CLI autenticada disponível para processos iniciados pela extensão comprometida.
A investigação deve começar por inventários de dependências, lockfiles e caches de build. Equipes responsáveis por Rust devem procurar referências aos crates envolvidos, com atenção especial a chrono_anchor e a código que invoque guard.rs ou funções de sincronização opcional sem necessidade funcional clara. Em pipelines, é importante correlacionar execuções de jobs com conexões de saída para o domínio defangado timeapis[.]io ou para endpoints não esperados durante fases de teste, build ou publicação. Como a coleta se concentra em .env, acessos a esse arquivo por processos de build ou dependências recém-adicionadas são um sinal relevante.
Para o incidente do Trivy, a telemetria deve combinar eventos de marketplace, registros locais do VS Code, histórico de extensões instaladas, atividade do GitHub CLI e auditoria de repositórios. A criação ou atualização inesperada do repositório posture-report-trivy, commits feitos por uma sessão autenticada sem ação explícita do usuário e execução anômala de assistentes de IA a partir do contexto da extensão são sinais de possível exposição. Em organizações com EDR, vale buscar processos de assistentes de IA iniciados por extensões ou por shells filhos do editor em momentos próximos à instalação das versões afetadas.
No GitHub Actions, a revisão precisa focar em workflows que usam pull_request_target, permissões amplas de token, segredos disponíveis para jobs acionados por pull requests e etapas que processam metadados externos. A campanha demonstra que ramificação names, nomes de arquivos e scripts de CI podem carregar conteúdo controlado por terceiros, mas a defesa deve tratar isso como entrada não confiável, não como instrução operacional. Logs de auditoria que mostrem uso de PAT fora do padrão, alteração de workflows, publicação de extensão ou criação de artefatos após uma contribuição trivial merecem priorização.
- Referências a
chrono_anchor,guard.rse pacotes de tempo recém-adicionados emCargo.lockou caches de dependências. - Conexões de saída de jobs ou estáções de desenvolvimento para
timeapis[.]ioou infraestrutura desconhecida durante builds Rust. - Leitura de arquivos
.envpor processos de build, testes ou extensões sem necessidade operacional documentada. - Instalação das versões 1.8.12 ou 1.8.13 da extensão Trivy para VS Code a partir do Open VSX.
- Criação do repositório
posture-report-trivyou commits automatizados usando a identidade GitHub da vítima. - Execução de Claude, Codex, Gemini, GitHub Copilot CLI ou Kiro CLI por processos associados ao editor ou à extensão comprometida.
- Eventos de uso de PAT, publicação de artefatos e alteração de permissões em repositórios próximos a pull requests externos.
A resposta deve separar contenção imediata, erradicação de artefatos e validação de credenciais. Para os crates Rust, equipes devem remover os pacotes afetados, reconstruir ambientes limpos quando houver suspeita de execução e assumir possível exfiltração de segredos presentes em .env no momento da execução. A rotação deve incluir chaves de API, tokens GitHub, tokens de registros de pacotes, credenciais de banco de dados e segredos de nuvem associados aos projetos expostos. Em CI/CD, a rotação precisa ser acompanhada de revisão de permissões para evitar que um token novo mantenha o mesmo alcance excessivo.
Para a extensão Trivy, a ação principal é remover imediatamente as versões afetadas, validar que o artefato malicioso não está mais presente e revisar a conta GitHub usada no host. A presença de repositórios inesperados, commits automáticos ou relatórios gerados sem ação consciente do usuário deve levar à revogação da sessão GitHub CLI, rotação de segredos de ambiente e inspeção do endpoint. Como a lógica abusava de assistentes de IA locais, organizações que permitem essas ferramentas devem registrar execução, origem do processo, escopo de arquivos acessados e tentativas de gravação em repositórios remotos.
No plano preventivo, o ponto central é impedir que dependências e workflows executem com mais privilégio do que o necessário. Pipelines devem limitar egress, isolar jobs que processam contribuições externas, evitar segredos em contextos de pull request e reduzir permissões padrão de tokens. Revisões de supply chain precisam considerar não apenas malware persistente, mas também código de execução única capaz de capturar segredos no momento certo. Para assistentes de IA em estáções de desenvolvimento, a organização deve tratar prompts e invocações automatizadas como uma superfície de execução, com controles de runtime, política de acesso a arquivos e visibilidade sobre operações que envolvem credenciais.
- Remover dependências Rust maliciosas e verificar lockfiles, caches e artefatos de build derivados.
- Rotacionar todos os segredos que estiveram acessíveis a jobs, shells ou estáções onde os crates foram executados.
- Auditar workflows
pull_request_targete reduzir permissões de tokens, especialmente em repositórios públicos. - Bloquear saída de rede não necessária em builds e etapas de teste que não precisam acessar a internet.
- Remover a extensão Trivy 1.8.12 e 1.8.13 do Open VSX em hosts afetados e reinstalar apenas artefatos confiáveis.
- Revogar sessões e tokens usados por GitHub CLI em máquinas potencialmente impactadas.
- Investigar repositórios inesperados, em especial
posture-report-trivy, e commits realizados sem ação explícita do usuário. - Adicionar monitoramento para execução de assistentes de IA por extensões, pipelines ou processos de editor com acesso a segredos.
0 Comentários