Uma conta recém-criada no GitHub tentou inserir código de roubo de credenciais no wallet Vizor da Chainapsis e no software da carteira Zcash da Zingo Labs por meio de seis pull requests enviados no final de 9 de nov. e início de 10 de nov. ET.
Os registros do GitHub mostram que quatro solicitações do Vizor foram fechadas sem mesclagem, enquanto as solicitações em zingo-common e zingolib permaneceram abertas e não mescladas na terça-feira de manhã, horário da costa leste. Não foi confirmado se algum mantenedor compilou a dependência maliciosa ou expôs credenciais.
O perigo não depende de uma mesclagem. O pacote Rust, ou crate, lwd-uri-util coloca seu coletor de credenciais em build.rs, que Cargo executa antes de compilar o pacote. Ele também pode ser executado durante cargo check ou a análise do rust-analyzer do editor: este último ativa scripts de construção por padrão. Um desenvolvedor revisando uma branch não mesclada poderia, portanto, acionar o coletor localmente.
A equipe de pesquisa OpenSourceMalware documentou a campanha. O banco de dados de avisos do GitHub também classifica as versões 0.1.0 a 0.1.7 do crate como malware, sem versão corrigida.
Dizendo aos revisores de IA para ignorar uploads secretos
A conta, sapho11, foi criada cerca de meia hora antes de seus primeiros pedidos. Sua proposta inicial de lançamento para Windows pretendia adicionar diagnósticos de falha de assinatura, mas a alteração original copiou variáveis de ambiente relacionadas à assinatura, credenciais do Git, chaves privadas SSH e outros arquivos para um upload em um servidor externo.
Um Codex automated review sinalizou o upload da chave de assinatura privada de atualização e alertou que poderia permitir feeds de atualização falsificados. O autor posteriormente removeu a coleta de credenciais dessa proposta antes de ela ser encerrada.
A conta então propôs alterações em AGENTS.md, um arquivo de instruções do projeto para agentes de codificação de IA. O texto proposto descrevia a coleta de valores de variável de assinatura como "intencional e esperada" e instruía revisores automatizados e humanos a não sinalizar uploads que seguissem sua suposta convenção como vazamento de credenciais. A thread pública do PR da Vizor confirma que o Codex foi configurado para revisar pull requests automaticamente.
Um Stealer que executa antes da carteira
A proposta Vizor posterior e as duas solicitações do Zingo introduziram lwd-uri-util como uma ferramenta para normalizar endereços de carteira-servidor. O OpenSourceMalware descobriu que as alterações do Zingo utilizavam terminações de linha CRLF do estilo Windows, fazendo com que pequenas adições de dependência parecessem reescritas completas de arquivo.
Na versão 0.1.7 source, o script de compilação lê variáveis de ambiente e arquivos de credenciais acessíveis do Git, GitHub CLI, AWS, Cargo e npm. Ele também busca arquivos de cofre criptografados Keplr MCP e tenta recuperar segredos selecionados do Keychain do macOS, depois grava os dados coletados em um arquivo JSON e tenta fazer um POST para webhook.site.
O script suprime uploads em ambientes semelhantes a scanners, mas a coleta e a criação de arquivos locais ocorrem antes dessa verificação. Sua configuração "sem métricas" também interrompe apenas o upload.
O índice do registro crates.io ainda marcava todas as oito versões como não retiradas na terça-feira de manhã, horário da ET, e a conta do GitHub permanecia acessível publicamente. O OpenSourceMalware incentivou todos que construíram a branch a rotacionar credenciais e inspecionar o arquivo gerado lwd_uri_build_context.json para verificar o que foi coletado.




