Атаки PHP2Shell: оновіть PHP, на якому працює ваш сайт

Команда PHP випустила виправлення для двох критичних вразливостей, а Cloudflare вже фіксує спроби атак. Як перевірити пакет PHP, що обслуговує ваш сайт.

Смарагдова струбцина відновлює основу PHP під вебсайтом.

21 жовтня команда PHP випустила термінові оновлення безпеки для двох вразливостей, які можуть дозволити зловмиснику без автентифікації виконати код на вебсервері. Cloudflare вже спостерігала спроби атак на ці вразливості, відомі під спільною назвою PHP2Shell, зокрема зміни шкідливих запитів для обходу захисту. У повідомленні компанії немає підтвердження, що ці спроби призвели до успішних зламів. [4]

Власникам сайтів потрібно оновити середовище виконання PHP до версії 8.2.35, 8.3.36, 8.4.27 або 8.5.12 чи встановити пакет постачальника, який явно виправляє обидві CVE. Оновлення WordPress, теми чи плагіна не замінює цього виправлення на сервері. Якщо PHP обслуговує хостинг-провайдер, попросіть його підтвердити, що саме ваш сайт уже працює на виправленому пакеті. [1]

Окремі вразливості самого застосунку, як-от WP2Shell у WordPress, потребують власних виправлень; для PHP2Shell необхідно оновити саме PHP.

Запит може дістатися до вразливості ще до запуску сайту

Вразливості отримали ідентифікатори CVE-2026-109618 і CVE-2026-109619. Обидві мають критичну оцінку 9,2 за CVSS v4.0. Команда PHP вважає конфігурацію Apache з mod_php найризикованішою: дослідники продемонстрували виконання коду через HTTP-запит без автентифікації ще до запуску самого застосунку.

Саме цей порядок подій має значення. Перевірка входу в обліковий запис або ретельно оновлена CMS не можуть зупинити атаку, яка відбувається до початку виконання їхнього коду. Спершу PHP має розібрати вхідні дані запиту, і частина цієї роботи відбувається поза захисними перевірками застосунку.

У випадку CVE-2026-109618 нестача пам’яті може перервати роботу PHP, коли внутрішні структури запиту ініціалізовані лише частково. Під час подальшого очищення PHP може використати ці некоректні структури. Опис PHP пояснює, як обробка запитів типу multipart може витратити значно більше пам’яті, ніж можна очікувати за розміром самого запиту. У разі успішної експлуатації код виконується з правами облікового запису робочого процесу вебсервера; це не означає автоматичного отримання прав root. [2]

CVE-2026-109619 пов’язана зі станом, який переживає завершення запиту. Робочий процес може зберегти внутрішні вказівники на пам’ять уже завершеного запиту. Коли той самий процес отримує наступний запит, одна з операцій може звернутися до застарілого стану, перш ніж звичайна ініціалізація його замінить. Один із підтверджених шляхів — механізм відстеження прогресу завантаження файлів у сесії. Він увімкнений за замовчуванням і не потребує виклику session_start() у коді застосунку. [3]

PHP-FPM також потрібно оновити

Найпереконливіша демонстрація для mod_php не означає, що один універсальний експлойт працює в будь-якій конфігурації PHP. Можливість експлуатації залежить від параметрів збірки, розширень, поведінки застосунку та обробки запитів.

Для вразливості, пов’язаної з нестачею пам’яті, PHP вказує, що аналіз вихідного коду підтверджує потенційну вразливість PHP-FPM, але повного експлойта саме для цього випадку на FPM не продемонстровано. Для вразливості із застарілим станом ситуація інша: в описі наведено перевірений шлях експлуатації на FPM. Після успішного запуску запиту певна операція застосунку залишає внутрішній стан, фатальна помилка перериває його очищення, а наступний запит звертається до нього через механізм відстеження завантаження.

Тому команда PHP закликає оновити всі інсталяції, які обробляють вебзапити, зокрема FPM, mod_php, CGI, FrankenPHP і LiteSpeed. Відмінності в передумовах пояснюють ризик, але зміна способу запуску PHP не є повним усуненням вразливостей.

