LiteLLM 1.107.0 é sequestrado para distribuir um ladrão de credenciais
Wheels maliciosos do LiteLLM 1.107.0 ficaram no PyPI das 11h39 às 13h23 UTC em 21 de outubro de 2026 e rodavam um ladrão de credenciais a cada início do Python.
3 min de leitura

Em números
- PyPI wheels carried the malware
- 7
- UTC window the wheels were on PyPI
- 11:39-13:23
- the clean version to reinstall
- 1.106.2
Atacantes publicaram um LiteLLM 1.107.0 malicioso no PyPI e no Docker em 21 de outubro de 2026, depois de tomar o pipeline de lançamentos do projeto. Toda máquina que o instalou rodava um ladrão de credenciais sempre que o Python iniciava. O LiteLLM pede que as equipes afetadas considerem seus segredos roubados e os troquem.
O LiteLLM é uma ferramenta de código aberto que fica entre os apps e os provedores de modelos de IA. Seu servidor proxy guarda as chaves de API dos provedores, o que o torna um alvo valioso.
O que foi publicado e por quanto tempo
O relatório de incidente do LiteLLM lista todos os artefatos afetados. A tag oficial de código v1.107.0 no GitHub está limpa. A versão foi gerada a partir de um repositório que imitava o original, Berri-AI/litellm, que segundo a StepSecurity tinha dez commits dos atacantes.
| Artefato | Afetado | Janela (UTC, 21 de outubro) |
|---|---|---|
| PyPI | Os sete wheels de litellm==1.107.0 (macOS, Linux, musl Linux, Windows) | 11h39 às 13h23 |
| Docker Hub | v1.107.0, latest, main-latest, main-stable | 11h46 às 14h20 |
| GitHub Container Registry | As mesmas tags de litellm, litellm-database, litellm-non_root | 11h46 às 13h51 |
A versão 1.106.2 está limpa, assim como as versões candidatas da 1.107.0, segundo a StepSecurity. O LiteLLM diz que clientes da sua versão corporativa privada não foram afetados.
Como a carga maliciosa funciona
O malware não esperava alguém importar o LiteLLM. Ele adicionava dois ganchos de inicialização, cook.pth e sitecustomize.py. O Python executa os dois sempre que inicia naquele ambiente, mesmo quando o comando é apenas pip.
A primeira carga é um ladrão que se chama "privcollect", informa a StepSecurity. Ele coleta tokens de nuvem, chaves privadas, arquivos de credenciais de ferramentas de IA, dados do navegador e variáveis de ambiente. Também leva as credenciais salvas do proxy do LiteLLM. Os dados são criptografados e enviados para litellm.dev, um domínio registrado em 13 de outubro.
A segunda carga é um carregador que roda como processo oculto em segundo plano. A cada hora, ele lê um nome de host de um arquivo no GitHub, baixa código desse host e o executa. A conta do GitHub por trás desse arquivo foi apagada, mas as máquinas infectadas continuam consultando o mesmo endereço.
Como os atacantes entraram
O ataque passou pelas contas do GitHub de três engenheiros, disse ao The Hacker News Oliver Jensen, diretor de segurança do LiteLLM. Uma credencial desligou a proteção de branch, outra aprovou o lançamento em produção e uma terceira apagou os registros dos workflows.
Na atualização das 20h30 UTC, o LiteLLM diz acreditar que o atacante pegou tokens do GitHub CLI em logs. Esses logs eram de uma implantação interna do LiteLLM acessível pela internet. A empresa observa que o Claude Code pode incluir o token do GitHub CLI de um usuário no corpo de uma resposta. Se esses corpos são registrados, o token vai parar nos logs. Antes, Jensen tinha dito que o método ainda não estava identificado.
No mesmo dia, o GitHub abriu uma prévia pública de tokens do GitHub CLI com prazo de validade. Segundo o changelog do GitHub, um token vazado passa a ficar "inutilizável em poucas horas, em vez de durar indefinidamente".
O que isso significa para desenvolvedores
Se você usa o LiteLLM, verifique hoje, na ordem que o LiteLLM indica.
- Não comece com
pip install. Os ganchos de inicialização rodam de novo a cada início do Python. Primeiro encontre e pare o processo que segura/tmp/remote_code_loader.lock. - Remova os ganchos e depois reinstale. Apague
cook.pth,cook.pyesitecustomize.pydesite-packages. Instalelitellm==1.106.2ou, melhor ainda, recrie o ambiente ou a imagem do zero. - Considere os segredos perdidos. O LiteLLM diz que, se a 1.107.0 rodou em um host com acesso de saída à internet, deve-se supor que o roubo deu certo. Troque as chaves de provedores guardadas no proxy, suas chaves mestra e virtuais, a senha do banco de dados e o papel de nuvem da máquina.
- Fixe por digest. Tags como
latestapontaram para a imagem maliciosa por mais de duas horas. Fixe imagens por digest e pacotes por hash. - Encurte os seus próprios tokens. Ative os tokens do GitHub CLI com validade usando
gh auth login --expiring, disponível a partir do gh 2.103.0. Mantenha tokens fora dos corpos de requisição e resposta que vão para os logs.
É o segundo lançamento do LiteLLM sequestrado neste ano, depois das versões 1.82.7 e 1.82.8 em março. Chaves de provedores guardadas também foram o alvo em Vazamento no OpenCode Console expõe chaves guardadas de provedores de IA na semana passada.
Fontes
- Contained: Oct 21, 2026 LiteLLM release v1.107.0 Compromised - LiteLLM
- LiteLLM Compromised in Supply Chain Attack Delivering Credential Stealer and Backdoor - The Hacker News
- litellm 1.107.0 Compromised on PyPI: Backdoored Wheels Drop a Credential Stealer and an Hourly Remote Code Loader - StepSecurity
- GitHub CLI: Opt in to expiring, auto-refreshing OAuth tokens - GitHub Changelog
Artigos relacionados

Falha no SAP Cloud SDK for Python pode vazar segredos do OAuth2
Uma falha com CVSS 10.0 no SAP Cloud SDK for Python permite que atacantes redirecionem solicitações de tokens OAuth2 e roubem segredos de aplicativos. A versão 0.45.2 e posteriores corrigem o problema.

XSS nos logs de build do SourceHut permitia sequestrar contas
Um log de build manipulado podia executar script no navegador de um usuário do SourceHut. O ansi2html 1.9.4 corrige a falha, CVE-2026-92973, que afetava as versões 1.7.0 a 1.9.3.

Chrome passa a um ciclo de duas semanas
O Chrome 153 inicia um ciclo de marcos de duas semanas, contra quatro antes. Segundo o Google, o Chrome 149 e o 150 corrigiram sozinhos 1.072 falhas de segurança.