Alerta de Segurança Python: Ataque à Biblioteca LiteLLM Expõe Chaves de IA e Credenciais de Nuvem

O Perigo Oculto no Ecossistema Python: O Caso LiteLLM
Para desenvolvedores que utilizam Python, a conveniência de bibliotecas prontas no PyPI é inegável. No entanto, essa facilidade abre portas para um dos riscos mais críticos da atualidade: o ataque de cadeia de suprimentos (supply chain attack). Recentemente, o grupo de hackers TeamPCP executou uma operação sofisticada que comprometeu a popular biblioteca LiteLLM, colocando em risco chaves de APIs de IA e credenciais de infraestrutura em nuvem.
Como o Ataque Aconteceu: Uma Reação em Cadeia
O ataque não começou diretamente no LiteLLM, mas sim através de uma vulnerabilidade em outra ferramenta confiável. Veja o passo a passo da invasão:
- Comprometimento do Trivy: Os atacantes primeiro invadiram o Trivy, um scanner de vulnerabilidades open-source amplamente utilizado, falsificando commits de mantenedores legítimos.
- Infiltração no CI/CD: Como o LiteLLM utilizava o Trivy em seu pipeline de Integração e Entrega Contínua (CI/CD), o binário infectado conseguiu acessar a memória do executor.
- Roubo de Tokens: A partir desse acesso, o grupo roubou o token
PYPI_PUBLISH, permitindo que publicassem versões maliciosas da biblioteca diretamente no PyPI (Python Package Index), ignorando completamente o repositório oficial de código-fonte.
O Alvo Estratégico: Por que a LiteLLM?
A LiteLLM atua como um gateway unificado para mais de 100 provedores de modelos de linguagem (LLMs), incluindo gigantes como OpenAI, Anthropic e Azure. Para um cibercriminoso, comprometer essa biblioteca é como encontrar a chave mestra de um cofre: um único acesso concede a possibilidade de roubar chaves de API de múltiplos provedores simultaneamente.
De acordo com pesquisas da Hunt.io, mais de 33.000 instâncias de LiteLLM expostas à internet estavam ativas durante o ataque. A vulnerabilidade recebeu o código CVE-2026-33634, com uma pontuação de gravidade CVSS de 9.4 (Crítica).
Análise Técnica: Versões 1.82.7 e 1.82.8
O grupo TeamPCP distribuiu duas versões maliciosas, cada uma com uma técnica de infiltração diferente:
- Versão 1.82.7: Injetou um payload codificado em Base64 diretamente no arquivo
proxy_server.py, que era executado assim que o proxy do LiteLLM iniciava. - Versão 1.82.8: Mais sutil e perigosa, esta versão adicionou um arquivo
.pthao site-packages. Isso fazia com que o malware fosse ativado toda vez que o interpretador Python fosse iniciado, independentemente de a biblioteca LiteLLM ter sido importada ou não.
O que foi roubado e como o malware operava?
O payload malicioso operava em três fases distintas para garantir a exfiltração máxima de dados:
- Coleta: O malware vasculhava variáveis de ambiente e arquivos de configuração em busca de chaves da OpenAI, Anthropic, Azure, além de credenciais AWS/GCP e arquivos locais como
~/.kube/config. - Exfiltração: Os dados eram criptografados via AES-256-CBC e enviados para um servidor de Comando e Controle (C2) através de um arquivo chamado
tpcp.tar.gz. - Persistência: Por fim, instalava-se um backdoor que buscava novas instruções de um domínio remoto a cada 50 minutos, permitindo a execução de novos códigos remotamente.
Como Proteger Seus Projetos Python
Este incidente serve como um lembrete crucial sobre a importância da segurança em dependências. Para evitar cair em armadilhas semelhantes, recomendamos:
- Utilize hashes de dependências: Use arquivos
requirements.txtcom hashes ou ferramentas como o Poetry para garantir que a versão instalada não foi alterada. - Monitore vulnerabilidades: Acompanhe bases de dados como o NVD (National Vulnerability Database) para atualizações sobre CVEs.
- Princípio do Privilégio Mínimo: Nunca armazene chaves de API com permissões administrativas em variáveis de ambiente expostas em runners de CI/CD sem a devida proteção.
Compartilhar:


