O pacote Python LiteLLM foi comprometido em ataque de cadeia de suprimentos

O pacote Python LiteLLM, amplamente utilizado em projetos de inteligência artificial, foi alvo de um ataque de cadeia de suprimentos que resultou na distribuição de um malware capaz de roubar credenciais e instalar um backdoor. Segundo relatos de SafeDep, Socket, StepSecurity e Upwind, a versão afetada, LiteLLM 1.107.0, foi distribuída através de pacotes PyPI e imagens Docker.

A versão maliciosa foi imediatamente removida do índice PyPI e as imagens Docker comprometidas foram excluídas das plataformas de hospedagem.

Oliver Jensen, diretor de segurança no projeto LiteLLM, informou que uma investigação está em andamento para identificar o vetor inicial de ataque. Segundo ele, o grupo de atacantes obteve tokens OAuth de três engenheiros através de contas do GitHub comprometidas. “Identificamos que as ações maliciosas ocorreram por meio de tokens de autenticação roupados via GitHub CLI em três contas de engenheiros. Um dos usuários foi usado para disparar o processo de lançamento do projeto e outro para aprovar a publicação”, explicou Jensen. “Todos os tokens envolvidos no ataque foram revogados.”

Jensen destacou que ainda não foi possível determinar como os tokens foram obtidos, o que impede afirmar se há outros acessos não autorizados às contas. Como medida temporária, o projeto removeu todos os usuários exceto um da organização no GitHub.

Além disso, o projeto LiteLLM atualizou os registros públicos para remover links de confiança com sua organização no GitHub, prevenindo futuras publicações maliciosas.

A análise revelou dois componentes maliciosos principais na versão comprometida: um coletor de credenciais chamado “privcollect” e um daemon em segundo plano que verifica um repositório no GitHub a cada hora e executa comandos Python enviados pelos atacantes.

O malware é ativado automaticamente ao iniciar o interpretador Python, graças a um arquivo “cook.pth” que contém a instrução “import cook”, disparando o coletor de credenciais. Esse componente é capaz de extrair tokens de nuvem, contas de desenvolvedores, chaves privadas, arquivos de credenciais de ferramentas de IA, dados de navegadores Chromium e Firefox, além de variáveis de ambiente.

O malware também coleta informações de implantações LiteLLM, focando em credenciais armazenadas pelo proxy e configurações de modelos. Os dados roubados são compactados em arquivos TAR com compressão GZIP e enviados via requisição HTTP POST para o endpoint “litellm.dev/healthcheck”.

Outra funcionalidade do malware envolve ler o arquivo “domain.txt” de um repositório específico no GitHub, executar novamente o coletor de credenciais caso encontre um domínio, e então executar um comando HTTP GET contra um caminho específico no domínio encontrado. Atualmente, o repositório retorna um erro 404.

Usuários que baixaram a versão comprometida devem revogar e substituir imediatamente todas as credenciais expostas, utilizando um ambiente limpo. É altamente recomendável fixar a versão segura 1.106.2 com base no digest SHA256.

Com informações de: The Hacker News