Приложения на PHP, использующие
SoapServer, уязвимы к DoS-атакам из-за неограниченной рекурсии при обработке XML в модуле ext/soap. Баг затрагивает версии PHP до 8.2.34, 8.3.35, 8.4.26 и 8.5.11.Проблема в функции
cleanup_xml_node() модуля ext/soap. При обработке входящего SOAP-запроса PHP рекурсивно обходит XML-дерево для удаления пустых текстовых узлов, комментариев и другой незначимой разметки. Каждый уровень вложенности соответствует одному кадру стека в памяти C, при этом верхний лимит глубины вложенности отсутствует.Работает вот так:
▶️Отправляем неаутентифицированный HTTP POST-запрос на эндпоинт
SoapServer с XML-документом, содержащим десятки тысяч глубоко вложенных элементов.▶️Запрос обрабатывается функцией
SoapServer::handle(), которая передает XML-дерево в cleanup_xml_node().▶️Рекурсивный обход узлов без ограничения глубины приводит к stack exhaustion.
▶️Процесс PHP аварийно завершается операционной системой по сигналу SIGSEGV.
▶️При использовании стандартного пула PHP-FPM повторяющиеся запросы приводят к циклическому уничтожению воркеров, истощению пула и переводу эндпоинта в офлайн.
Вуаля! Получаем DoS целевого SOAP-сервиса без необходимости наличия учетных записей, взаимодействия с WSDL или специальной конфигурации сервера.
➡️ https://expatch.com/writeups/cve-2026-91765.html
#php #cve #dos #red_team
