Накратко: CVE-2026-115560 е бележка, публикувана от php.net на 23 октомври 2026 г. Според нея отдалечено изпълнение на код е възможно само при необичайна конфигурация на сесиите. До следващото редовно издание с поправки на грешки средството е: да се зададе session.upload_progress.enabled=0 от страна на сървъра и да се рестартират всички worker процеси.
Какво е CVE-2026-115560?
Два дни след пачовете за уязвимостите на PHP2Shell CVE-2026-109618 и CVE-2026-109619 проектът PHP публикува още една бележка. CVE-2026-115560 засяга обработката на сесиите в PHP във връзка с функцията Session Upload Progress, която записва напредъка на текущите качвания на файлове в сесията.
Според php.net е възможно отдалечено изпълнение на злонамерен код, но само при необичайна конфигурация. Пълният advisory с всички подробности трябва да последва със следващото редовно издание с поправки на грешки. Дотогава познанията са съзнателно оскъдни.
Какво прави Session Upload Progress?
Session Upload Progress е функция за удобство на PHP. Когато посетител качва по-голям файл, PHP по време на качването постоянно записва в сесията данни за напредъка: колко данни вече са пристигнали и кой файл се предава в момента. Едно приложение може паралелно да чете тези данни и да изгради индикатор за напредък.
На практика това ползват малко приложения, защото съвременните формуляри за качване обикновено измерват напредъка директно в браузъра. В PHP функцията обаче е включена по подразбиране. Затова тя се появява както при CVE-2026-115560, така и при временните мерки срещу PHP2Shell: което не е нужно, трябва да е изключено.
Кога един сървър е засегнат от CVE-2026-115560?
Според бележката на php.net трябва да са налице три условия:
- В конфигурацията като
session.serialize_handlerе зададена стойностphp_binaryилиphp_serialize. - Приложението превключва тази стойност по време на изпълнение чрез
ini_set()наphp, преди да извикаsession_start(). - Session Upload Progress е активен.
Стандартната стойност на session.serialize_handler е php. Превключване в конфигурацията и връщане в кода е необичайно, но се среща в развити собствени разработки или при библиотеки със собствена обработка на сесиите. Дали това важи при Вас, може да се провери.
Така проверявате конфигурацията си
Първо ефективните стойности. CLI може да чете друг php.ini, различен от PHP-FPM или mod_php; затова проверете и конфигурацията на уеб сървъра или на FPM пула.
php -i | grep -E "session.serialize_handler|session.upload_progress.enabled"
grep -rn "serialize_handler\|upload_progress" /etc/php/ 2>/dev/null # пътят е различен според дистрибуцията
След това кодът на приложението. Следното търсене е само за четене и показва места, където обработчикът се задава по време на изпълнение:
grep -rn "session.serialize_handler" /var/www/ --include="*.php"
Ако търсенето не намери нищо и обработчикът в конфигурацията е php, описаната комбинация е малко вероятна. Session Upload Progress все пак трябва да изключите, защото php.net назовава същата настройка и като временна мярка срещу PHP2Shell.
Средство: session.upload_progress.enabled=0
Задайте стойността в php.ini, във FPM пула или в конфигурацията на сървъра. Според php.net изрично не чрез ini_set() или .user.ini, защото там тя действа твърде късно или може да бъде презаписана от приложението.
; php.ini (за всички пулове и SAPI, които четат този файл)
session.upload_progress.enabled = 0
; или във FPM пула
php_admin_flag[session.upload_progress.enabled] = off
# Apache с mod_php, във VirtualHost или в конфигурацията на сървъра
php_admin_flag session.upload_progress.enabled off
След това рестартирайте всички PHP worker процеси, например systemctl restart php8.3-fpm или Apache при mod_php. Имената на пакетите и услугите се различават според дистрибуцията. Без рестартиране старата настройка продължава да действа. Повече има на страницата Рестартиране на PHP-FPM и на всички worker процеси.
След рестартирането проверете дали настройката действително е в сила: в уеб контекст, а не само в командния ред. Кратко настроена, защитена от достъп phpinfo страница показва ефективната стойност; изтрийте я веднага след това.
Оценка до PHP2Shell
CVE-2026-115560 е значително по-тясна от двете уязвимости на PHP2Shell, които действат в обичайните режими на работа без особена конфигурация. Който трябва да приоритизира, първо внася актуализацията за PHP2Shell, а след това задава session.upload_progress.enabled=0. И двете заедно са осъществими в един прозорец за поддръжка.
За управителите и нетехническите хора: CVE-2026-115560 не е повод за тревога, но е точка в списъка. Настройката се задава бързо, почти не се отразява осезаемо на никое приложение и същевременно покрива една от временните мерки срещу PHP2Shell. Останалите временни мерки на php.net са на страницата Незабавни мерки, когато още не можете да пачнете, общите бележки за конфигурацията на сесиите на страницата Защита на сесиите в PHP.
Какво още не знаем: кои PHP версии точно са засегнати и кое издание ще донесе поправката. Ще актуализираме тази страница, щом advisory-то излезе.
Как помага PHP SOS конкретно?
В рамките на заздравяването на сървъра прилагаме средството трайно и проверимо:
- Четене на конфигурацията: ефективни стойности на сесиите за всеки SAPI, пул и виртуален хост.
- Претърсване на кода: места, където обработчикът или опциите за сесиите се променят по време на изпълнение.
- Изключване на правилното място: в php.ini, пула или конфигурацията на сървъра, без възможност приложението да го презапише, с последващо рестартиране.
- Проследяване: Когато излезе изданието с поправка, го внасяме и документираме състоянието.
Често задавани въпроси
Част от PHP2Shell ли е CVE-2026-115560?
Съобщението дойде два дни след пачовете на PHP2Shell и също засяга самия PHP. То е обаче отделна уязвимост със собствен номер CVE и действа само при определена, необичайна конфигурация. Актуализациите на PHP2Shell от 21 октомври не я отстраняват според досегашното състояние.
Има ли вече актуализация срещу CVE-2026-115560?
Към 25.10.2026 г. не. php.net обявява, че пълният advisory ще последва със следващото редовно издание с поправки на грешки. Дотогава препоръчваното средство е session.upload_progress.enabled=0.
Какво се чупи, ако изключа Session Upload Progress?
Функцията съобщава на приложението напредъка на текущите качвания на файлове. Само приложения, които реализират такъв индикатор за напредък чрез тази PHP функция, губят показването. Самото качване продължава да работи.