
Jellyfin Media Server में क्रिटिकल पाथ ट्रैवर्सल से RCE भेद्यता (CVSS 9.9)। इसमें प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, तकनीकी विश्लेषण और डिटेक्शन टूल शामिल हैं।
Jellyfin मीडिया सर्वर में एक गंभीर पाथ ट्रैवर्सल भेद्यता प्रमाणित उपयोगकर्ताओं को "Upload Subtitles" अनुमति के साथ डिस्क पर किसी भी स्थान पर फ़ाइलें अपलोड करने की अनुमति देती है। सबटाइटल अपलोड एंडपॉइंट में अनियंत्रित Format फ़ील्ड का फायदा उठाकर, हमलावर संवेदनशील स्थानों पर फ़ाइलें लिख सकते हैं, संवेदनशील डेटा निकाल सकते हैं, विशेषाधिकार बढ़ा सकते हैं, और अंततः LD_PRELOAD इंजेक्शन के माध्यम से रूट के रूप में मनमाना कोड निष्पादित कर सकते हैं।
| गुण | मान |
|---|---|
| CVE ID | CVE-2026-35031 |
| CVSS स्कोर | 9.9 (गंभीर) |
| CWE | CWE-22: किसी प्रतिबंधित निर्देशिका में पथनाम की अनुचित सीमा ('Path Traversal') |
| प्रभावित उत्पाद | Jellyfin Media Server |
| प्रभावित संस्करण | < 10.11.7 |
| पैच किया गया संस्करण | 10.11.7 और बाद के |
| भेद्यता प्रकार | Path Traversal + मनमानी फ़ाइल लेखन + RCE |
| प्रमाणीकरण आवश्यक | हाँ (गैर-एडमिन उपयोगकर्ता) |
| आवश्यक विशेषाधिकार | "Upload Subtitles" अनुमति |
| डिफ़ॉल्ट पोर्ट | 8096/TCP |
| GitHub एडवाइजरी | GHSA-9p5f-5x8v-x65m |
| पैच स्थिति | उपलब्ध और जारी |
| एक्सप्लॉइट सार्वजनिक | हाँ |
Jellyfin एक मुफ़्त और ओपन-सोर्स मीडिया सर्वर है जिसे आपके व्यक्तिगत मीडिया संग्रह को प्रबंधित करने और स्ट्रीम करने में मदद करने के लिए डिज़ाइन किया गया है। यह व्यावसायिक मीडिया सर्वर के समान कार्यक्षमता प्रदान करता है, लेकिन पूर्ण स्रोत कोड पारदर्शिता और सामुदायिक नियंत्रण के साथ।
Jellyfin Media Server (Port 8096)
/ | \
/ | \
Web UI REST API Media Streams
(Browser) (Authenticated) (Subtitle Upload)
|
/System/Info/Public (unauthenticated)
/Videos/{itemId}/Subtitles (vulnerable)
/Library/Collections (admin)
Client Devices > Network > Jellyfin Server > Database + Storage | /var/lib/jellyfin/ /etc/ld.so.preload (writable via vulnerability)
---
## भेद्यता गहन विश्लेषण
### मूल कारण विश्लेषण
यह भेद्यता सबटाइटल अपलोड एंडपॉइंट (`/Videos/{itemId}/Subtitles`) में मौजूद है, जो फ़ाइल अपलोड स्वीकार करता है और उन्हें डिस्क पर संग्रहीत करता है। महत्वपूर्ण दोष Format फ़ील्ड पैरामीटर के अपर्याप्त सत्यापन में निहित है।
#### भेद्य कोड पैटर्न
एंडपॉइंट Format फ़ील्ड को उचित रूप से सत्यापित या सैनिटाइज़ किए बिना सबटाइटल अपलोड संसाधित करता है:```
POST /Videos/{itemId}/Subtitles HTTP/1.1
Content-Type: multipart/form-data
[Binary subtitle data]
Format: /../../../etc/ld.so.preload
Language: en
Format पैरामीटर उपशीर्षक प्रारूप (srt, vtt, ass, आदि) निर्दिष्ट करने के लिए होता है, लेकिन इसके बजाय इसे फ़ाइल पथ के भाग के रूप में मान लिया जाता है:``` Base Path: /var/lib/jellyfin/subtitles/ User Input: /../../../etc/ld.so.preload Result: /var/lib/jellyfin/subtitles/../../../etc/ld.so.preload Resolved: /etc/ld.so.preload (via path traversal)
### आक्रमण श्रृंखला का विवरण
यह भेद्यता कई कमजोरियों को आपस में जोड़कर रूट के रूप में दूरस्थ कोड निष्पादन प्राप्त करती है:```
Step 1: Subtitle Upload with Path Traversal
POST /Videos/{itemId}/Subtitles
Format: /../../../etc/ld.so.preload
|
v
Step 2: Arbitrary File Write
Write attacker-controlled data to /etc/ld.so.preload
|
v
Step 3: File Read via .strm Files
Create .strm files pointing to sensitive paths
Extract database contents and credentials
|
v
Step 4: Database Extraction
Access /jellyfin/jellyfin.db via .strm
Extract admin user hashes
|
v
Step 5: Admin Privilege Escalation
Reset admin password or create new admin account
|
v
Step 6: RCE via LD_PRELOAD Injection
LD_PRELOAD=/path/to/malicious.so java
Arbitrary code execution as root
Input Validation Failure:
Format Field Validation: Expected: srt | vtt | ass | ssa | sub | subrip Actual: /../../../etc/ld.so.preload Result: NO VALIDATION > PATH TRAVERSAL ALLOWED
File Write Operation: String Concatenation: "/subtitles/" + user_format + ".srt" | NO CANONICALIZATION: Path component not resolved before write NO WHITELIST: Format values not restricted NO BOUNDS CHECK: ".." sequences not filtered | v Final Path: /etc/ld.so.preload (EXPLOITED)
### LD_PRELOAD शोषण
LD_PRELOAD तकनीक लिनक्स सिस्टम पर विशेषाधिकार वृद्धि और कोड निष्पादन की एक शक्तिशाली विधि है:```
LD_PRELOAD Injection Flow:
1. Attacker writes malicious .so (shared object) to /etc/ld.so.preload
/etc/ld.so.preload contents:
/path/to/attacker.so
2. Java process starts (Jellyfin runs on Java):
kernel > execve("java", ...) > glibc initialization
|
v
Check /etc/ld.so.preload
|
v
Load attacker.so FIRST
|
v
Execute attacker code
(BEFORE Java main())
3. Code Execution Context:
Process Owner: root (Jellyfin typically runs as root)
Permissions: Full system access
Timing: Before application initialization
Detection: Minimal (malicious code runs early)