Медіасервер - найбезневинніша річ, яку можна виставити в інтернет. Цього місяця він ще й найдорожча.

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 з виправленням
Початок вересня 2026Shadowserver рахує понад 36 000 відкритих в інтернет невиправлених серверів
16 жовтня 2026Опубліковано повний технічний розбір
17 жовтня 2026Перша зафіксована експлуатація наживо, по ханіпотах, із криптомайнером
19 жовтня 2026Публічний proof-of-concept експлойт на GitHub
20 жовтня 2026CISA додає всі чотири 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 розповідає, куди подіти сервіс, який краще не тримати вдома.