Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-35031 — Критическая уязвимость обхода пути, приводящая к удалённому выполнению кода (RCE) в Jellyfin Media Server (CVSS 9.9). Включает PoC-эксплойт, технический анализ и инструменты обнаружения. | Kitploit
Инструменты/GitHubGitHub/keraattin/cve-2026-35031
Повышение привилегийАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеСтатьи и ИсследованияОбучение и ОбразованиеРазработка Полезной Нагрузки
GitHubkeraattin/cve-2026-35031

CVE-2026-35031

Критическая уязвимость обхода пути, приводящая к удалённому выполнению кода (RCE) в Jellyfin Media Server (CVSS 9.9). Включает PoC-эксплойт, технический анализ и инструменты обнаружения.

245 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий

CVE-2026-35031: Обход пути при загрузке субтитров в Jellyfin до удалённого выполнения кода

CVE-ID CVSS Score CWE Affected Product Status

TL;DR

Критическая уязвимость обхода пути в Jellyfin Media Server позволяет аутентифицированным пользователям с разрешением «Upload Subtitles» загружать файлы в произвольные места на диске. Используя непроверяемое поле Format в конечной точке загрузки субтитров, злоумышленники могут записывать файлы в чувствительные места, извлекать конфиденциальные данные, повышать привилегии и в конечном итоге выполнять произвольный код с правами root через внедрение LD_PRELOAD.

  • Оценка CVSS: 9.9 (Критическая)
  • Затронутые версии: Jellyfin < 10.11.7
  • Исправленная версия: Jellyfin 10.11.7+
  • Требуется аутентификация: Да (пользователь без прав администратора с разрешением на загрузку субтитров)
  • Удалённое выполнение кода: Да, с правами root
  • Сложность эксплуатации: Низкая

Содержание

  1. Краткие факты
  2. Что такое Jellyfin?
  3. Подробный разбор уязвимости
    • Анализ первопричины
    • Разбор цепочки атаки
    • Эксплуатация LD_PRELOAD
  4. Анализ влияния
  5. Затронутые версии
  6. Обнаружение
    • Сканер на Python
    • NSE-скрипт для Nmap
  7. Индикаторы компрометации
  8. Устранение
  9. Ссылки
  10. Автор

Краткие факты

СвойствоЗначение
CVE IDCVE-2026-35031
Оценка CVSS9.9 (Критическая)
CWECWE-22: Некорректное ограничение пути к ограниченному каталогу ('Path Traversal')
Затронутый продуктJellyfin Media Server
Затронутые версии< 10.11.7
Исправленная версия10.11.7 и новее
Тип уязвимостиPath Traversal + произвольная запись файлов + RCE
Требуется аутентификацияДа (пользователь без прав администратора)
Требуемые привилегииразрешение «Upload Subtitles»
Порт по умолчанию8096/TCP
Консультация GitHubGHSA-9p5f-5x8v-x65m
Статус исправленияДоступно и выпущено
Публичный эксплойтДа

Что такое Jellyfin?

Jellyfin — это бесплатный медиасервер с открытым исходным кодом, предназначенный для управления и потоковой передачи вашей личной медиаколлекции. Он предоставляет функциональность, аналогичную коммерческим медиасерверам, но с полной прозрачностью исходного кода и контролем сообщества.

Ключевые возможности

  • Потоковая передача медиа с собственного сервера (музыка, фильмы, телепередачи)
  • Поддержка нескольких пользователей с детальным контролем разрешений
  • Управление субтитрами и их синхронизация
  • Веб-интерфейс, доступный через HTTP/HTTPS
  • Кроссплатформенное развёртывание (Linux, Windows, macOS)
  • Поддержка различных медиаформатов и потоковых протоколов

Сетевая архитектура```

                      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)

### Разбор цепочки атаки

Уязвимость связывает воедино несколько слабостей для достижения удалённого выполнения кода с правами root:```
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 — это мощный метод повышения привилегий и выполнения кода в Linux-системах:```
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())
Скачать инструмент