Ошибки находятся в самом ядре 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]

Это временная мера — после установки обновления её нужно убрать.

← Ко всем новостям