Справочная информация:
CVE-2026-109619 (session.upload_progress): Данный вектор атаки физически не может сработать, так как этот механизм PHP запускается только при парсинге multipart-форм. Нет такого типа запроса — модуль прогресса загрузки вообще не включается.
CVE-2026-109618 (переполнение памяти в парсере): Уязвимость живет внутри кода PHP, который отвечает за разбор multipart-структуры (границы файлов, заголовки форм).
Уязвимости вызваны обращением к уже освобождённой памяти в обработчике отслеживания прогресса загрузки файлов на сервер (session.upload_progress). Наличия на сайте функциональности для загрузки файлов для совершения атаки не требуется, достаточно автоматического срабатывания в PHP-интерпретаторе обработчика контента "multipart/form-data". Для успешной эксплуатации требуется определение раскладки структур в памяти процесса, которая специфична в каждой сборке (проблема решается перебором в эксплоите смещений, заранее вычисленных для пакетов из разных дистрибутивов).
Временно решение угроз для вебсервера nginx:
Временное решение основывается на блокирование multipart запросов с кодом 403 на уровне веб сервера, сразу после чтения HTTP-заголовка Content-Type, вредоносное тело запроса блокируется и вообще не доходит до PHP. Обработчик PHP даже не узнает, что этот запрос существовал, и его память останется нетронутой.
Создание белого списка:
geo $is_trusted_ip {
default 0;
5.22.156.0/24 1;
5.35.80.0/23 1;
}Готовый файл с подсетями РБ можно скачать по ссылке: https://mhost.by/downloads/mhost_ips_map.conf
Фильтрация запросов:
set $check_multipart "";
# 1. Если это опасный multipart-запрос, добавляем букву "M"
if ($content_type ~* "multipart/form-data") {
set $check_multipart "M";
}
# 2. Если IP НЕ входит в белый список (равен 0), добавляем букву "B"
if ($is_trusted_ip = 0) {
set $check_multipart "${check_multipart}B";
}
# 3. Если совпали оба условия (строка стала "MB"), отдаем 403 Forbidden
if ($check_multipart = "MB") {
return 403;
}
Готовый файл с логикой фильтрации можно скачать по ссылке: https://mhost.by/downloads/mhost_ips_filter.conf
Общая настройка nginx:
Подключение выполняется строчкой: include /etc/nginx/mhost_ips_map.conf;
Пример:
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
.............
.............
.............
include /etc/nginx/mhost_ips_map.conf;
.............
.............
}
Настройка сайтов:
Подключение выполняется строчкой: include /etc/nginx/mhost_ips_filter.conf;
Пример:
server {
listen 80;
server_name www.mhost.by mhost.by;
.............
.............
include /etc/nginx/mhost_ips_filter.conf;
.............
.............
location / {
rewrite ^(.*)$ https://mhost.by$1 permanent;
}
}
После всех правок обязательно необходимо проверить конфигурацию веб сервера командой: nginx -t
Если указанная команда вернет информацию что все хорошо, то необходимо выполнить перезагрузку сервера
service nginx restart
Тестирование:
curl -s -o /dev/null -w "%{http_code}\n" -L -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" -X POST -F "test_field=1" https://адрес_Вашего_сайта
Если Ваш ип находится в белом списке, то сервер вернет: 200 - это означает что команда была обработана, для всех остальных запросов сервер должен возвращать: 403 - означает, что сервер понял ваш запрос, но отказывается предоставить доступ к странице или файлу