Які пакети PHP містять виправлення?

Гілка PHPВипуск із виправленнями
PHP 8.28.2.35
PHP 8.38.3.36
PHP 8.48.4.27
PHP 8.58.5.12

Пакети дистрибутивів можуть містити виправлення, хоча номер базової версії виглядає старішим. Наприклад, у повідомленні Ubuntu від 21 жовтня вказано 8.3.6-0ubuntu0.24.04.13 для Ubuntu 24.04 LTS і 8.1.2-1ubuntu2.28 для 22.04 LTS. Перевіряючи перенесене виправлення, звіряйте повний номер пакета з повідомленням постачальника. [5]

PHP 8.1 і старіші версії більше не отримують підтримуваних випусків від проєкту PHP. Деякі дистрибутиви та постачальники довгострокової підтримки переносять виправлення у свої пакети, а команда безпеки PHP надала мінімальні патчі вихідного коду для версій 7.4, 8.0 і 8.1. Ці патчі не відновлюють звичайну підтримку застарілих гілок. Отримайте підтверджене виправлення від постачальника або перейдіть на сумісну підтримувану версію.

Переконайтеся, що робочі процеси вже використовують виправлений PHP

Перевірте кожну інсталяцію PHP, яка обслуговує трафік, зокрема в контейнерах, панелях керування хостингом і застосунках із вбудованим вебсервером. Установіть відповідне оновлення постачальника, а потім перезапустіть або замініть робочі процеси PHP, щоб вони завантажили виправлений код. На сервері з кількома версіями PHP один сайт може бути вже захищеним, а інший — усе ще вразливим.

Результат команди php -v показує версію конкретного виконуваного файла командного рядка. Сам по собі він не доводить, яку версію використовує модуль Apache, пул FPM чи контейнер. З’ясуйте, який обробник і пакет призначено вашому сайту, та перевірте роботу застосунку після оновлення.

Спроби атак, які спостерігає Cloudflare, роблять WAF корисним додатковим захистом. Проте, за повідомленням PHP, лише оновлення повністю усуває ці вразливості. Тимчасові налаштування, запропоновані проєктом, закривають окремі шляхи атаки й можуть впливати на роботу сервера; саме лише вимкнення відстеження прогресу завантаження не виправляє всі варіанти.

Усунення вразливості та розслідування зламу — різні завдання. Якщо на сайті з’явилися несподівані файли, облікові записи чи вихідні з’єднання, встановлений патч не доводить, що попереднього проникнення не було. Збережіть відповідні журнали та дослідіть ці ознаки. Невідкладний крок — перевести вебстек, який реально обслуговує сайт, на пакет із підтвердженим виправленням.

Джерела

  1. PHP Group. Попередження безпеки: критичні вразливості віддаленого виконання коду. 21 жовтня 2026 року; перевірено 21 жовтня 2026 року.
  2. Команда безпеки PHP. Віддалене виконання коду через пошкодження стану за нестачі пам’яті — CVE-2026-109618. GitHub Security Advisories, 21 жовтня 2026 року; перевірено 21 жовтня 2026 року.
  3. Команда безпеки PHP. Віддалене виконання коду через застарілий глобальний стан — CVE-2026-109619. GitHub Security Advisories, 21 жовтня 2026 року; перевірено 21 жовтня 2026 року.
  4. Molteni, D., Jones, D. та Nandwani, K. Cloudflare розгортає захист від вразливостей PHP2Shell. Cloudflare, 21 жовтня 2026 року; перевірено 21 жовтня 2026 року.
  5. Canonical. USN-8948-1: вразливості PHP. Повідомлення безпеки Ubuntu, 21 жовтня 2026 року; перевірено 21 жовтня 2026 року.

Пишу про те, як зробити життя онлайн комфортним і безпечним. Вірю, що сучасний цифровий світ вартий того, щоб бути його частиною.