Os desenvolvedores da biblioteca Python LiteLLM, que conta com 95 milhões de downloads por mês e 3,5 milhões nas últimas 24 horas, informaram sobre a compromissão do projeto. Os atacantes conseguiram interceptar as credenciais do mantenedor e publicar no PyPI duas versões maliciosas — 1.82.7 e 1.82.8, que continham código para roubo de chaves e senhas dos sistemas dos usuários. Neste momento, as versões maliciosas foram removidas do PyPI e o projeto está temporariamente suspenso até a conclusão da investigação.
O token de acesso à conta LiteLLM no PyPI caiu nas mãos dos atacantes devido à utilização de um scanner de segurança de dependências, o trivvy, no sistema de integração contínua. Antes disso, no final de fevereiro, os atacantes conseguiram acessar a infraestrutura do projeto Trivy, explorando uma vulnerabilidade no manipulador pull_request_target, executado no sistema de integração contínua do Trivy. Após a compromissão, os atacantes publicaram versões maliciosas do Trivy 0.69-0.69, substituíram o manipulador do GitHub Action trivy-action e disponibilizaram uma imagem Docker modificada com o Trivy.
Em 24 de março, às 11:30 (MSK), as credenciais interceptadas do mantenedor do LiteLLM (krrishdholakia) foram usadas para publicar diretamente versões maliciosas do LiteLLM 1.82.7 e 1.82.8 no PyPI, contornando o CI/CD oficial do GitHub. O repositório do projeto no GitHub não foi afetado — a atividade maliciosa foi observada apenas no PyPI. Na versão LiteLLM 1.82.7, o código malicioso foi integrado no arquivo litellm/proxy/proxy_server.py e ativado ao importar litellm.proxy. Na versão 1.82.8, foi incluído o arquivo site-packages/litellm_init.pth, e um manipulador foi adicionado ao arquivo proxy_server.py, empacotado em formato base64 e ativado em qualquer execução.
O código malicioso adicionado realizava a varredura e envio de dados confidenciais. Eram enviados as chaves SSH e SSL/TLS encontradas no sistema, o conteúdo de variáveis de ambiente, credenciais para AWS, GCP, Azure e K8s, chaves de carteiras de criptomoedas, senhas de bancos de dados, histórico de operações no interpretador de comandos, arquivos de configuração do Git, CI/CD, gerenciadores de pacotes e Docker. Os dados encontrados eram criptografados usando algoritmos AES-256-CBC + RSA-4096 e enviados por meio de uma requisição HTTP POST para o site "https://models.litellm.cloud/" (o domínio litellm.cloud foi registrado algumas horas antes da publicação das versões maliciosas).
Os usuários do LiteLLM são aconselhados a garantir que o arquivo litellm_init.pth não esteja presente no diretório site-packages, atualizar todas as chaves e credenciais caso instalem a versão 1.82.7 ou 1.82.8, fixar versões específicas do LiteLLM nas configurações de carregamento de dependências e comparar as versões do LiteLLM utilizadas com o código das versões no GitHub.
Fonte: opennet.ru
