Para: desenvolvedores e operadores que usam o LiteLLM, a ferramenta de código aberto para chamar muitas APIs de LLM (modelos de linguagem de grande porte) por uma única interface, seja como biblioteca Python ou como proxy (gateway de LLM) executado no Docker.
Este artigo se baseia no aviso oficial da BerriAI, empresa por trás do LiteLLM, e nas atualizações de status que ela publicou no GitHub. Ele não trata de técnicas de ataque, do conteúdo do malware nem de valores específicos de indicadores de comprometimento (IoC). Consulte os nomes de arquivo e os digests das imagens na página do aviso da empresa.
Em andamento: este artigo será atualizado conforme a organização publicar mais informações
Em 24 de outubro de 2026, 11:00 UTC (20:00 JST)Ainda não se sabe
- Mudanças para evitar que se repita (a empresa diz que as compartilhará na semana seguinte)
- O número de usuários ou ambientes afetados
- Se os dados roubados foram usados
Em 23 de outubro (UTC) a empresa disse ter concluído sua investigação da cadeia de ataque e publicou uma análise de causa raiz. Ela diz que algumas hipóteses das atualizações de status publicadas durante a investigação eram "imprecisas ou incompletas" e que a análise é a fonte canônica. A primeira publicação do incidente foi mantida na forma original.
O que os usuários precisam fazer (versões e janela afetadas, limpeza, quais chaves rotacionar) não mudou desde a primeira publicação. Em 24 de outubro (UTC) a empresa publicou as versões 1.103.8, 1.104.6, 1.105.4 e 1.106.3, e a versão mais recente no PyPI agora é a 1.106.3. A partir dessas versões, a chave cosign que assina as imagens Docker e os Helm charts mudou (passo 3 abaixo).
O que os usuários do LiteLLM devem fazer hoje
O passo 1 é para todos. Os passos seguintes seguem a orientação da empresa para ambientes que instalaram ou iniciaram uma versão ou imagem afetada.
Verifique se você foi afetado: quando instalou e qual tag usou
A empresa lista os seguintes artefatos afetados. Todos os horários são de 21 de outubro de 2026.
| Canal | Afetado | Janela (UTC) |
|---|---|---|
| PyPI | litellm==1.107.0 (todos os sete wheels) | 11:39 a 13:23 |
| Docker Hub | v1.107.0, latest, main-latest, main-stable | 11:46 a 14:20 |
| GHCR (registro de contêineres do GitHub) | As mesmas quatro tags (litellm, litellm-database, litellm-non_root) | 11:46 até ficarem indisponíveis, no máximo às 13:51 |
A empresa diz que você foi afetado se instalou o LiteLLM com pip sem fixar a versão durante a janela, ou se iniciou um contêiner a partir de uma dessas tags durante a janela. Se o CI executa pip install litellm a cada build, ou se o seu Dockerfile usa FROM com a tag latest, a versão afetada pode ter sido instalada sem que ninguém fizesse nada.
- Se um ambiente puder estar afetado, não inicie o Python nem o pip para verificar sua versão. Isole-o primeiro e depois revise os registros de implantação ou os digests das imagens a partir de uma máquina limpa separada. Se não puder descartar a exposição, trate-o como afetado e passe para a reconstrução e a rotação de credenciais abaixo (observação deste site). O comando de verificação de versão da empresa também inicia o Python, portanto não o execute antes da limpeza
- A empresa publicou os nomes de arquivo a procurar e os digests das imagens. Encontrá-los confirma a exposição, mas não encontrá-los não prova que o ambiente esteja limpo
- Se você tinha fixado explicitamente a 1.106.2 ou anterior, ou a 1.107.0rc1 ou rc2, você não foi afetado (a empresa diz que as versões anteriores estão fora deste comprometimento)
- Os clientes que baixam do registro empresarial privado não foram afetados (a empresa)
Se foi instalada: não comece com pip install nesse ambiente
Segundo a análise do pesquisador citada no aviso da empresa, o malware é instalado como arquivos que o Python carrega automaticamente toda vez que inicia. Ele é executado de novo em qualquer processo Python, inclusive nos que nunca importam o litellm e no próprio pip.
A ordem de limpeza indicada pela empresa é a seguinte (nomes de arquivo e locais estão na página do aviso):
- Sem iniciar o Python, exclua pelo shell os arquivos maliciosos indicados pela empresa (e seus arquivos de cache) de todos os diretórios site-packages afetados
- Pare o processo Python que ficou em execução em segundo plano
- Só então reinstale fixando em
litellm==1.106.2. A empresa diz que reconstruir do zero as imagens e os ambientes virtuais é melhor
Se você executou em contêineres, o caminho mais rápido costuma ser parar os contêineres criados a partir da imagem afetada e recriá-los a partir de uma imagem fixada em uma versão limpa (observação deste site).
Fixe uma versão e verifique com a nova chave de assinatura
Na primeira publicação, a empresa pediu que os usuários fixassem 1.106.2 ou qualquer versão explícita publicada antes deste incidente. Em 24 de outubro (UTC), publicou então as versões 1.103.8, 1.104.6, 1.105.4 e 1.106.3. A versão mais recente no PyPI é a 1.106.3, e a 1.107.0 continua removida. Segundo as notas de versão, essas versões removem a autoridade certificadora raiz eMudhra de todos os pacotes de certificados em que o SDK, o proxy e as imagens Docker confiam. O assunto eMudhra é tratado em o que os usuários de Python precisam fazer sobre as chaves da CA intermediária eMudhra.
No Docker, faça referência às imagens por uma tag de versão, ou melhor, por digest (um valor calculado a partir do conteúdo da imagem), e não por tags como latest ou main-stable, cujo conteúdo muda. Assim, uma mudança no que a tag aponta não chega até você.
Segundo as notas de versão, a partir dos lançamentos de 24 de outubro as imagens Docker e os Helm charts são assinados com uma nova chave cosign (cosign é uma ferramenta para assinar e verificar imagens de contêiner), e a verificação com a chave anterior falha. Se você fixa o cosign.pub antigo em scripts de cosign verify, verificações de CI ou políticas do Kubernetes que checam assinaturas (como o Kyverno), substitua-o pela nova chave do commit citado nas notas de versão. As notas de versão também listam o SHA-256 da nova chave; compare a chave que você baixar com ele antes de trocar (observação deste site).
Rotacione as chaves: tudo o que o ambiente podia acessar
A empresa diz que, se a 1.107.0 chegou a ser instalada em um host com acesso de saída à internet, você deve presumir que os dados roubados foram enviados com sucesso. Ela cita em especial:
- A função de nuvem associada ao servidor ou ao contêiner (como uma função IAM de instância ou de tarefa da AWS)
- Todas as chaves de provedores de LLM guardadas no banco de dados do proxy LiteLLM
- A chave mestra do proxy e todas as chaves virtuais que você emitiu
- A senha na string de conexão do banco de dados (DATABASE_URL)
- Todos os segredos que estavam no ambiente de qualquer processo em execução no host
Na análise do pesquisador, o malware também foi feito para coletar chaves SSH, credenciais de Git e de publicação de pacotes, tokens do Kubernetes, senhas salvas em navegadores e as configurações de assistentes de programação com IA. Se você executou a 1.107.0 em um notebook de desenvolvedor, as credenciais desse notebook também precisam ser rotacionadas.
Emita uma nova chave no painel de cada serviço e revogue a antiga (observação deste site: defina primeiro a nova chave e depois revogue a antiga, para evitar uma interrupção). O tratamento de chaves de API é tratado em o que torna arquivos .env e chaves de API arriscados.
Verifique se houve uso indevido: logs de auditoria da nuvem e uso de LLM
A empresa pede que você verifique, no log de auditoria da AWS (CloudTrail), uma chamada de verificação de identidade (GetCallerIdentity) feita com a função da instância na época da instalação e, depois, qualquer uso das credenciais dessa função a partir de fora da sua própria infraestrutura.
Como observação deste site, verifique também nos painéis dos seus provedores de LLM se houve algum aumento inesperado de uso ou de cobranças desde as 11:39 UTC de 21 de outubro (a noite no Japão). Quando uma chave de LLM roubada é usada, isso pode aparecer no uso e na cobrança. O que acontece com chaves roubadas é tratado em como chaves de API roubadas levam ao banimento de contas.
Instalou a 1.107.0 ou iniciou uma tag afetada durante a janela
Trate como comprometido
↓→
1. Limpe sem iniciar o Python
Melhor: reconstrua as imagens e os ambientes virtuais
O host tinha acesso de saída à internet
Presuma que os dados foram enviados
↓→
2. Rotacione todas as chaves que ele podia acessar
Funções de nuvem, chaves de provedores, chave mestra, banco de dados
Fixou explicitamente a 1.106.2 ou anterior
A empresa diz que as versões anteriores estão fora deste comprometimento
↓→
3. Mantenha a versão fixada; verifique as assinaturas das novas versões
No Docker, use uma tag de versão ou um digest. Nova chave cosign a partir dos lançamentos de 24 de outubro
Se você executa o proxy LiteLLM
O banco de dados do proxy guarda as chaves de todos os provedores de LLM que você conecta. Na análise do pesquisador, quando o DATABASE_URL estava definido, o malware foi feito para ler as tabelas que guardam as chaves de provedores e as configurações de modelos. Se o seu proxy iniciou na 1.107.0, planeje rotacionar todas as chaves de provedores registradas nele e faça uma lista antes de começar. As chaves virtuais que você distribuiu também precisarão ser reemitidas, então preparar uma mensagem para as pessoas que as usam reduzirá a confusão.
O que aconteceu (segundo a BerriAI)
O que segue se baseia na publicação do blog da BerriAI "Contained: Oct 21, 2026 LiteLLM release v1.107.0 Compromised" (publicada em 21 de outubro de 2026, atualizada às 20:30 UTC desse dia), em sua análise de causa raiz de 23 de outubro "The attack chain behind the v1.107.0 LiteLLM release" e nas atualizações de status que seu diretor de segurança publicou na issue do GitHub. Todos os horários são UTC de 21 de outubro, salvo indicação em contrário. Valores de indicadores, como endereços e nomes usados pelo atacante, não são reproduzidos.
27 de maio
Um arquivo de configuração contendo a chave mestra de uma plataforma interna de agentes é enviado por engano a um repositório público. O commit é rapidamente sobrescrito, mas a chave mestra não é revogada (análise de causa raiz).10 de outubro
O atacante usa a chave mestra para chamar a API da plataforma e obtém o token do GitHub CLI do proprietário da organização configurado ali. Cerca de 45 minutos depois, usando esse token, o atacante executa CI nos repositórios da empresa e exfiltra segredos de CI, obtendo os tokens de outros dois mantenedores (análise de causa raiz).12 de outubro
Usando o token do proprietário, o atacante executa CI em vários repositórios privados e exfiltra segredos pela segunda vez: segredos de baixa sensibilidade e chaves de provedores de LLM com saldo mínimo usadas em testes de CI. A empresa diz que eles não fizeram parte do caminho até os artefatos envenenados, e que rotacionou os tokens envolvidos e auditou os logs de segurança (análise de causa raiz).10:08
A proteção de branch rejeita uma alteração no workflow de lançamento privado. Cinco segundos depois, uma credencial ligada a uma conta de desenvolvedor com privilégios é usada para contornar a proteção e aplicar a alteração.10:46
O workflow modificado inicia uma execução de staging construída a partir do repositório semelhante controlado pelo atacante.11:11
O atacante usa outras credenciais roubadas para que o lançamento alterado seja aprovado e publicado.11:39 a 11:40
Sete wheels maliciosos da 1.107.0 são enviados ao PyPI.11:46
As imagens Docker do mesmo lançamento são publicadas.12:06
Um pesquisador externo relata o problema em uma issue do GitHub.12:09 a 12:24
O atacante remove os rastros da alteração do workflow (análise de causa raiz; o log de auditoria da organização manteve um registro).13:02
A empresa inicia sua resposta ao incidente (análise de causa raiz).Até as 13:23
O PyPI removeu a 1.107.0.14:20
Todas as tags afetadas do Docker Hub foram removidas ou redirecionadas para imagens limpas.20:30
A empresa atualiza o aviso, dizendo acreditar ter identificado a cadeia de ataque.23:37
A empresa informa que está identificando todos os tokens de autenticação da organização e revogando ou rotacionando cada um. Os registros continuam bloqueados para novos lançamentos e os lançamentos regulares continuam pausados.02:19 de 22 de outubro (11:19 JST)
A empresa informa que não houve novidades relevantes desde a última atualização. Os registros continuam bloqueados e os lançamentos regulares continuam pausados. Ela passa de atualizações a cada duas horas para atualizações quando houver novidades significativas.Por volta das 21:00 a 21:50 de 23 de outubro (por volta das 06:00 a 06:50 JST de 24 de outubro)
Por volta das 21:00 a empresa publica sua análise de causa raiz e diz que algumas de suas hipóteses anteriores eram imprecisas ou incompletas. Uma atualização às 21:50 (06:50 JST) da primeira publicação aponta a análise como o registro canônico.Cerca das 07:56 a 09:15 de 24 de outubro (cerca das 16:56 a 18:15 JST)
A empresa publica no PyPI as versões 1.103.8, 1.104.6, 1.105.4 e 1.106.3. Elas removem a autoridade certificadora raiz eMudhra dos pacotes confiáveis, e as imagens Docker e os Helm charts passam a uma nova chave de assinatura cosign (notas de versão).
- Afetado
- litellm==1.107.0 no PyPI (todos os sete wheels). As tags v1.107.0, latest, main-latest e main-stable no Docker Hub e no GHCR (no GHCR: as imagens litellm, litellm-database e litellm-non_root)
- O que aconteceu
- O pipeline de lançamento foi comprometido e uma 1.107.0 contendo malware foi publicada. A tag oficial v1.107.0 no GitHub não contém os arquivos maliciosos; os artefatos foram construídos a partir de um repositório semelhante controlado pelo atacante
- O que o malware faz (conforme divulgado)
- Malware compilado que rouba credenciais e carrega ferramentas de execução remota de código. Ele é executado sempre que o Python inicia e deixa um processo em execução em segundo plano
- Versões fora deste comprometimento
- Todas as versões anteriores estão fora deste comprometimento. Por ora, fixe a 1.106.2 ou outra versão explícita
- Causa (análise de causa raiz de 23 de outubro)
- Uma chave mestra não revogada de uma plataforma interna de agentes, enviada por engano a um repositório público, foi usada para obter o token OAuth do GitHub CLI de um proprietário da organização. Esse token não estava ligado a uma conta de serviço e não tinha escopo reduzido. Com ele, o atacante exfiltrou segredos de CI e obteve os tokens de dois mantenedores. O token do proprietário foi usado para desativar a proteção de branch e alterar o workflow, e os outros tokens roubados foram usados para fazer o lançamento alterado passar pela aprovação
- Aprovação de lançamento (análise de causa raiz)
- Normalmente um lançamento precisava ser aprovado por uma conta especial presa a um dispositivo físico no escritório da empresa. No início daquela mesma semana, isso foi flexibilizado para permitir que quaisquer dois engenheiros disparassem e aprovassem um lançamento, para dar suporte a lançamentos de correção mais frequentes
- Correção da primeira explicação
- A primeira publicação suspeitava que os tokens vieram dos logs de uma implantação interna do LiteLLM. A análise diz que o primeiro token veio de outro serviço
- Outras credenciais levadas
- Tokens de vários outros sistemas internos também foram levados, e a atividade do atacante se concentrou principalmente em chaves de API de inferência upstream (chaves de provedores de LLM). Em 12 de outubro, segredos de teste de CI de baixa sensibilidade e chaves de provedores com saldo mínimo foram exfiltrados de vários repositórios privados; a empresa diz que eles não fizeram parte do caminho até os artefatos envenenados. A empresa está revogando todos os tokens de todos os sistemas internos e plataformas de fornecedores
- A resposta da empresa
- Removeu os artefatos do PyPI, do Docker Hub e do GHCR. Revogou os tokens envolvidos, reduziu sua organização no GitHub a um membro não afetado, removeu os vínculos de confiança de seus registros públicos com a organização e está revogando ou rotacionando todos os tokens. Em 24 de outubro (UTC) publicou as versões 1.103.8, 1.104.6, 1.105.4 e 1.106.3 com uma nova chave de assinatura
- Números e uso indevido
- Não divulgados
O que se sabe e o que não se sabe
Este é o estado em 24 de outubro de 2026. Quando houver novidades, a coluna de situação será atualizada.
| Item | O que diz o aviso | Situação |
|---|---|---|
| Versão afetada (PyPI) | litellm==1.107.0, todos os sete wheels | Confirmado (a empresa) |
| Imagens e tags afetadas | v1.107.0, latest, main-latest, main-stable no Docker Hub e no GHCR | Confirmado (a empresa) |
| Janela de tempo | PyPI 11:39 a 13:23 UTC; Docker Hub 11:46 a 14:20 UTC; GHCR indisponível até as 13:51 UTC | Confirmado (a empresa) |
| Malware no lançamento | Rouba credenciais e carrega ferramentas de execução remota de código | Confirmado (a empresa) |
| Credenciais em hosts afetados | Se o host tinha acesso de saída, presuma que os dados foram enviados | Possível (a empresa) |
| Versões anteriores | Fora deste comprometimento | Não afetadas (a empresa) |
| Registro empresarial privado | Não afetado | Não afetado (a empresa) |
| Tag oficial do código-fonte no GitHub | Não contém os arquivos maliciosos | Não afetada (a empresa) |
| Como os tokens foram levados | Uma chave mestra não revogada, enviada por engano a um repositório público, foi usada para levar o token do proprietário guardado em uma plataforma interna de agentes (análise de causa raiz de 23 de outubro) | Confirmado (a empresa) |
| A explicação da primeira publicação, "obtidos dos logs" | Corrigida na análise: o primeiro token veio de outro serviço | Corrigido (a empresa) |
| Segunda exfiltração em 12 de outubro | Segredos de teste de CI e chaves de provedores com saldo mínimo de repositórios privados; não fizeram parte do caminho até os artefatos envenenados | Confirmado (a empresa) |
| Versões de correção e chave de assinatura | 1.103.8, 1.104.6, 1.105.4 e 1.106.3 publicadas em 24 de outubro; imagens Docker e Helm charts assinados com uma nova chave cosign | Confirmado (a empresa) |
| Mudanças para evitar que se repita | A serem compartilhadas na semana seguinte | Planejado (a empresa) |
| Número de usuários ou ambientes afetados | Não informado no aviso | Não informado |
| Uso indevido dos dados roubados | Não informado no aviso | Não informado |
Como ler isto: mesmo com a janela curta, decida pelo fato de você ter instalado ou iniciado a versão
O lançamento ficou no ar no PyPI por cerca de duas horas, mas instalações sem versão fixa no CI ou reconstruções automáticas podem tê-lo obtido nesse intervalo. Este site não faz suposições sobre números. Decida se você foi afetado pelo fato de ter instalado a 1.107.0 ou iniciado uma tag afetada durante a janela.
O aviso e a análise da empresa nomeiam o pesquisador que encontrou o problema, uma empresa de segurança que investigou de forma independente e a ferramenta de desenvolvimento mencionada na primeira publicação. Seguindo a política deste site, apenas a organização que divulgou o incidente é nomeada; as demais são descritas pelo papel.
O que pode acontecer quando um lançamento contém malware
O que segue é geral e não significa que essas coisas aconteceram neste caso. O que a empresa divulgou sobre este malware está em "O que aconteceu" acima.
Um pacote Python é executado com as permissões de quem o instala. Em um servidor ou contêiner, ele pode acessar as variáveis de ambiente, os arquivos e qualquer função de nuvem associada a esse host. Um gateway de LLM existe para guardar em um só lugar as chaves de vários provedores de LLM, de modo que, quando é comprometido, as chaves de todos os provedores a que ele se conecta ficam em risco ao mesmo tempo.
O que o diferencia do typosquatting ou da exploração de uma vulnerabilidade de versão antiga é que o código malicioso veio do canal oficial, com o nome e o número de versão oficiais. Incidentes do mesmo tipo incluem o comprometimento da cadeia de suprimentos do Trivy, os incidentes do TanStack e do Nx Console e o malware no Rank Math PRO, um plugin do WordPress.
O que os usuários do LiteLLM devem revisar: lições dos fatos divulgados
Esta seção não julga a resposta da empresa. Ela seleciona pontos do aviso e da análise de causa raiz sobre os quais os usuários podem agir para se preparar para o próximo incidente.
Pare de usar referências cujo conteúdo muda: fixe versões e use digests
Os ambientes afetados foram os que instalaram com pip sem versão fixa, ou usaram tags como latest, main-latest e main-stable, cujo conteúdo muda. Os ambientes que fixaram a 1.106.2 e referenciaram as imagens Docker por digest não foram afetados, mesmo que tenham sido reconstruídos durante a janela.
Como primeiro passo, fixe as dependências usadas em produção e no CI com um arquivo de lock que inclua hashes (pip install --require-hashes, ou arquivos de lock do uv ou do Poetry). Uma configuração que evita versões publicadas muito recentemente (como o exclude-newer do uv, que ignora tudo o que foi publicado depois de um determinado momento) também ajuda contra lançamentos retirados em poucas horas. A abordagem é tratada em auditoria de dependências com o OSV-Scanner.
Separe as chaves que você dá ao gateway de LLM, presumindo que terá de rotacioná-las
O banco de dados do proxy guarda as chaves de todos os provedores que você conecta. Quando você precisa rotacioná-las, como agora, não saber qual chave pertence a qual ambiente deixa você entre esquecer algumas ou desligar tudo.
Usar chaves de provedor separadas para desenvolvimento, testes e produção, e definir limites de gastos e alertas no lado do provedor, torna a rotação menor e ajuda a perceber o uso indevido mais cedo. O que fazer quando uma chave vaza é tratado em uma chave de API que vazou de código escrito por IA.
Revogue uma chave que você expôs, mesmo depois de sobrescrever o commit
Segundo a análise de causa raiz, o ponto de partida foi uma chave mestra enviada por engano a um repositório público em maio. O commit foi rapidamente sobrescrito e as chaves expostas foram identificadas como precisando de revogação, mas a chave mestra não foi revogada, e foi usada cerca de quatro meses e meio depois. A empresa diz que o incidente é uma forte ilustração do risco de não rotacionar uma chave potencialmente exposta.
Se você enviar um segredo a um repositório público, revogue e substitua a chave antes de se preocupar com o histórico. Depois de rotacionar, confira a lista das chaves que você substituiu para garantir que nenhuma foi esquecida (observação deste site). O problema é tratado em credenciais vazadas que continuam válidas.
Não dê a ferramentas de automação o token pessoal de um proprietário
Segundo a análise, o primeiro token levado estava configurado na plataforma de agentes para que ela pudesse abrir pull requests. Ele não estava ligado a uma conta de serviço e não tinha escopo reduzido: era o token pessoal do GitHub CLI de um proprietário da organização. A empresa observa que os tokens do GitHub CLI são emitidos após a autenticação em dois fatores e não estão sujeitos à nova autenticação que o GitHub pede antes de ações sensíveis.
Dê a agentes e bots um token dedicado, com escopo apenas para a sua função (um GitHub App ou um token de granularidade fina), e mantenha os direitos de proprietário separados das contas usadas no dia a dia (observação deste site). Disponibilizar os segredos de CI apenas aos workflows e ambientes que precisam deles também limita até onde um token roubado pode chegar (observação deste site). A proteção de uma conta do GitHub é tratada em como configurar a autenticação em dois fatores do GitHub.
Mantenha os logs e a interface de administração do gateway fora da internet
Isso acabou não sendo a causa, mas a primeira publicação da empresa observou que, em situações específicas, um assistente de programação com IA pode incluir o token do GitHub CLI de um usuário no corpo de uma resposta e, onde os corpos de resposta são registrados em log, esses tokens podem aparecer nos logs do LiteLLM.
Para um gateway que você mesmo executa, verifique três coisas: a interface de administração e a API não são acessíveis diretamente pela internet, as configurações de log que guardam corpos de resposta foram revisadas e, se você os guarda, o período de retenção é curto. A proteção de uma conta do GitHub é tratada em como configurar a autenticação em dois fatores do GitHub.
Fontes (registro público)
Os fatos deste artigo vêm das informações públicas abaixo. O conteúdo do malware, os endereços que ele contata e valores específicos de indicadores não são reproduzidos.
- BerriAI (LiteLLM), "Contained: Oct 21, 2026 LiteLLM release v1.107.0 Compromised" (publicada em 21 de outubro de 2026, atualizada às 20:30 UTC desse dia) — docs.litellm.ai
- BerriAI (LiteLLM), "The attack chain behind the v1.107.0 LiteLLM release" (análise de causa raiz, publicada em 23 de outubro de 2026) — docs.litellm.ai
- Issue nº 47826 do GitHub BerriAI/litellm (o relato do pesquisador externo e as atualizações de status da empresa, verificadas até a atualização das 21:15 UTC de 23 de outubro) — github.com
- A página do projeto litellm no PyPI (verificada às 11:00 UTC de 24 de outubro; a versão mais recente é a 1.106.3 e a 1.107.0 não consta) — pypi.org
- Releases do GitHub BerriAI/litellm (v1.103.8, v1.104.6, v1.105.4 e v1.106.3, publicadas em 24 de outubro de 2026: mudança da chave de assinatura e remoção da CA raiz eMudhra) — github.com
Histórico de atualizações
2026-10-24 (11:00 UTC): Incorporada a publicação pela empresa das versões 1.103.8, 1.104.6, 1.105.4 e 1.106.3 em 24 de outubro (UTC), substituindo a afirmação de que a versão mais recente no PyPI ainda era a 1.106.2. Acrescentado ao passo 3 e ao FAQ que as imagens Docker e os Helm charts dessas versões são assinados com uma nova chave (a chave anterior não verifica mais) e a remoção da CA raiz eMudhra. Acrescentada a segunda exfiltração de 12 de outubro, vinda da análise de causa raiz (não fez parte do caminho até os artefatos envenenados, segundo a empresa).
2026-10-24: Incorporada a análise de causa raiz que a empresa publicou em 23 de outubro. Reescrito como os tokens foram levados, da hipótese da primeira publicação (logs de uma implantação interna do LiteLLM) para: uma chave mestra enviada por engano a um repositório público e nunca revogada, depois o token do proprietário guardado em uma plataforma interna de agentes, depois segredos de CI. Atualizados a linha do tempo, o FAQ, a tabela e a seção para os usuários. Os relatos de 22 e 23 de outubro descreviam a primeira hipótese (tokens vazando por logs de ferramentas de IA ou do gateway), que a empresa depois corrigiu. O que os usuários precisam fazer não mudou. Valores de indicadores (endereços IP, nomes, commits) não estão incluídos.
2026-10-22 (13:30 JST): Acrescentada a atualização do GitHub das 02:19 UTC de 22 de outubro (sem novidades relevantes; atualizações agora apenas quando houver novidades significativas). O aviso continua sendo a versão das 20:30 UTC. Esclarecidos quais imagens são afetadas no GHCR e a redação da verificação de uso indevido.
2026-10-22: Primeira versão, com base no aviso da BerriAI conforme atualizado às 20:30 UTC de 21 de outubro e na atualização do GitHub das 23:37 UTC desse dia. Será atualizada quando o caminho da intrusão ou os números forem publicados.
Leia a seguir
- Relacionado: Variáveis de ambiente da Railway possivelmente expostas (outubro de 2026)
- Incidentes do mesmo tipo: O que fazer se você usa o Trivy no CI após o comprometimento da cadeia de suprimentos / A cadeia TanStack, Nx Console e GitHub
- Ordem de revogação de tokens roubados: Defesa contra worms na cadeia de suprimentos do npm
- Onde ficam os segredos: O que torna arquivos .env e chaves de API arriscados / Credenciais vazadas que continuam válidas
- Termos: O que é um backdoor / O que é malware
- Outros incidentes de 2026: Vazamentos de dados e ataques cibernéticos de 2026