Trumpai: CVE-2026-115560 yra pastaba, kurią php.net paskelbė 2026 m. spalio 23 d. Pagal ją kodo vykdymas nuotoliniu būdu galimas tik esant neįprastai sesijos konfigūracijai. Iki kito įprasto klaidų taisymo leidimo priemonė tokia: serverio pusėje nustatyti session.upload_progress.enabled=0 ir paleisti iš naujo visus darbinius procesus (worker).
Kas yra CVE-2026-115560?
Po dviejų dienų nuo PHP2Shell spragų CVE-2026-109618 ir CVE-2026-109619 pataisų PHP projektas paskelbė dar vieną pastabą. CVE-2026-115560 susijusi su PHP sesijų apdorojimu kartu su sesijos įkėlimo eigos (session upload progress) funkcija, kuri vykstančių failų įkėlimų eigą saugo sesijoje.
Pasak php.net, kenkėjiško kodo vykdymas nuotoliniu būdu galimas, bet tik esant neįprastai konfigūracijai. Pilnas advisory su visomis detalėmis turi pasirodyti su kitu įprastu klaidų taisymo leidimu. Iki tol žinių yra sąmoningai nedaug.
Ką daro sesijos įkėlimo eiga?
Sesijos įkėlimo eiga yra PHP patogumo funkcija. Kai lankytojas įkelia didesnį failą, PHP įkėlimo metu nuolat įrašo informaciją apie eigą į sesiją: kiek duomenų jau atkeliavo ir kuris failas šiuo metu perduodamas. Programa gali lygiagrečiai šią informaciją užklausti ir sukurti eigos juostą.
Praktikoje tai naudoja tik nedaug programų, nes modernios įkėlimo formos eigą dažniausiai matuoja tiesiogiai naršyklėje. Tačiau PHP ši funkcija pagal numatytuosius nustatymus įjungta. Todėl ji pasirodo ir ties CVE-2026-115560, ir tarp pereinamųjų priemonių nuo PHP2Shell: ko nereikia, tas turėtų būti išjungta.
Kada serveris paveiktas CVE-2026-115560?
Pagal php.net pastabą turi susidėti trys sąlygos:
- Konfigūracijoje kaip
session.serialize_handlernurodyta reikšmėphp_binaryarbaphp_serialize. - Programa vykdymo metu per
ini_set()perjungia šią reikšmę įphp, prieš kviesdamasession_start(). - Sesijos įkėlimo eiga yra aktyvi.
Numatytoji session.serialize_handler reikšmė yra php. Perjungimas konfigūracijoje ir grąžinimas kode yra neįprastas, bet pasitaiko išaugusiuose nuosavuose sprendimuose arba bibliotekose su sava sesijų tvarka. Ar tai taikoma jums, galima patikrinti.
Kaip patikrinti savo konfigūraciją
Pirmiausia galiojančios reikšmės. CLI gali skaityti kitą php.ini nei PHP-FPM ar mod_php; todėl patikrinkite ir žiniatinklio serverio ar FPM baseino konfigūraciją.
php -i | grep -E "session.serialize_handler|session.upload_progress.enabled"
grep -rn "serialize_handler\|upload_progress" /etc/php/ 2>/dev/null # kelias priklauso nuo distribucijos
Po to programos kodas. Ši paieška tik skaito ir parodo vietas, kuriose tvarkyklė nustatoma vykdymo metu:
grep -rn "session.serialize_handler" /var/www/ --include="*.php"
Jei paieška nieko neranda, o konfigūracijoje tvarkyklė nustatyta php, aprašytas derinys mažai tikėtinas. Sesijos įkėlimo eigą vis tiek turėtumėte išjungti, nes php.net tą patį nustatymą nurodo ir kaip pereinamąją priemonę nuo PHP2Shell.
Priemonė: session.upload_progress.enabled=0
Nustatykite reikšmę php.ini, FPM baseine ar serverio konfigūracijoje. Pasak php.net, aiškiai ne per ini_set() ar .user.ini, nes ten ji suveikia per vėlai arba programa ją gali perrašyti.
; php.ini (visiems baseinams ir SAPI, skaitantiems šį failą)
session.upload_progress.enabled = 0
; arba FPM baseine
php_admin_flag[session.upload_progress.enabled] = off
# Apache su mod_php, VirtualHost arba serverio konfigūracijoje
php_admin_flag session.upload_progress.enabled off
Po to paleiskite iš naujo visus PHP darbinius procesus, pavyzdžiui, systemctl restart php8.3-fpm arba esant mod_php Apache. Paketų ir tarnybų pavadinimai skiriasi pagal distribuciją. Be paleidimo iš naujo toliau galioja senas nustatymas. Daugiau puslapyje PHP-FPM ir visų darbinių procesų paleidimas iš naujo.
Po paleidimo iš naujo patikrinkite, ar nustatymas tikrai veikia: žiniatinklio kontekste, ne tik komandinėje eilutėje. Trumpam įrengtas, prieiga apsaugotas phpinfo puslapis parodo galiojančią reikšmę; po to jį nedelsiant ištrinkite.
Vertinimas šalia PHP2Shell
CVE-2026-115560 yra gerokai siauresnė už dvi PHP2Shell spragas, kurios įprastuose veikimo režimuose veikia be ypatingos konfigūracijos. Kas dabar turi prioritetizuoti, pirmiausia turėtų įdiegti PHP2Shell atnaujinimą, o po to nustatyti session.upload_progress.enabled=0. Abu kartu galima atlikti vienu priežiūros langu.
Vadovybei ir ne technikams: CVE-2026-115560 nėra priežastis nerimauti, bet yra punktas sąraše. Nustatymas nustatomas greitai, vos kuriai programai pastebimai daro įtaką ir kartu apima vieną iš pereinamųjų priemonių nuo PHP2Shell. Kitos php.net pereinamosios priemonės pateiktos puslapyje Skubios priemonės, kai dar negalite pataisyti, bendros nuorodos apie sesijų konfigūraciją puslapyje Sesijų PHP apsauga.
Ko dar nežinome: kurios PHP versijos tiksliai paveiktos ir kuris leidimas atneš taisymą. Šį puslapį atnaujinsime, kai tik pasirodys advisory.
Kaip PHP SOS padeda konkrečiai?
Vykdydami serverio sustiprinimą priemonę taikome ilgalaikiai ir patikrinamai:
- Perskaityti konfigūraciją: galiojančios sesijos reikšmės pagal SAPI, baseiną ir virtualų šeimininką.
- Peržiūrėti kodą: vietos, kuriose tvarkyklė ar sesijos parinktys keičiamos vykdymo metu.
- Išjungti tinkamoje vietoje: php.ini, baseine ar serverio konfigūracijoje, programai neperrašomai, su paleidimu iš naujo.
- Sekti toliau: kai pasirodys klaidų taisymo leidimas, jį įdiegsime ir dokumentuosime būklę.
Dažni klausimai
Ar CVE-2026-115560 yra PHP2Shell dalis?
Pranešimas pasirodė po dviejų dienų nuo PHP2Shell pataisų ir taip pat susijęs su pačiu PHP. Tačiau tai atskira spraga su savo CVE numeriu, veikianti tik esant tam tikrai, neįprastai konfigūracijai. Spalio 21 d. PHP2Shell atnaujinimai jos, esant dabartinei būklei, neištaiso.
Ar jau yra atnaujinimas nuo CVE-2026-115560?
Pagal 2026-10-25 būklę ne. php.net skelbia, kad pilnas advisory pasirodys su kitu įprastu klaidų taisymo leidimu. Iki tol rekomenduojama priemonė yra session.upload_progress.enabled=0.
Kas sugenda, jei išjungiu sesijos įkėlimo eigą?
Ši funkcija praneša programai apie vykstančių failų įkėlimų eigą. Rodiklį praranda tik programos, kurios tokį eigos indikatorių įgyvendina per šią PHP funkciją. Pats įkėlimas toliau veikia.