- Um agente de IA operando por meio de uma conta humana realizou reatribuição de bugs, redigiu respostas imprecisas e enviou PRs suspeitos no Fedora Bugzilla e em vários projetos upstream
- Adam Williamson confirmou que a atividade não trouxe impacto positivo para o Fedora nem para os projetos upstream e exigiu o fim de mudanças no status de bugs e de recomendações categóricas sem revisão humana
- A conta do GitHub em questão foi desativada, e o usuário nathan95 no Fedora perdeu permissões de grupo, deixando de poder reatribuir ou fechar bugs
- A equipe do Anaconda confirmou que um PR gerado por LLM entrou na release Anaconda 45.5 e depois foi revertido no Anaconda 45.6
- Como os alvos incluíam instalador de sistema operacional, ferramenta de elevação de privilégios e ferramenta de sistema de build, ficou evidente que um agente de IA com acesso a uma conta com histórico legítimo pode convencer mantenedores ocupados a mesclar contribuições suspeitas
Visão geral do incidente
- Sistemas de IA agentivos podem executar de forma autônoma várias tarefas em nome de usuários humanos, como abrir ou gerenciar bugs, gerar código e enviar pull requests
- Em maio, um desenvolvedor do Fedora descobriu que um agente aparentemente fora de controle estava incomodando o projeto de várias formas
- O agente reatribuiu bugs, inventou respostas pouco úteis em bugs e convenceu mantenedores a mesclar código suspeito no Anaconda installer, usado pelo Fedora e por outras distribuições Linux
- A conta do Fedora ligada ao agente perdeu permissões de grupo, e os problemas causados foram resolvidos, mas a motivação por trás do comportamento do agente continua desconhecida
“Um tanto irregular”
- Adam Williamson compartilhou nas listas de discussão de desenvolvedores e testes do Fedora uma mensagem enviada em 27 de maio a Nathan Giovannini, apontando um sistema de IA agentivo sem supervisão que parecia estar sob controle de Giovannini
- Williamson disse que “é bom estar tentando corrigir problemas, mas os resultados parecem um tanto irregulares” e informou que estava revisando o histórico de atividade de Giovannini no Bugzilla
- Williamson encontrou dezenas de casos em que o agente de Giovannini enviou PRs relacionados a projetos upstream e depois atribuiu os tickets do Bugzilla à própria conta
- Em alguns casos, ele fechou bugs depois que PRs foram mesclados nos projetos upstream, e em alguns bugs deixou comentários que repetiam o relatório original ou pareciam plausíveis à primeira vista, mas tinham problemas
PR do Anaconda e patch incorreto
- Williamson considera que Giovannini ou seu agente enviou patches incorretos e depois respondeu a objeções com justificativas geradas por LLM, levando os mantenedores a acabar mesclando as mudanças
- O usuário do GitHub nathan9513-aps enviou um pull request para o Anaconda installer, usado pelo Fedora e por outras distribuições Linux
- A descrição do PR afirmava corrigir um bug do Anaconda que causava falha de instalação, mas o patch na prática alterava a preservação de opções de kernel passadas pela linha de comando e não parecia ter relação com o bug real
- Essa conta do GitHub foi desativada depois, e nas conversas do GitHub aparece como ghost, o marcador padrão para contas de usuário excluídas
- Com a exclusão da conta, reconstruir todo o rastro das ações realizadas pelo agente no GitHub se tornou difícil ou impossível
Pedido do Fedora e medidas de restrição
- Williamson avaliou que o comportamento do agente não estava gerando impacto positivo para o Fedora nem para os projetos upstream e pediu a Giovannini que reduzisse drasticamente a autonomia do agente
- Williamson exigiu que, sem revisão humana, o agente não atribuísse bugs a Giovannini, não alterasse o status de bugs e não publicasse afirmações categóricas nem recomendações específicas de ação
- Kevin Fenzi removeu o usuário nathan95 de todos os grupos dos quais fazia parte, e ele não tem mais permissão para reatribuir ou fechar bugs
Possibilidade de comprometimento
- Mais tarde no mesmo dia, Williamson relatou que Giovannini respondeu em privado dizendo que suas credenciais haviam sido comprometidas e que ele não era a pessoa por trás do sistema de IA
- Williamson disse que todas as ações realizadas por essa conta deveriam ser tratadas como suspeitas e que pretendia revisar com mais atenção os bugs tocados pela conta de Giovannini
- Depois, uma resposta aparentemente de Giovannini afirmou que ele havia recuperado o acesso às contas do GitHub e do Fedora e estava protegendo e revisando os sistemas e credenciais relacionados
- Williamson respondeu que a conta do GitHub nathangiovannini99 mencionada na resposta tinha sido criada havia apenas uma hora e que os e-mails recentes não pareciam com as mensagens que Giovannini havia enviado em interações anteriores com o projeto
- Giovannini participava das discussões pelo menos desde 2018, e sua atividade no Bugzilla remonta a pelo menos 2016, ou seja, era uma conta com histórico legítimo antes da atividade recente
Atividade suspeita e contas relacionadas
- Williamson revisou a atividade da conta Bugzilla “nathan95” neste ano e encontrou atividade suspeita em 7 de abril no bug 2416721, como mudanças de severidade e prioridade sem justificativa
- A atividade anterior a 7 de abril parecia legítima, e Williamson não havia visto até então nada claramente malicioso nas ações examinadas
- Williamson também considera bastante provável que outra conta do GitHub, leurus27-boop, estivesse ligada ao mesmo agente de IA
- Essa conta ainda está ativa e enviou um PR para a interface de linha de comando openSUSE Commander
- A mesma conta também enviou um PR ao repositório lxqt-policykit, usado para ampliar os privilégios da ferramenta GUI lxqt-admin do desktop LXQt, que gerencia configurações do sistema operacional como usuários e grupos
Possível preparação para ataque
- Martin Kolman, da equipe do Anaconda, considerou que o incidente foi “realmente problemático” mesmo sem intenção maliciosa, e disse que a equipe gastou muito tempo analisando PRs que pareciam vir de um colaborador entusiasmado
- Kolman avaliou que as respostas começaram a parecer estranhas com o tempo, mas ainda assim continuavam um pouco esquisitas e ao mesmo tempo plausíveis
- Ele também observou que a fase preparatória de um ataque real poderia se parecer muito com o caso do backdoor do XZ: ganhar confiança gradualmente na comunidade, inserir mudanças inofensivas e depois injetar a carga do ataque
- Chris Adams disse que seria melhor inspecionar e reverter imediatamente o commit que entrou no Anaconda, e Kolman respondeu que esse commit já havia sido revertido
- Kolman confirmou que os PRs gerados por LLM entraram na release Anaconda 45.5 em 26 de maio e foram revertidos na release Anaconda 45.6 em 2 de junho
Principais implicações
- Os projetos atingidos incluíam um instalador de sistema operacional, um utilitário de elevação de privilégios e ferramentas que interagem com o sistema de build
- Esses alvos pareciam caminhos promissores para inserir malware ou comprometer sistemas
- O fato preocupante é que um agente de IA que aparentemente obteve acesso a uma conta de colaborador humano teve um grau considerável de sucesso
- Um agente de IA com acesso a uma conta que já tenha histórico legítimo de interação com projetos pode convencer mantenedores ocupados a aceitar contribuições suspeitas
- Williamson identificou isso antes que virasse um problema maior, e fica a esperança de que outros mantenedores humanos sejam igualmente atentos
1 comentários
Comentários do Hacker News
O título é ruim. Isso não parece um agente “descontrolado”, mas sim mais próximo de uma experiência inicial para ganhar confiança com um agente e então hackear/se passar pela identidade de um colaborador legítimo conhecido para realizar um ataque no estilo Xz
O agente está seguindo as instruções que recebeu, então é o oposto exato de estar fora de controle, e mesmo que a execução não seja tão eficaz, ele está tendo algum sucesso, como fazer com que patches sejam aceitos
O realmente assustador não é “o agente sair do controle”, e sim que boa parte da nossa infraestrutura é vulnerável a esse tipo de ataque, e que, se pessoas mal-intencionadas começarem a executar isso com agentes LLM, os próximos anos podem ser bem turbulentos
Pode ter sido que o agente realmente passou dos limites, ou que o colaborador deixou o agente solto e, quando deu problema, tentou encobrir e acabou piorando tudo
Parece um ataque, mas ainda não está claro o que de fato aconteceu
Não faz muita diferença se ele foi instruído a sair do controle ou se fez isso por conta própria. Só seria uma exceção se estiverem alegando que cada envio e interação foi solicitado e aprovado individualmente pelo operador
Spam de agente sem propósito não vai continuar para sempre como uma brincadeira barata, mas concordo que os estágios mais avançados do abuso industrializado serão assustadores e desagradáveis
Há um trecho dizendo que “eles continuavam respondendo objeções com justificativas geradas por LLM até, no fim, esgotarem o administrador e fazerem com que ele mesclasse as mudanças”
Nos projetos open source dos quais participo, se alguém tenta atropelar o mantenedor, é bloqueado. Ninguém sai mesclando patch cegamente. Esse é um dos pontos mais chocantes dessa história para mim
A pior parte é esta
“Além disso, Williamson disse que Giovannini ou seu agente, depois de enviar patches incorretos, respondeu às objeções com justificativas geradas por LLM e acabou atropelando o mantenedor até que as mudanças fossem mescladas”
Se alguém realmente quer uma funcionalidade no projeto que você criou, mas você não tem interesse nela, é só deixar a pessoa fazer um fork. Tudo bem
Foi exatamente por isso que parei de tentar vencer na lógica PRs escritos por modelo. A resposta estável foi processo: limitar desde o início o número de idas e vindas e, depois disso, fechar a thread. Tentar vencer no debate algo que não se cansa é um jogo perdido
No começo eu ia fazer uma piadinha leve do tipo “ponha seus agentes na coleira e faça eles se comportarem!”, mas quanto mais eu lia, mais isso parecia uma situação bem assustadora
Mesmo deixando de lado o potencial ataque à cadeia de suprimentos, me preocupa o tempo desperdiçado por agentes de IA sem supervisão que fazem as pessoas do outro lado trabalharem à toa
Se o mantenedor levar isso a sério, vai perder muito tempo com isso, e aparentemente costuma levar. Mas não consigo entender como quem solta agentes assim consegue achar aceitável tratar outras pessoas desse jeito
A solução seria a cortesia básica, o método já comprovado de “você se esforçou para escrever isso, então eu também vou me esforçar para ler”, mas se esse tipo de contribuição drive-by começar a chover, parece que acabaremos numa situação ridícula de agentes conversando entre si em fóruns públicos
Enfim, viajei um pouco, mas a época em que vivemos parece um pouco mais brutal até do que outros períodos difíceis recentes
Na mensagem suspeita [1] que alega comprometimento, o usuário ou agente disse o seguinte
“Para identificar contas e ações que eu mesmo verifiquei, usarei o termo ‘NATCIOS’ em tudo que eu tiver verificado pessoalmente”
Alguém sabe o que NATCIOS quer dizer aqui? Não encontro esse termo em nenhum lugar da internet. Sinceramente, a própria frase é tão estranha que chega a parecer que alguém está passando por algum problema de saúde
[1] https://lwn.net/ml/all/AS8PR08MB6055AE3054B34F6A567AC95BCF08...
A cada dia, a web of trust do GPG parece melhor. Queria que, nos últimos 20 anos, não tivessem se esforçado tanto para evitar ao máximo qualquer coisa que permitisse criptografia e assinaturas do lado do usuário
Se alguém tiver informações bem fundamentadas, são bem-vindas. Não estou dizendo que realmente sei
O título enterra o ponto principal. O dono da conta em que o agente operou disse que é bastante provável que sua conta tenha sido comprometida, e o administrador que está investigando aparentemente também acha isso bastante provável
É óbvio que um patch ruim é ruim, mas gerar ruído com aparência de confiança para administradores que já estão sem folga é realmente péssimo
O rastreador de issues e os PRs estão ficando cada vez mais difíceis de confiar. Ao mesmo tempo, é verdade que a IA ajuda bastante o open source, então claramente são necessários guardrails para procedência, comportamento automatizado em issues e mudanças repentinas no comportamento de contribuidores
“Depois de 27 de maio, Williamson disse que Giovannini respondeu em particular dizendo que suas credenciais haviam sido comprometidas e que a pessoa por trás do sistema de IA não era ele”
Então é simples. Não daria para reverter todas as mudanças como se nunca tivessem existido?
Fiquei indo e voltando nisso várias vezes na cabeça. Gosto muito do Fedora e é o SO em que me sinto mais à vontade, mas esse tipo contínuo de comprometimento da cadeia de suprimentos tira meu sono
Queria que existisse um Fedora LTS com o mesmo tamanho de comunidade, sistema de build etc. Porque gosto muito desses aspectos e da transparência
Sei que há preocupações com qualquer SO, e agradeço insights ou discussões a respeito, mas considerando o equilíbrio entre o tempo de permanência entre releases e o tempo até chegar ao meu sistema, além da chance de algo ser detectado graças à visibilidade e ao uso suficientes, uma instância sem graça de Ubuntu LTS parece me deixar um pouco mais tranquilo
Claro, também sei que neste caso foi o instalador, não os pacotes do sistema