PHP2Shell: две критические уязвимости в PHP

Команда php сегодня 21 октября выпустила внеплановое обновление безопасности. Исправления закрывают две критические уязвимости: CVE-2026-109618 и CVE-2026-109619. Обе 9.2 из 10 по CVSS, могут позволить выполнить код на сервере без авторизации.

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

CVE-2026-109619 обращение к освобождённой памяти

PHP хранит внутреннее состояние между этапами обработки запроса. При фатальных ошибках очистка этого состояния может пройти некорректно: память освобождена, а ссылка на неё остаётся. Если следующий запрос попадает в тот же процесс, PHP может обратиться к этой памяти до того, как внутреннее состояние будет нормально инициализировано. Такой класс ошибок называется use-after-free. В зависимости от сценария он может привести к утечке данных из памяти и удалённому выполнению кода.

Для эксплуатации могут потребоваться несколько запросов и определённое состояние процесса, но авторизация не нужна. Уязвимость затрагивает в том числе сценарии с PHP-FPM. Обе уязвимости находятся в php, а не в CMS или фреймворке. Проверять нужно все приложения, которые используют PHP для обработки веб-запросов.

Проверяем: Apache с mod_php; PHP-FPM за Nginx или Apache; php-cgi, FrankenPHP и другие способы запуска PHP; Docker-образы с PHP;

Исправления выпущены для 8.2, 8.3, 8.4 и 8.5: PHP 8.2.35 PHP 8.3.36 PHP 8.4.27 PHP 8.5.12 Проверьте версии php не откладывать обновление сейчас самое разумное действие.