IA Todo Dia
← Voltar às notícias
Segurança

LiteLLM comprometido: versão falsa no PyPI roubava credenciais de desenvolvedores

LiteLLM comprometido: versão falsa no PyPI roubava credenciais de desenvolvedores

Uma das bibliotecas mais populares para conectar aplicações a modelos de IA, a LiteLLM, teve uma versão maliciosa publicada no PyPI — o repositório oficial de pacotes Python. A versão 1.107.0 trazia um ladrão de credenciais e um backdoor de execução remota, que rodavam toda vez que qualquer processo Python iniciava na máquina.

O caso foi detalhado pela SafeDep – Real-time Open Source Software Supply Chain Security, e confirmado pela própria LiteLLM em um relatório de incidente. É mais um exemplo preocupante de ataque à cadeia de suprimentos de software.

O que aconteceu

Para quem não conhece, a LiteLLM é uma ferramenta que padroniza chamadas a diferentes provedores de IA (OpenAI, Anthropic, Google e outros) usando uma única interface. Ela é muito usada por desenvolvedores e empresas que integram IA em seus produtos.

LiteLLM comprometido: versão falsa no PyPI roubava credenciais de desenvolvedores
Foto de FlyD no Unsplash

Segundo a investigação, o código malicioso não estava no GitHub oficial do projeto. Ele só aparecia nos pacotes publicados no PyPI e em imagens Docker. Todos os sete wheels (versões para Linux, macOS e Windows) instalavam três arquivos escondidos dentro da pasta site-packages.

O detalhe mais grave: dois desses arquivos eram carregados sempre que o Python iniciava — mesmo em processos que nunca importavam a LiteLLM. Isso significa que o pip, editores de código, servidores de linguagem e pipelines de CI ficavam todos expostos ao ladrão de credenciais.

Como o ataque foi montado

O relatório da LiteLLM aponta que o invasor obteve as credenciais do GitHub CLI de três desenvolvedores. A empresa acredita que elas foram capturadas nos logs de uma instalação interna da própria LiteLLM que estava exposta à internet.

Com um token de proprietário da organização, o atacante contornou as proteções de branch e apontou o fluxo de publicação para um repositório sósia, o Berri-AI/litellm — note a diferença sutil do nome original. Em seguida, usou a credencial de um segundo desenvolvedor para passar pela etapa de aprovação, e o pipeline oficial acabou construindo, assinando e publicando os artefatos maliciosos.

Ou seja: o pacote veio pela via legítima e assinada, o que torna o ataque especialmente difícil de detectar. A única pista visível no código-fonte era uma linha extra num arquivo de configuração de build.

Por que isso importa pra você

Se você instalou litellm==1.107.0 entre os dias 21 de outubro de 2025 — a remoção do PyPI aconteceu às 13:23 UTC — é preciso agir. O mesmo vale para quem usou as imagens Docker v1.107.0, latest, main-latest e main-stable, que carregaram o código malicioso por algumas horas.

A boa notícia é que as versões 1.106.2, 1.107.0rc1 e 1.107.0rc2 estão limpas, assim como os pacotes complementares litellm-proxy-extras e litellm-enterprise. Quem usa essas versões não foi afetado por essa publicação específica.

O caso reforça uma lição que a comunidade de software vem aprendendo de forma dolorosa: confiar cegamente num pacote só porque ele veio de um repositório oficial e está assinado já não basta. Credenciais vazadas e repositórios sósia são vetores reais.

Na prática, vale fixar versões específicas de dependências, revisar atualizações antes de aplicá-las em produção e monitorar o comportamento de pacotes — ainda mais em ferramentas tão centrais quanto as que conectam suas aplicações a modelos de IA. Se desconfiar de comprometimento, troque as credenciais expostas o quanto antes.

Fonte: SafeDep – Real-time Open Source Software Supply Chain Security · Imagem de capa: SafeDep – Real-time Open Source Software Supply Chain Security

Quer aplicar IA no seu trabalho?

Aprenda qual ferramenta usar para cada tarefa — ChatGPT, Claude, Copilot, Gemini e NotebookLM — nos cursos do IA Todo Dia.

Conhecer os cursos →
Fonte original: SafeDep - Real-time Open Source Software Supply Chain Security