Сайты на движке PHP, размещенные на серверах NGINX, подвержены взлому, если запуск сценариев осуществляется через демон PHP-FPM. Этот дополнительный модуль содержит уязвимость, позволяющую с помощью особого запроса выполнить на сервере сторонний код.

Менеджер процессов PHP-FPM не входит в пакет NGINX; многие хостинг-провайдеры используют его как альтернативную реализацию FastCGI-режима в PHP — в основном для сайтов с большой нагрузкой. Эксплуатация уязвимости, получившей идентификатор CVE-2019-11043, возможна лишь при включенном PHP-FPM и в том случае, когда конфигурация предполагает использование директивы fastcgi_split_path_info для разделения запрошенных URL на две части: значение, указывающее на имя скрипта, и путь к файлу.

Проблему, связанную с возможностью выхода за границу буфера при обработке запросов на вывод PHP-страниц, обнаружили исследователи из компании Wallarm. Как оказалось, подобная ошибка возникает из-за неправильной работы FPM с указателями. Более того, поиск нужного скрипта осуществляется без проверки его наличия на сервере. Используя эти недочеты, удаленный злоумышленник сможет добиться перезаписи данных в памяти своим кодом, который затем будет запущен на исполнение.

Исследователи создали PoC-эксплойт для рабочих сред на основе PHP 7. По данным информационного портала W3Techs, в настоящее время новейшую версию PHP использует треть сайтов в Интернете, а серверы NGINX — 30,6%. Все ветки PHP 7 уже получили соответствующее обновление.

В конце прошлой недели один из затронутых хостеров, Nextcloud, опубликовал предупреждение, призвав своих клиентов незамедлительно обновить конфигурационный файл NGINX. Сисадминам также рекомендуется установить новейшую сборку PHP-пакета — 7.1.33, 7.2.24 или 7.3.11.

Проверить сервер на наличие уязвимости CVE-2019-11043 можно с помощью следующей bash-команды:

egrep -Rin –color ‘fastcgi_split_path’ /etc/nginx/

Если обновление PHP по каким-то причинам откладывается, можно в качестве временной меры фильтровать последовательности %0a и %0d в URL на уровне брандмауэра веб-приложений. Поскольку PoC-код уже стал достоянием общественности, после установки патча следует обязательно проверить систему на наличие несанкционированных изменений. Администраторам NGINX, не использующим PHP-FPM, тоже рекомендуется освежить PHP 7, так как новые корректирующие выпуски содержат много других заплаток и исправлений.

Категории: Аналитика, Уязвимости