Ошибки находятся в самом ядре PHP — в низкоуровневых механизмах обработки входящих HTTP-запросов. Это не уязвимость в каком-то плагине или фреймворке: уязвим сам PHP-интерпретатор.
Атака не требует никаких учётных данных и не зависит от логики конкретного сайта. Злоумышленник отправляет специально сформированный HTTP-запрос напрямую на сервер — и получает возможность выполнить произвольный код с правами веб-сервера. Это означает полный доступ к файлам сайта, конфигурационным файлам с паролями от баз данных, самой базе данных. На практике это заканчивается установкой веб-шелла — скрытого бэкдора, через который атакующий может возвращаться на сервер когда угодно.
Атака срабатывает до того, как начинает работать код приложения — то есть защита на уровне приложения, авторизация и любые проверки в CMS или фреймворке не помогут. Подтверждённых атак в дикой природе на момент выхода патчей не зафиксировано, однако исследователи воспроизвели уязвимость в лабораторных условиях и предупреждают о быстром появлении эксплоитов после публикации деталей.
Исправленные версии
- PHP 8.5.12
- PHP 8.4.27
- PHP 8.3.36
- PHP 8.2.35
Ветки PHP 8.1 и старше официального исправления не получат. Если сервер работает на PHP 7.x или 8.1 — переход на поддерживаемую ветку обязателен.
Как обновить
Патчи PHP вышли сегодня, 21 октября. Пакеты для дистрибутивов (Debian, Ubuntu, RHEL, AlmaLinux, Rocky Linux) появляются в течение ближайших часов — следите за обновлениями безопасности своего дистрибутива. Обновление нужно применить как можно скорее.
Временное решение до выхода обновления
Уязвимость эксплуатируется через multipart/form-data-запросы. Если на сайте нет форм с загрузкой файлов, такие запросы можно заблокировать на уровне веб-сервера. Это сломает загрузку файлов через формы, но закроет вектор атаки до выхода патча.
Для nginx — добавить в конфигурацию сайта:
if ($http_content_type ~* "multipart") {
return 403;
}Для Caddy — добавить в конфигурацию сайта:
@multipart header_regexp Content-Type (?i)multipart
respond @multipart 403Для Apache — добавить в .htaccess сайта:
RewriteCond %{HTTP:Content-Type} multipart [NC]
RewriteRule ^ - [F,L]Это временная мера — после установки обновления её нужно убрать.
← Ко всем новостям