Медіасервер - найбезневинніша річ, яку можна виставити в інтернет. Цього місяця він ще й найдорожча.
20 жовтня 2026 року CISA внесла одразу чотири вразливості Plex Media Server до свого каталогу тих, які експлуатують у дикій природі. Зібрані в ланцюг, вони дають нападнику без жодних облікових даних отримати адмінський токен і виконати код із правами процесу Plex. Дослідник, який їх знайшов, оцінює ланцюг у 9,8.
Виправлена збірка 1.43.3.10861 вийшла 4 серпня. Усе, що сталося відтоді, стосується розриву між тим, що виправлення існує, і тим, що воно встановлене. І саме цей розрив - єдина частина історії, яку контролюєте ви.
Хронологія, бо саме вона і є аргументом
| Дата | Подія |
|---|---|
| 27 липня 2026 | Дослідник Zach Main повідомляє Plex про ланцюг |
| 3-4 серпня 2026 | Виходить Plex Media Server 1.43.3.10861 з виправленням |
| Початок вересня 2026 | Shadowserver рахує понад 36 000 відкритих в інтернет невиправлених серверів |
| 16 жовтня 2026 | Опубліковано повний технічний розбір |
| 17 жовтня 2026 | Перша зафіксована експлуатація наживо, по ханіпотах, із криптомайнером |
| 19 жовтня 2026 | Публічний proof-of-concept експлойт на GitHub |
| 20 жовтня 2026 | CISA додає всі чотири CVE до каталогу KEV |
| 23 жовтня 2026 | Дедлайн для федеральних установ по двох найгірших |
Одинадцять тижнів попередження. Тридцять шість тисяч серверів, які ними не скористалися.
Чим насправді є цей ланцюг
Чотири проблеми, кожна окремо нічим не примітна, і саме тому вони й лишалися непоміченими:
- CVE-2026-96652 (CVSS 5,3), server-side request forgery: Plex можна змусити надсилати POST-запити на довільні адреси, включно з його ж внутрішніми API.
- CVE-2026-96654 (CVSS 6,9), URL-інʼєкція: підконтрольні нападнику параметри дістаються функцій інших плагінів.
- CVE-2026-96655 (CVSS 5,3), ще одна SSRF, цього разу в ендпоінті транскодера.
- CVE-2026-96656 (CVSS 8,6), довільний запис файлів у налаштуваннях транскодера: спільну бібліотеку можна покласти туди, звідки Plex її завантажить.
Перечитайте останній пункт, бо це шаблон, який варто перенести на кожен інший ваш сервіс: процес, який пише файли, а потім завантажує код із того самого каталогу, куди пише, віддалений від виконання коду рівно на одну помилку запису. Кодеки, плагіни, теми, розширення, завантаження з include-шляхом. Окремі оцінки середні. Ланцюг - 9,8.
Для експлуатації потрібен мережевий доступ до TCP-порту 32400. Саме функція Remote Access у Plex або ручний проброс порту перетворює домашній сервіс на доступний з інтернету.
Спершу зробіть три речі
1. Перевірте повний номер збірки, а не маркетингову версію.
# встановлення пакетом на Debian або Ubuntu
dpkg -s plexmediaserver | grep '^Version'
# офіційний Docker-образ
docker exec plex dpkg -s plexmediaserver | grep '^Version'
# будь-яке встановлення, з самої машини: ендпоінт identity відповідає без токена
curl -s http://127.0.0.1:32400/identity
Усе, що нижче за 1.43.3.10861, вразливе. Рання збірка 1.43.3 теж вразлива: значення мають останні пʼять цифр.
2. Оновіть, а потім переконайтеся, що запущений процес - саме новий. Контейнер, який жодного разу не перетягували, чи пакет, затриманий піном, радо покаже нову версію в інтерфейсі, поки обслуговує стара бінарка.
docker compose pull plex && docker compose up -d plex
docker exec plex dpkg -s plexmediaserver | grep '^Version'
3. Якщо сервер був доступний з інтернету на старій збірці, вважайте, що до нього вже дістались. Власне попередження Plex каже трактувати такі сервери як потенційно скомпрометовані й дає індикатори: незнайомі файли .so чи .dll у каталозі Codecs і вихідні зʼєднання до proxystream.st. Перевірте обидва, перш ніж вважати справу закритою:
# несподівані спільні бібліотеки в каталозі кодеків
find ~/Library/Application\ Support/Plex\ Media\ Server/Codecs \
/var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Codecs \
-name '*.so' -o -name '*.dll' 2>/dev/null | sort
# усе, з чим машина спілкується і що ви не можете назвати
ss -tn state established | awk 'NR>1{print $4}' | sort | uniq -c | sort -rn | head -20
Криптомайнер видає себе процесором. Проксіварь - ні: вона продає вашу адресу як житловий трафік і поводиться тихо. Відсутність навантаження не означає відсутності злому.
Чеклист, який урятував би вас у будь-якому разі
Жоден пункт нижче не вимагає знати про CVE заздалегідь. У цьому й суть: ці заходи працюють саме в ті тижні, коли ви ще не оновилися, а це стан кожного вашого сервісу, завжди.
Не пробрасуйте порт в інтернет заради того, щоб заходити самому. Remote Access і проброс порту існують для людей, яких немає у вашій мережі. Якщо єдиний віддалений користувач - ви, тунель WireGuard чи mesh-VPN прибирає поверхню атаки повністю, замість її захищати. Відкритість назовні - це рішення, і здебільшого його ніхто свідомо не ухвалює.
Вхідний трафік за замовчуванням заборонений, відкриті порти виписані. На машині, де крутиться кілька речей, файрвол - єдине місце, де «що саме доступне» вміщається в один екран:
ufw default deny incoming
ufw allow 443/tcp
ufw status numbered
Читайте вивід згори вниз і питайте, що спрацює першим. На успадкованій машині, яку ми перевіряли цього місяця, акуратний список із трьох дозволених підмереж стояв на чотири рядки нижче за суцільний ACCEPT для того самого порту з 0.0.0.0/0 - тобто не обмежував нічого й ніколи. Повний аудит тут.
HTTP-сервіси ставте за один зворотний проксі, ніколи напряму в інтернет. Одна конфігурація TLS, один лог доступу, одне місце, куди додати автентифікацію. Схема, яку ми крутимо на цьому самому сайті, повністю описана в Caddy і Docker у продакшні. Коротка версія для сервісу, якому публічний доступ не потрібен узагалі:
media.example.com {
@notlocal not remote_ip 10.0.0.0/8 100.64.0.0/10 192.168.0.0/16
respond @notlocal 403
reverse_proxy 127.0.0.1:32400
}
Привʼязуйте сервіс до localhost, і хай проксі буде єдиними дверима. Контейнер, опублікований як -p 32400:32400, висить на кожному інтерфейсі хоста, включно з публічним; -p 127.0.0.1:32400:32400 - ні. Ця різниця в кілька символів і є найчастішою випадковою відкритістю, яку ми знаходимо.
Вважайте вихідний трафік тим, про що вам дозволено дбати. Обидва зафіксовані тут корисні навантаження, майнер і проксіварь, без виходу назовні не мають сенсу. Домашня машина чи коробка малого офісу не має потреби відкривати довільні вихідні зʼєднання, а базовий зріз, з яким можна порівняти, вартий більше за будь-який список індикаторів, опублікований постфактум.
Знайте, як відновлюватимете з нуля, і перевірте це на практиці. Після такого класу компрометації чесна порада - чиста переустановка, і пережити її можна лише тоді, коли дані лежать деінде, а відновлення ви вже робили, а не вчитиметеся під тиском. Де має бути це «деінде», з реальними цінами на реальних даних, - у нашому порівнянні сховищ для бекапів.
Підпишіться на нотатки до релізів усього, що виставлене назовні. Одинадцять тижнів - це не невезіння, це непрочитана розсилка. У самохостованого сервісу виробник не має як до вас достукатися і не зобовʼязаний пробувати.
Чого ми не знаємо
Ми самі не заглядали всередину зламаної машини і не вдаватимемо протилежного. Індикатори вище - від Plex, цифри відкритості - від Shadowserver, оцінки CVSS - від дослідника, дати експлуатації - від виробників і CISA. Наш внесок - та частина, за яку ми відповідаємо: що цей шаблон означає для решти вашого стеку і яку конфігурацію ми реально тримаємо.
Часті питання
Яка версія Plex закриває Plex2Shell? 1.43.3.10861 і новіші, випущена 4 серпня 2026 року. Усі попередні збірки вразливі, включно з ранніми 1.43.3.
Чи є ризик, якщо мій Plex не виставлений в інтернет? Ланцюгу потрібен мережевий доступ до TCP-порту 32400. Сервер, доступний лише з домашньої мережі, лишається вразливим із цієї мережі, тобто достатньо зламаного ноутбука чи чужого гостьового пристрою. Це менший ризик, а не теоретичний.
Як зрозуміти, що мій Plex уже зламали?
Попередження Plex вказує на два індикатори: незнайомі .so чи .dll у каталозі Codecs і вихідні зʼєднання до proxystream.st. Зафіксовані навантаження - криптомайнери і проксі-шкідливе ПЗ. Якщо сервер був відкритий в інтернет на старій збірці, безпечне припущення - що його скомпрометовано.
Чи прибирає оновлення вже наявну компрометацію? Ні. Патч зачиняє двері, але не видаляє того, хто вже всередині. Після підтвердженого зламу єдиний чистий шлях - переустановка з довіреного носія плюс відновлення даних, які ви можете перевірити.
Може, просто вимкнути Plex Remote Access? Якщо єдина людина, яка дивиться ззовні, це ви - так, і заходьте через VPN. Remote Access - саме та функція, яка виставляє порт 32400 в інтернет, і 36 000 відкритих серверів, порахованих у вересні, здебільшого не були свідомим рішенням.
Що далі
Якщо це підштовхнуло вас подивитися на решту стеку, годинний аудит сервера, який ви отримали у спадок - це чеклист, який ми застосовуємо до незнайомої машини, а порівняння VPS розповідає, куди подіти сервіс, який краще не тримати вдома.