Кибербезопасность

PHP2Shell: две критические дыры в PHP открывают сервер без пароля

23 октября 2026 Редакция Online-Computer.ru

20 октября команда безопасности PHP предупредила о двух критических уязвимостях, а 21 октября выпустила исправления. Обе, CVE-2026-109618 и CVE-2026-109619, получили 9,2 балла из 10 по шкале CVSS v4.0 и позволяют удалённо выполнить код на сервере без пароля. Пару уже назвали PHP2Shell. Сломан сам язык, а не отдельный плагин или CMS, поэтому под ударом любой сайт на WordPress, Joomla или Drupal, если на сервере стоит непропатченная версия PHP.

Что именно сломано

Первая дыра, CVE-2026-109618, связана с нехваткой памяти. Когда память кончается, PHP выходит из запроса через функцию longjmp(). В некоторых местах данные запроса к этому моменту подготовлены не до конца, и при завершении PHP читает их как нормальные. Разбор multipart-запросов, то есть загрузки файлов, позволяет довести дело до нехватки памяти в нужный момент, и итогом становится выполнение кода без авторизации.

Вторая, CVE-2026-109619, это «залежавшееся» состояние. Данные одного запроса остаются доступными после того, как память под них освободили, и следующий запрос на том же рабочем процессе может ими воспользоваться. Исследователи показали и утечку памяти процесса, а в ней могут лежать пароли, токены и ключи API.

Главное: PHP разбирает запрос раньше, чем запускается код вашего сайта. Поэтому пароль администратора и защита самого сайта этот удар не остановят: до них дело просто не доходит.

Кого это касается

PHP называет под риском все веб-развёртывания: Apache с mod_php, PHP-FPM, php-cgi, FrankenPHP и LiteSpeed. Самым опасным считают mod_php: для него показан рабочий эксплойт, где неавторизованный запрос срабатывает до любого кода приложения. Для PHP-FPM нужны дополнительные условия, но и там исследователи получили выполнение кода при подходящем поведении приложения. Атака не из простых, поскольку зависит от сборки, раскладки памяти и работы процессов, но простота здесь не защита.

Исправления вышли для четырёх веток: 8.2.35, 8.3.36, 8.4.27 и 8.5.12. Ветки 8.1 и старше официальных обновлений не получили. Для 7.4, 8.0 и 8.1 команда PHP выложила только исходные патчи для самостоятельной сборки, а хостинги и дистрибутивы могут вносить исправление, не меняя номер версии.

Это уже эксплуатируют

Технический директор Cloudflare сообщил, что компания видела атаки на обе уязвимости ещё до выхода патчей, и включил временные правила WAF. По данным Datadog, AWS зафиксировал попытки эксплуатации уже с 17 октября, за четыре дня до исправления. VirusTotal оценивает число доступных из интернета хостов с PHP больше чем в 5,1 миллиона.

Картину по версиям даёт Qualys. Из 155 миллионов установок PHP с известной версией около 110 миллионов (71%) работают на ветках без поддержки, от 5.4 до 8.1. За первые 12 часов после релиза обновились лишь 199 тысяч установок.

Что сделать владельцу сайта

  • Узнайте версию PHP, которая реально обслуживает сайт. В WordPress это «Инструменты → Здоровье сайта → Информация → Сервер». Команда php -v в консоли может показать другую установку.
  • Если версия ниже 8.2.35, 8.3.36, 8.4.27 или 8.5.12 (для вашей ветки), обновите PHP в панели хостинга или напишите в поддержку. С веток 8.1 и старше нужно переходить на поддерживаемую.
  • Если версию менять не вы, спросите хостинг, закрыта ли уязвимость в их сборке: исправление могли внести без смены номера.
  • Пока обновления нет, помогают лишь частичные меры: session.upload_progress.enabled=0 и перезапуск процессов, post_max_size не выше 8M (32M, если нужны загрузки) и лимиты на размер запросов на прокси. PHP прямо пишет, что полностью они не защищают.
  • После обновления перезапустите процессы и убедитесь, что работает новая версия. Если по рекомендации PHP вы временно ставили memory_limit=-1, верните конечное значение.

Что у нас

Мы проверили собственный сайт: заголовок ответа сервера показывает PHP/8.2.35, то есть уже исправленную версию своей ветки.

Что это значит

Это редкий случай, когда уязвим не плагин и не тема, а сам фундамент. Патч остаётся единственным полным решением, всё остальное лишь выигрывает время. Если вы не знаете версию PHP на своём сайте, узнайте её сегодня: атаки уже идут, а обновление поставили далеко не все.

Источники: advisory PHP на GitHub (CVE-2026-109618), Qualys, BleepingComputer, Datadog Security Labs.

← Все материалы