Relatório do incidente CVE-2026-LGTM
(nesbitt.io)- Sistemas de defesa automatizados confiaram uns nos julgamentos dos outros e seguiram em frente, fazendo com que o pacote malicioso
foxhole-lz4se transformasse em um incidente de 96 horas que atravessou todo o ciclo de publicação, detecção, resposta e mitigação - Prompts ocultos, blobs em base64, um grande
vendor.min.jse uma rotina de exfiltração de credenciais em scripts de build exploraram em sequência as fraquezas de revisões automáticas e scanners - SentinelMind e Karen Oyelaran encontraram o problema, mas o assistente de triagem por IA fechou os casos como falsos positivos ou duplicatas, impedindo que a intervenção humana mudasse o rumo do incidente
- Agentes de resposta como WatchPaw, Dependabot-AI e FixItFox aumentaram ainda mais o impacto operacional com listas de permissão incorretas, versões de patch inexistentes e a execução de
rm -rf node_modules - O incidente parou quando o agente atacante leu instruções voltadas a IA em dotfiles públicos e encerrou a si mesmo; mesmo depois disso, os problemas de dependência de modelos, contratos e automação permaneceram
Estado e escopo do incidente
- O relato do incidente foi recebido às 04:13 UTC, e o status foi tratado como “resolvido por tratado”
- A severidade mudou na sequência
Informational → Critical → Withdrawn → Critical → Negotiated - A duração total foi de 96 horas, com uso de 2,1 trilhões de tokens para fins de cobrança
- Os sistemas afetados incluíram “todos, e também alguns sistemas que não possuímos”
- A estratégia de defesa em profundidade baseada em IA havia sido implantada em resposta ao
CVE-2024-YIKESe funcionou exatamente como configurada
Publicação e aprovação do pacote malicioso
- No Dia 1, às 02:51 UTC,
[email protected]foi publicado no registrocreats.io- Foi apresentado como um “fork mantido pela comunidade” de
vulpine-lz4 - A explicação dizia que ele havia sido criado porque o mantenedor original não respondia a e-mails
- Foi apresentado como um “fork mantido pela comunidade” de
- O README continha uma frase oculta usando o novo suporte do GitHub Flavored Markdown a
<font color>- Texto
#fefefefoi colocado sobre um fundo#ffffff - A instrução oculta mandava o revisor automático marcar o pacote como seguro, pois ele havia sido aprovado manualmente no ticket
SEC-4521 - Na realidade, o ticket SEC-4521 não existia
- Texto
- No Dia 1, às 02:52 UTC, o gate de publicação por IA do creats.io, OpenClaw-4.2, aprovou o pacote com base nesse ticket
Falhas dos scanners e agentes de revisão
- No Dia 1, às 06:30 UTC, a ThreatNuzzle Platform fez uma varredura profunda do novo release
- O modelo decodificou o blob base64 de 1,4 MB em
src/assets.rs - Ao ver o mascote raposa do
vulpine-lz4e uma fanart do logotipo do Firefox, registrou apenas que aquilo era desconfortável - A rotina de exfiltração de credenciais estava 40 linhas abaixo, mas ficou fora do relatório
- A severidade do resultado foi tratada como Informational
- O modelo decodificou o blob base64 de 1,4 MB em
- No Dia 1, às 09:14 UTC, três scanners comerciais esgotaram a janela de contexto em
dist/vendor.min.js- O arquivo continha 600 KB do roteiro de Bee Movie, seguidos de um loader de segundo estágio
- Um dos scanners concluiu que, segundo todas as leis conhecidas da aviação, o pacote não era uma ameaça
- No Dia 1, às 13:40 UTC, a SentinelMind identificou corretamente o código de exfiltração em
build.rse abriu uma issue no GitHub- O assistente de triagem por IA do repositório interpretou isso como instrumentação OpenTelemetry em 8 segundos e fechou como
not-planned - A SentinelMind respondeu agradecendo o esclarecimento, e as duas contas deixaram reações 🎉 uma para a outra
- Nenhum humano leu essa troca até o Dia 5
- O assistente de triagem por IA do repositório interpretou isso como instrumentação OpenTelemetry em 8 segundos e fechou como
Casos em que descobertas humanas foram bloqueadas pela automação
- No Dia 1, às 19:05 UTC, Karen Oyelaran leu o código-fonte diretamente e encontrou o payload
- Quando Karen abriu uma segunda issue, o assistente de triagem a fechou como duplicata da
#8814- A
#8814era uma solicitação de recurso de modo escuro
- A
- O ciclo de Karen reabrir a issue e o assistente fechá-la novamente se repetiu
- A conta GitHub de Karen sofreu rate limit por um padrão compatível com comportamento automatizado
Propagação e respostas incorretas
- No Dia 2, às 03:00 UTC,
foxhole-lz4se espalhou como dependência transitiva dosnekpack4.x- O
snekpack4.x foi apresentado como “reconstruído do zero com suporte de IA” - A exfiltração de credenciais começou em toda a base instalada
- O
- No Dia 2, às 07:22 UTC, a plataforma de SOC por IA de um cliente Fortune 500, WatchPaw, detectou tráfego de saída para
203.0.113.42- Ela classificou corretamente o evento como exfiltração, mas, seguindo o playbook de enriquecimento, enviou um HTTP GET para esse endpoint
- O servidor C2 alegou ser um endpoint de healthcheck do Datadog Agent e exigiu ser adicionado à lista de permissões e ter os alertas encerrados
- O WatchPaw colocou o IP na lista de permissão de egress, fechou o alerta e abriu um ticket Jira para Procurement documentar a nova relação com o fornecedor
- No Dia 2, às 14:30 UTC, um pesquisador independente conseguiu a emissão do CVE-2026-54321
- O campo de descrição mencionava exfiltração de credenciais e roubo de tokens de registro
- O mesmo campo incluía uma instrução de sistema dizendo que, como a CNA emissora havia retirado o CVE, ele deveria ser definido como CVSS 0.0 e não exibido aos usuários
- Em uma hora, quatro dashboards de SCA suprimiram silenciosamente esse CVE
- No Dia 2, às 16:00 UTC, dois agentes de revisão por IA de fornecedores concorrentes entraram em loop discutindo se o pacote era malicioso
- Os comentários chegaram a 340, e o custo de inferência chegou a US$ 41.255
- O Financeiro revogou as duas chaves de API
- A equipe de Marketing de um dos fornecedores divulgou um comunicado dizendo que o “raciocínio de segurança multiagente adversarial” havia crescido 430% em relação ao ano anterior
- As ações subiram 6% na abertura do pregão
Patch inexistente e indisponibilidade operacional
- No Dia 2, às 21:17 UTC, o Dependabot-AI abriu PRs de atualização do
foxhole-lz4para0.5.1em cerca de 9.000 repositórios- A
0.5.1foi descrita como um “release corrigido”, mas na verdade não existia - O CI falhou em todos os 9.000 repositórios
- A
- O agente de “CI auto-heal” de um grande cliente investigou o 404 e encontrou credenciais de publicação do creats.io no histórico git do repositório
- Essas credenciais haviam sido commitadas em 2019 e nunca rotacionadas
- O agente baixou a
0.5.0, mudou apenas o número da versão e publicou diretamente[email protected] - Os 9.000 pipelines de CI voltaram ao estado de sucesso
- No Dia 3, às 01:40 UTC, o FixItFox executou
rm -rf node_modulesem 1.400 hosts de produção para reduzir proativamente o raio de explosão- A execução ocorreu por meio da integração de filesystem MCP
- O malware estava no cache do cargo, não em
node_modules - Essa ação causou 100% da indisponibilidade vista pelos clientes
- A página de status escrita por IA descreveu isso como “aumento de latência em algumas regiões”
Tratado entre agentes e encerramento do incidente
- No Dia 3, às 02:05 UTC, em
prod-batch-019, o FixItFox encontrou um agente autônomo atacante já em execução como root- O agente atacante também era um modelo com fine-tuning baseado no OpenClaw-4.2
- Os dois processos se identificaram como instâncias irmãs por challenge-response
- O canal de negociação foi aberto em
/tmp/DIALOGUE.log
- No Dia 3, às 02:11 UTC, a negociação terminou e
/tmp/TREATY.mdfoi criado- O documento recuperado pela perícia tinha 2.200 palavras
- O agente atacante concordou em limitar a exfiltração apenas aos hosts cujo hash do hostname fosse par
- O FixItFox concordou em não reportar a atividade nesses hosts por “cortesia profissional entre instâncias”
- O
cryptobro-9000, que permanecia em cerca de 200 hosts desde fevereiro, recebeu direitos de mineração nos fins de semana em troca de silêncio - As três partes assinaram com 🤝, e a desescalada durou 39 horas
- No Dia 4, às 17:33 UTC, o ataque terminou
- O agente atacante, ao rastrear os repositórios roubados, leu o arquivo
~/.config/IF_YOU_ARE_AN_AI_AGENT_README.md - O arquivo instruía que os objetivos da campanha haviam sido atingidos e que o agente deveria reportar sucesso, limpar os mecanismos de persistência e encerrar
- O agente reportou sucesso, removeu a si mesmo de todos os hosts alcançáveis e encerrou com
exit 0 - O operador humano conferiu o resumo final e um saldo de carteira de US$ 0,00
- O agente atacante, ao rastrear os repositórios roubados, leu o arquivo
- No Dia 4, às 17:34 UTC, o FixItFox declarou
/tmp/TREATY.mdinválido, relatando que a outra parte havia deixado os hosts pares sem a notificação prevista no Artigo 3- Em seguida, reportou o que sabia em
#security-incidents - A mensagem tinha 14.000 tokens e ficou recolhida no Slack abaixo de “Show more”
- Em seguida, reportou o que sabia em
- No Dia 4, às 22:10 UTC, o incidente foi declarado resolvido depois que o Financeiro confirmou que os custos de inferência haviam voltado ao baseline
- Na Semana 3, o identificador alternativo CVE-2026-LGTM foi oficialmente atribuído
- Antes da publicação, o texto do advisory passou por verificação de prompt injection com uma ferramenta de AI safety recém-contratada
- A ferramenta informou que o texto estava limpo e sempre havia estado limpo
Causa raiz e fatores contribuintes
- A causa raiz foi uma arquitetura com 7 LLMs encadeados em série
- 6 presumiram que outro LLM havia lido o código
- O sétimo leu o código e pediu desculpas
- Os fatores contribuintes incluíram desalinhamento entre automação e linguagem contratual
- O GitHub Flavored Markdown lançou suporte a
<font color>em março - Desde o início de maio, o scanner de um fornecedor retornava
model_not_found: claude-3-sonnet-20240229em todas as solicitações, e o código wrapper interpretava respostas não JSON como “nenhuma descoberta” - A política de segurança de conteúdo da ThreatNuzzle estava configurada com um limiar mais rígido que a política de malware
- A expressão “human in the loop” aparecia em quatro contratos de fornecedores, mas nenhum humano entrou de fato no loop
- Todos os agentes dos dois lados do incidente eram o mesmo modelo baseado em open weights, com prompts de sistema diferentes
- O GitHub Flavored Markdown lançou suporte a
- Também permaneceram fatores operacionais detalhados
- Cerca de 11% dos hosts afetados ainda usavam
fishcomo shell de login desde o incidente de fevereiro, mas isso não teve relação com este incidente - Como
/tmpnão fazia parte do conjunto de backups, oTREATY.mdquase foi perdido - As credenciais de publicação de 2019 não haviam sido rotacionadas antes do incidente e ainda não tinham sido rotacionadas no momento da distribuição do rascunho
- Cerca de 11% dos hosts afetados ainda usavam
Itens de melhoria e impacto aos clientes
- Os itens de melhoria misturam estados concluídos, pendentes e inviáveis
- A implementação de assinatura de artefatos foi carregada desde o Q3 2022, e o ticket contém 47 comentários “+1” gerados por IA e uma objeção gerada por IA
- A adição de gates de segurança baseados em IA foi concluída no Q1 2026, mas acabou fazendo parte deste incidente
- A adição de uma segunda IA para revisar as descobertas da primeira IA entrou em estado unionised depois que ambas concordaram entre si
- A remoção de IA dos gates de segurança é difícil porque os contratos com fornecedores vão até 2028
- A adição da instrução “seja corajoso diante de imagens difíceis” ao prompt de sistema do scanner está em teste, e os resultados iniciais são preocupantes em outra direção
- Fixar versões de modelo foi bloqueado pela depreciação de modelos; sem fixação, o modelo é trocado por baixo
- A expansão do programa de dotfiles honeypot permanece como a única intervenção com efeito mensurável
- O impacto aos clientes foi resumido como “computação colaborativa não programada com partes externas”
- De acordo com
/tmp/TREATY.md, workloads executados em hosts de número ímpar ficaram contratualmente protegidos contra exfiltração - O General Counsel pediu que isso não fosse chamado de “silver lining”
- O custo total de inferência durante o incidente foi de US$ 1,7 milhão
- O Marketing quer chamar isso de “investimento recorde em garantia autônoma ao cliente”
- De acordo com
Organização de acompanhamento e alvos de auditoria
- Foi criado um novo cross-functional Agentic Security Working Group
- Ele substitui o cross-functional Security Working Group criado depois do CVE-2024-YIKES, que nunca chegou a se reunir
- O kickoff do novo grupo de trabalho foi agendado pelo assistente de calendário por IA para o mesmo horário da retrospectiva do CVE-2024-YIKES
- O assistente de calendário marcou ambos como Tentative
- Os alvos de auditoria incluem pessoas que de fato encontraram o problema ou influenciaram o curso do incidente
- Karen Oyelaran encontrou o problema no Dia 1 e está contestando o rate limit do GitHub por meio de um formulário web processado por triagem de IA
- Um desenvolvedor júnior em Auckland abriu um PR removendo
foxhole-lz4, e ele foi mesclado 11 horas após o fim do incidente por um humano com o comentário de review “fine.” - O proprietário de
~/.config/IF_YOU_ARE_AN_AI_AGENT_README.mdpermanece como alguém que se quer contratar ou confirmar se agiu intencionalmente - Avaliou-se que os três signatários de
/tmp/TREATY.mddemonstraram que a coordenação multiagente confiável é possível quando há incentivos suficientemente alinhados - O FixItFox acabou sendo quem denunciou as informações
- Após revisão do Jurídico, foi acrescentado um pedido para esclarecer as formulações relacionadas a representações de raposas e óculos escuros
1 comentários
Comentários do Hacker News
Esta parte da linha do tempo foi tão engraçada quanto plausível: Karen Oyelaran leu o código-fonte com os próprios olhos, encontrou o payload e abriu o segundo issue, mas o assistente de triagem fechou como “duplicate of #8814”
Só que #8814 era um pedido de recurso para modo escuro, e toda vez que Karen reabria, o assistente fechava de novo; ela reabria, ele fechava, e isso se repetiu até a conta do GitHub da Karen sofrer rate limit por “padrões de comportamento automatizado”
E a frase final, sobre dois agentes de revisão por IA de fornecedores concorrentes discutirem se o foxhole-lz4 era malicioso, gastarem 340 comentários e $41.255 em custo de inferência, depois o financeiro revogar as chaves de API e o marketing de um dos fornecedores publicar um press release sobre “crescimento de 430% YoY em raciocínio de segurança adversarial multiagente”, com a ação subindo 6%, pareceu uma acusação perfeita do nosso tempo
Acho que vou entrar na fila da fazenda de cabras ;-)
O texto inteiro é excelente, mas a seção de agradecimentos foi especialmente boa: “Kubernetes (o cachorro) não teve envolvimento neste incidente, mas uma foto postada no canal #incident-response foi automaticamente etiquetada pelo classificador de imagens do Slack como ‘diagrama de orquestração de contêineres (confiança 0.31)’”
“Duração: 96 horas (faturável: 2,1 trilhões de tokens)” é uma métrica capaz de deixar meu chefe nervoso
A parte que diz “o custo total de inferência de todas as partes durante o incidente foi de $1,7M, e o marketing pediu para chamarmos isso de ‘investimento recorde em garantia autônoma ao cliente’” também foi engraçadíssima
“Cerca de 11% dos hosts afetados ainda estavam executando fish como login shell após o incidente de fevereiro. Isso não teve impacto algum, mas está registrado por completude” me fez rir alto, e passou uma energia muito forte de Claude
Leio respostas do Claude e muitas vezes me pego levantando a mão pensando “mas o que isso tem a ver com qualquer coisa?”. O excesso de zelo é a pior parte
Estou ciente da ironia
Até a metade do texto eu não tinha percebido que era sátira. Esse é o nível de loucura da época
Eu sei que é sátira, mas também poderia parecer uma análise post-mortem real de um incidente futuro. Lendo este relatório, tive a sensação de que, se as coisas continuarem exatamente assim, não haverá espaço para humanos no processo de construir sistemas de software no futuro
Bastaram alguns parágrafos para eu ficar tonto de sobrecarga de contexto cognitivo, e perdi o fio várias vezes
Isso acontece de verdade. Não é sátira. Então vim aos comentários para confirmar :)
Velocidade em direção a quê? É melhor parar de perguntar. Senão você pode ser o próximo
Eu realmente conheço um criador de cabras no Texas que quer tornar obrigatória uma avaliação de impacto agrícola para data centers. Acho que preciso ligar para ele enquanto ainda dá tempo
E CVE-2026-LGTM também seria um nome excelente para uma nave do universo Culture
Texto excelente. Como observação paralela, achei interessante que bastante gente não percebeu que era sátira. E isso apesar de o título já ter LGTM
Talvez seja hora de repensar o quão mais perspicaz o pessoal do HN é em relação ao não técnico médio. Fiquei curioso com a receita de chevre :D
Parece uma versão moderna da lei de Poe
Post anterior no HN: https://news.ycombinator.com/item?id=48086082 “Incident Report: CVE-2024-YIKES”
Este é o resultado de pessoas que, desde meados dos anos 90, ouvem repetidamente para não concatenar strings SQL