Ao vivo 18/11 · Turma 318 nov às 19:00 MSK — aula prática gratuita de agentes de IA · Turma 3 ao vivo começa 23/11Aula 18/11 →Turma 3 (23/11)
LançamentoAPI / Produto · Pronto p/ usoSimon Willison→ original

llm 0.37.2 fecha vazamento: chave da OpenAI podia ir para um provedor terceiro

Duas vulnerabilidades foram encontradas na ferramenta CLI llm, de Simon Willison: a chave da OpenAI podia ir parar em um provedor terceiro conectado como endpoint compatível com a OpenAI. O problema foi relatado pelo pesquisador Daniel de Araujo. A versão 0.37.2 fecha as duas brechas. Se você usa o llm tanto com a OpenAI quanto com APIs de terceiros, atualize e considere rotacionar a chave.

Processado por IA de Simon Willison; editado por Hamidun News
llm 0.37.2 fecha vazamento: chave da OpenAI podia ir para um provedor terceiro
Fonte: Simon Willison. Colagem: Hamidun News.
Ouvir artigo
Ficha técnica e números-chave
ParâmetroDados
Fonte originalSimon Willison ↗
Editor-chefe
Caso 1a chave indicada em api_key_name nunca foi salva
Caso 2modelo com responses: true e a opção -o chat_completions 1
Correçãoatualizar para o llm 0.37.2 e conferir as chaves

O utilitário llm, de Simon Willison, tornou-se para muitos desenvolvedores um canivete suíço para conversar com modelos de linguagem pelo terminal. Ele acessa não só a OpenAI, mas qualquer provedor com API compatível com a OpenAI. Foi justamente nessa flexibilidade que o problema apareceu: a versão 0.37.2 corrige uma vulnerabilidade pela qual uma chave secreta da OpenAI podia ser enviada ao destinatário errado.

O que aconteceu

O llm tem um mecanismo para conectar endpoints de terceiros por meio do arquivo extra-openai-models.yaml. A partir da versão 0.37, ele é gerenciado por um comando dedicado, llm openai endpoint add. A ideia é simples: muitos provedores e servidores locais replicam o formato da API da OpenAI, então podem ser descritos em uma configuração e usados como modelos comuns.

O pesquisador Daniel de Araujo descobriu duas situações em que sua chave da OpenAI podia ir parar em um endpoint de terceiros. Há dois avisos de segurança no GitHub sobre o tema: GHSA-v9h7-jj4g-f862 e GHSA-r639-rr7r-x72w.

  • A chave de api_key_name não estava salva. Para um endpoint de terceiros, você informa com que nome sua chave está armazenada. Se essa chave nunca foi salva, o utilitário não deveria colocar nenhuma outra no lugar. Pela descrição da vulnerabilidade, ele usava a chave da OpenAI configurada.
  • Um modelo com responses: true foi executado com -o chat_completions 1. Essa combinação mudava a requisição para outro modo de funcionamento, e a chave também podia ir para o lugar errado.

Nos dois casos não é preciso má intenção. Basta esquecer de adicionar uma chave ou passar uma opção, e o segredo acaba com um terceiro.

Por que isso é ruim

Imagine uma configuração típica. Você tem no llm uma chave da OpenAI salva para tarefas de trabalho. Conectou o endpoint de um provedor pequeno ou de um proxy alheio para comparar modelos. Escreveu o nome da chave na configuração, mas ainda não adicionou a chave em si. Você executa o comando, e uma requisição com sua chave da OpenAI segue para um servidor que você não controla.

Esse provedor fica com uma chave funcional, com o seu limite e a sua cobrança. Qualquer endpoint de terceiros, especialmente um caseiro ou experimental, pode potencialmente registrá-la em log. É um vazamento comum de segredo por erro de configuração, e não um ataque exótico.

O que fazer

  1. Atualizar para o llm 0.37.2. É o passo principal e fecha os dois cenários.
  2. Abrir o extra-openai-models.yaml e ver quais endpoints estão descritos. Verifique se cada um tem api_key_name e se a chave correspondente está realmente salva.
  3. Lembrar se você já executou modelos com responses: true junto com -o chat_completions 1. Se sim, e o endpoint não pertence à OpenAI, é melhor considerar a chave comprometida.
  4. Na menor dúvida, emitir uma nova chave da OpenAI. Sai barato, e não há necessidade de risco extra.

Há também uma lição geral. As chaves de provedores diferentes devem ser rigorosamente separadas. Se você tem vários endpoints, a chave da OpenAI não deve ser o valor que a ferramenta usa por padrão. Para experimentos com APIs de terceiros, vale criar chaves separadas com limites restritos.

Limitações

A nota de lançamento não traz detalhes sobre como exatamente a vulnerabilidade é explorada, nem dados sobre casos reais de vazamento. O autor descreve o problema como um envio acidental da chave, e não como um ataque que possa ser lançado remotamente. Isso reduz a gravidade, mas não elimina a necessidade de atualizar: erros de configuração acontecem com todo mundo.

Uma classe parecida de bugs aparece em outras ferramentas em que um mesmo cliente trabalha com vários provedores. Tudo o que aceita um endereço «compatível com a OpenAI» e ao mesmo tempo guarda uma chave da OpenAI merece ser verificado quanto ao mesmo comportamento: o que é usado quando não se encontra uma chave para o endereço.

Conclusão prática

Se você usa o llm apenas com a OpenAI, isso quase não afeta você. Se conectou endpoints de terceiros, atualize agora e confira a configuração. E diante de qualquer combinação suspeita de opções, emita uma nova chave.

História

Perguntas frequentes sobre a notícia

O que aconteceu?

O llm tem um mecanismo para conectar endpoints de terceiros por meio do arquivo extra-openai-models.yaml. A partir da versão 0.37, ele é gerenciado por um comando dedicado, llm openai endpoint add. A ideia é simples: muitos provedores e servidores locais replicam o formato da API da OpenAI, então podem ser descritos em uma configuração e usados como modelos comuns. O pesquisador Daniel de Araujo descobriu duas situações em que sua chave da OpenAI podia ir parar em um endpoint de terceiros.

Por que isso é ruim?

Imagine uma configuração típica. Você tem no llm uma chave da OpenAI salva para tarefas de trabalho. Conectou o endpoint de um provedor pequeno ou de um proxy alheio para comparar modelos. Escreveu o nome da chave na configuração, mas ainda não adicionou a chave em si. Você executa o comando, e uma requisição com sua chave da OpenAI segue para um servidor que você não controla. Esse provedor fica com uma chave funcional, com o seu limite e a sua cobrança.

O que fazer?

Atualizar para o llm 0.37.2. É o passo principal e fecha os dois cenários. Abrir o extra-openai-models.yaml e ver quais endpoints estão descritos. Verifique se cada um tem api_key_name e se a chave correspondente está realmente salva. Lembrar se você já executou modelos com responses: true junto com -o chat_completions 1. Se sim, e o endpoint não pertence à OpenAI, é melhor considerar a chave comprometida. Na menor dúvida, emitir uma nova chave da OpenAI. Sai barato, e não há necessidade de risco extra.

ZK
Zhemal Khamidun — CPO da Alpina Digital, gerente de produto do AlpinaGPT. Cria produtos de IA desde 2019. O Hamidun News é um projeto pessoal que virou um agregador em produção com mais de 6.000 leitores.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
O que você acha?
Carregando comentários…