У середовищі виконання PHP було виявлено дві критичні вразливості віддаленого виконання коду (RCE), зареєстровані під номерами CVE-2026-109618 та CVE-2026-109619. Вони становлять компонент RCE ширшої групи вразливостей ядра PHP, яку дослідницька компанія Wiz назвала PHP2Shell. За даними Wiz, PHP2Shell охоплює кілька критичних недоліків — від витоку пам'яті у стилі Heartbleed до неавтентифікованого RCE — зачіпаючи кожну версію PHP, випущену за останнє десятиліття аж до PHP 5.4, та ставлячи під загрозу сервери, що обслуговують 70% усіх вебсайтів у світі. Системним адміністраторам необхідно негайно перевірити й оновити сервери, а звичайним користувачам — дотримуватися базових правил цифрової безпеки.

У цьому матеріалі наведено технічний аналіз причин збоїв пам'яті, зведену таблицю підтримуваних гілок PHP, рекомендації для кінцевих користувачів та покрокові дії для технічних фахівців.

Перебіг подій: пара вразливостей php2shell

Згідно з офіційним бюлетенем Національної бази вразливостей США (NVD) від 21 жовтня 2026 року, обидві проблеми виявлено у менеджері розподілу пам'яті та життєвому циклі обробки запитів рушія Zend Engine.

Коли під час обробки веб-запиту виникає критична помилка або вичерпання пам'яті (OOM), PHP застосовує конструкцію longjmp для аварійної зупинки поточного контексту та згортання стека викликів. У небезпечних версіях це раптове переривання порушує внутрішні структури керування пам'яттю, спричиняючи два небезпечні стани:

  1. Повторне використання неініціалізованої пам'яті (CVE-2026-109618): Якщо виділення пам'яті переривається помилкою, пули пам'яті для змінних запиту залишаються неініціалізованими. Подальші процедури очищення у робочому процесі читають ці ділянки пам'яті, що призводить до руйнування купи та виконання довільного коду.
  2. Звернення до застарілого глобального стану (CVE-2026-109619): Глобальні вказівники, що тимчасово посилаються на виділену для запиту пам'ять, не очищаються повністю після аварійного завершення. Коли той самий робочий процес бере в обробку наступний запит, він взаємодіє зі звільненими адресами пам'яті, що дозволяє зловмисникам перехопити потік виконання програми.

Оскільки робочі процеси PHP (зокрема у PHP-FPM чи контейнерах) безперервно обслуговують сотні послідовних запитів, віддалені нападники можуть за допомогою спеціальних HTTP-запитів штучно викликати дефіцит пам'яті та отримати доступ до виконання системних команд без автентифікації.

Уразливі версії PHP та офіційні виправлення

Команда розробників PHP випустила офіційні оновлення для всіх активних гілок 22 жовтня 2026 року. Усім організаціям необхідно перевірити конфігурацію серверів за офіційною таблицею:

Гілка Уразливі версії Безпечний випуск Статус підтримки
PHP 8.5 від 8.5.0 до 8.5.11 8.5.12 Активна підтримка (Active support)
PHP 8.4 від 8.4.0 до 8.4.26 8.4.27 Активна підтримка (Active support)
PHP 8.3 від 8.3.0 до 8.3.35 8.3.36 Лише безпекові оновлення
PHP 8.2 від 8.2.0 до 8.2.34 8.2.35 Лише безпека (до 31.12.2026)
PHP 8.1 та старіші Усі версії Відсутній Завершення підтримки (End of Life)

Згідно з регламентом підтримки PHP, гілки з активним статусом (PHP 8.4 та PHP 8.5) отримують як регулярні функціональні виправлення, так і патчі безпеки. Гілки у режимі безпекових оновлень (PHP 8.2 та PHP 8.3) отримують виключно термінові патчі; гілка PHP 8.2 остаточно знімається з підтримки 31 грудня 2026 року.

Усі системи на базі PHP 8.1 або старіших релізів залишаються назавжди вразливими, оскільки застарілі версії більше не оновлюються. Необхідно негайно спланувати перехід на актуальні гілки.

