Pesquisadores usam Claude para invadir repositório interno da OpenAI

Três pesquisadores da startup de segurança Hacktron AI — Harsh Jaiswal, Mohan Pedhapati e Rahul Maini — usaram, no final de julho, o Claude Opus 5 da Anthropic para construir uma cadeia de exploração que foi do fórum de desenvolvedores da OpenAI até o repositório de código interno da própria empresa. A equipe publicou o processo completo em um blog no dia 13 de setembro, e nesta semana o Wall Street Journal e a The Information noticiaram o caso, o que ampliou a repercussão.

Toda a cadeia começou com uma única imagem e terminou no repositório principal da OpenAI, openai/openai. Como prova, os pesquisadores abriram ali um pull request inofensivo (número #1186742), sem ler nenhum dado sensível.

Uma imagem HEIF que atravessou o fórum

O fórum de desenvolvedores da OpenAI, community.openai.com, roda sobre o Discourse. A biblioteca de imagens padrão do Discourse não reconhece o formato HEIF, então uploads nesse formato são repassados ao ImageMagick, que por sua vez chama o libheif para decodificação.

O problema está no libheif. A biblioteca tem uma vulnerabilidade de estouro de buffer no heap, e a versão 1.19.7 usada no repositório do Debian não recebeu o retroporte do patch de segurança correspondente. Com base nisso, os pesquisadores criaram uma imagem HEIF maliciosa que, após o upload, deu a eles execução remota de código no servidor do fórum. Segundo a Hacktron, as versões afetadas do libheif vão da 1.19.7 à 1.23.x, atingindo várias distribuições Linux.

Tomar o servidor do fórum foi apenas o primeiro passo. Nele estavam armazenados os tokens de autenticação de usuários logados, incluindo funcionários da OpenAI. Os pesquisadores descobriram que alguns desses tokens do fórum podiam ser usados diretamente no ChatGPT. A Hacktron destacou esse ponto especificamente no blog:

"the vulnerability to escalate is not Discourse-specific. It is an OpenAI SSO issue"

A vulnerabilidade usada para escalar privilégios não é específica do Discourse; é um problema do sistema de login único (SSO) da OpenAI.

Por essa brecha, os pesquisadores assumiram o controle das contas de ChatGPT e Codex de vários funcionários. Em um dos casos, o Codex estava conectado à organização da OpenAI no GitHub; os pesquisadores enviaram um prompt a esse Codex, fazendo com que ele mesmo abrisse um pull request no repositório interno. Segundo a Hacktron, pela mesma conexão também era possível acessar serviços como Slack e e-mail, mas eles não chegaram a mexer neles.

O Opus 4.8 não conseguiu, o Opus 5 levou três horas

A parte que mais recebeu atenção no blog é o papel do modelo. O estouro de buffer no libheif é difícil de explorar em um ambiente com ASLR (randomização de layout de espaço de endereçamento) ativado; a equipe já havia tentado várias vezes com o Claude Opus 4.8, sem sucesso.

"Opus 4.8 struggled across several sessions to produce a working exploit with ASLR enabled. Within hours of Opus 5's release, we gave it the same problem and it succeeded."

O Opus 4.8 teve dificuldades em várias sessões para produzir um exploit funcional com o ASLR ativado; horas após o lançamento do Opus 5, demos a ele o mesmo problema, e ele conseguiu.

Segundo a linha do tempo apresentada pela equipe, o Opus 5 foi lançado em 24 de julho, e em cerca de três horas o modelo primeiro escreveu um exploit funcional para uma máquina ARM64 local e depois o portou para o ambiente x86-64 com jemalloc usado pelo servidor do Discourse. Os pesquisadores deixaram o Claude rodando em um loop autônomo, testando repetidamente contra uma instância do Discourse Cloud montada por eles mesmos; na manhã seguinte, ao verificar, ele já havia conseguido execução de código e lido o arquivo /etc/hosts como prova. Depois, o mesmo script funcionou também na instância da OpenAI.

Da descoberta até a violação completa, se passaram cerca de 72 horas. Segundo a Hacktron, toda essa pesquisa, batizada de "HEIF Heist", custou menos de 3.000 dólares em tokens.

Não é a primeira vez que essa empresa usa o Claude para escrever exploits. Anteriormente, ela já havia publicado uma análise sobre o uso do Claude Opus para escrever um exploit do Chrome, cuja conclusão na época foi que o modelo conseguia realizar a maior parte do trabalho, mas as etapas cruciais ainda exigiam intervenção humana. Desta vez, em toda a cadeia do fórum até o repositório, a participação humana caiu visivelmente. Segundo a descrição da equipe, o código de exploração da parte do Discourse foi praticamente todo produzido pelo próprio modelo.

Correção e recompensa

A resposta da OpenAI não foi lenta. Depois que os pesquisadores reportaram o problema em 25 de julho, a OpenAI confirmou a correção em cerca de 14 horas, às 22h49 (UTC) do mesmo dia. O Discourse confirmou o recebimento do relatório no domingo e lançou a correção na segunda-feira. Em 1º de setembro, a OpenAI pagou uma recompensa de 6.500 dólares.

Por enquanto, o que se sabe vem apenas do relato unilateral da Hacktron. Se a OpenAI investigou os registros de acesso desse servidor do fórum antes da correção, se mais alguém explorou a mesma cadeia e se os tokens dos funcionários foram todos revogados são pontos que, até o fechamento desta matéria, não tiveram esclarecimento público.

Para desenvolvedores na China, o caso traz dois pontos de comparação diretos: primeiro, equipes que mantêm suas próprias comunidades em Discourse ou Discuz costumam manter versões do ImageMagick e de várias bibliotecas de decodificação na cadeia de processamento de imagens desatualizadas em relação ao programa principal. Segundo, empresas que unificam fórum, sistema de tickets e produto principal em um único sistema de login único (SSO) dependem, quando um site periférico é comprometido, de quanto o escopo do SSO foi restringido para limitar até onde um token pode chegar.

Fontes: blog técnico da Hacktron AI, The Wall Street Journal, CocoLoop, The Information; o blog da Hacktron confirma a cadeia de exploração, a linha do tempo de 72 horas, o tempo de correção de 14 horas, a recompensa de 6.500 dólares e o custo de 3.000 dólares em tokens.