Що це означає для вас

За даними Wiz, PHP забезпечує роботу приблизно 70% вебсайтів у світі, включаючи популярні CMS, платформи електронної комерції та вебкабінети. Навіть якщо ви особисто не налаштовуєте сервери, інтернет-сервіси, якими ви щодня користуєтеся, побудовані на цій технології.

Звичайний користувач не може дистанційно оновити сторонній сервер, але дотримання базових правил безпеки суттєво мінімізує загрози:

  • Звертайте увагу на безпекові сповіщення платформ: Якщо сайт або онлайн-магазин повідомляє про технічний збій або потенційний витік даних, негайно змініть пароль для цього облікового запису.
  • Не використовуйте однакові паролі: Повторне використання паролів на різних сервісах створює серйозну загрозу. Зловмисники автоматично перевіряють скомпрометовані паролі на поштових скриньках та банкінгу. Створюйте унікальні та надійні паролі для кожного ресурсу.
  • Увімкніть двофакторну автентифікацію (2FA): Активуйте додатковий етап перевірки скрізь, де це можливо, надаючи перевагу застосункам-автентифікаторам або апаратним ключам. Це захистить акаунт навіть у разі розкриття пароля.
  • Остерігайтеся фальшивих сповіщень про оновлення: Зламавши сервер, зловмисники можуть вбудовувати у сторінки фальшиві банери із закликом оновити браузер чи плеєр. Ніколи не завантажуйте файли з таких спливаючих вікон; оновлюйте програми лише через офіційні налаштування браузера або ОС.
  • Захищайте мережевий трафік: Під час використання публічного Wi-Fi використовуйте VPN, що шифрує трафік між вашим пристроєм і VPN-сервером, запобігаючи перехопленню даних іншими користувачами мережі. Завантажити VPNRice.

Інструкція для системних адміністраторів

Для захисту веб-інфраструктури виконайте такі дії:

1. Оновлення пакетів та перевірка бюлетенів безпеки дистрибутива

Якщо ваш сервер використовує офіційні репозиторії дистрибутивів Linux (таких як Debian або Ubuntu), супровідники пакетів бекпортують виправлення безпеки безпосередньо в поточні стабільні версії пакетів без зміни номера базової версії (наприклад, рядок версії в системі може залишатися 8.2.26 або 8.4.15 навіть після успішного встановлення патчів).

Спочатку оновіть індекси сховищ та встановіть оновлення для використовуваних пакетів PHP (наведені нижче назви є прикладом і залежать від версії PHP у вашому репозиторії):

sudo apt-get update
sudo apt-get --only-upgrade install php8.4-fpm php8.4-cli php8.4-common

Після цього зіставте встановлену версію пакетів з офіційними повідомленнями безпеки дистрибутива (такими як Debian Security Advisory DSA чи Ubuntu Security Notice USN):

apt-cache policy php8.4-fpm

Перевірте журнал змін пакета, щоб підтвердити включення необхідних патчів:

apt-get changelog php8.4-fpm | head -n 20

Лише за умови ручного складання із вихідних кодів php.net, використання PPA Ондржея Сури (Ondřej Surý) або офіційних Docker-контейнерів команда php -v виводитиме безпосередньо номери релізів 8.2.35, 8.3.36, 8.4.27 чи 8.5.12.

2. Перебудова контейнерів

Оновлення хоста не змінює зафіксовані образи контейнерів. У разі використання Docker оновіть базовий образ у Dockerfile:

FROM php:8.4.27-fpm-alpine

Запустіть нове складання без використання кешу:

docker build --no-cache -t web-app:latest .

3. Налаштування захисту на межі мережі

До завершення оновлення серверів увімкніть перевірку запитів на зворотному проксі чи WAF. Обмежте розміри заголовків, контролюйте частоту завантаження багатокомпонентних файлів (multipart) та скидайте нестандартні з'єднання до передачі у робочі пули PHP.

Своєчасне оновлення компонентів та уважний контроль за обліковими даними надійно захищають інфраструктуру від критичних веб-загроз.