session.upload_progress.enabled
Stopt session.upload_progress.enabled = 0 PHP2Shell?
Gedeeltelijk. Het blokkeert de bevestigde sessiepaden van één van de twee CVE’s — en alleen als je het op de juiste plek instelt en herstart. Het is een noodoplossing, geen fix.
Laatst gecontroleerd 2026-10-22
Het korte antwoord
php.net: “This blocks the confirmed session paths but not other variants.” Voor CVE-2026-109618 doet het niets. De workaround ging vóór de patch breed rond; de release bevestigde dat hij nooit volledig was. Patch PHP.
Wat de instelling doet
Met upload progress ingeschakeld (de standaard) kijkt PHP bij multipart-uploads naar een speciaal formulierveld en schrijft de voortgang in de sessie van de gebruiker terwijl het de request nog aan het parsen is. Precies die vroege sessieafhandeling, vóór de initialisatie, is waar de sessiegerelateerde use-after-free en het geheugenlek van PHP2Shell zitten — inclusief het lekken van heap-geheugen in de PHPSESSID-cookie, wat zelfs werkt als je app nooit een sessie start.
Wat het blokkeert en wat niet
| Aanvalspad | Geblokkeerd? |
|---|---|
| Bevestigde sessie-upload-progress-paden (CVE-2026-109619) | Ja |
| Fatal-error-backtrace-pad (PHP 8.5) | Nee — zet ook fatal_error_backtraces = 0 |
| Andere varianten met achtergebleven state (CVE-2026-109619) | Nee |
| Out-of-memory-corruptie (CVE-2026-109618) | Nee — zie memory_limit / post_max_size |
1. Controleer de huidige waarde
# What php.ini says (CLI and FPM can differ — check both)
php -i | grep session.upload_progress.enabled
php-fpm8.3 -i | grep session.upload_progress.enabled # adjust version
# Where the setting comes from
php --ini
grep -rn "upload_progress" /etc/php/ 2>/dev/null
# What the running site actually uses (FPM pool overrides are only visible here)
# <?php var_dump(ini_get('session.upload_progress.enabled'));2. Stel het in waar het echt werkt
| Locatie | Werkt? | Waarom |
|---|---|---|
| php.ini / conf.d drop-in | Ja | Geldt vóór het parsen van de request. |
FPM-pool php_admin_flag / php_admin_value | Ja | Per pool; de app kan het niet overschrijven. |
Apache vhost / serverconfig (php_admin_flag) | Ja | Voor mod_php. |
.user.ini | Nee | php.net: niet op vertrouwen — het geldt mogelijk niet vóór het parsen van de request. |
.htaccess php_flag | Niet aanbevolen | Per map en te overschrijven; gebruik de serverconfig. |
ini_set() in code | Nee | Draait pas nadat de request al is geparst. |
; php.ini or conf.d drop-in, e.g. /etc/php/8.3/fpm/conf.d/99-php2shell.ini
session.upload_progress.enabled = 0
; or per FPM pool (/etc/php/8.3/fpm/pool.d/www.conf)
php_admin_flag[session.upload_progress.enabled] = off
; or Apache + mod_php (vhost or server config, not .htaccess)
php_admin_flag session.upload_progress.enabled off3. Herstart elke worker
Draaiende workers houden hun oude instellingen — en mogelijk al corrupte state — tot ze herstarten.
sudo systemctl restart php8.3-fpm # every FPM version and pool you run
sudo systemctl restart apache2 # mod_php
sudo /scripts/restartsrv_apache_php_fpm # cPanel
sudo systemctl restart plesk-php83-fpm # Plesk, per handlerVragen
Beschermt session.upload_progress.enabled = 0 tegen PHP2Shell?+
Maar gedeeltelijk. php.net zegt dat het “de bevestigde sessiepaden blokkeert, maar niet andere varianten”. Voor CVE-2026-109618 doet het niets. PHP-kernontwikkelaar Gina Peter Banyard: “the only mitigation is patching/upgrading PHP.”
Kan ik session.upload_progress.enabled in .user.ini of met ini_set() instellen?+
Nee. Upload progress draait terwijl PHP de request parst, voordat je code draait. php.net zegt dat je php.ini, een FPM-pool of serverconfiguratie moet gebruiken die vóór het parsen geldt, en uitdrukkelijk niet .user.ini of ini_set().
Breekt het uitschakelen van upload progress mijn site?+
Zelden. Het voedt alleen voortgangsbalken die op de session-upload-progress-functie van PHP zijn gebouwd. De meeste moderne upload-interfaces houden de voortgang in de browser bij.
Moet ik het na het patchen weer aanzetten?+
Alleen als je het gebruikt. php.net raadt aan het uit te laten als je het niet nodig hebt, ook op gepatchte versies.
Gerelateerd
- MitigatiesTijdelijke PHP2Shell-mitigaties: geheugen- en uploadlimieten, upload progress, backtraces en cgroups. Wat blokkeren ze en wat zijn de nadelen?
- Oplossen / patchenPHP2Shell patchen op Linux, Docker, cPanel, Plesk, macOS en Windows: stappen voor updates, herstarten en controle, ook voor oudere PHP-versies.
- CVE-2026-109619CVE-2026-109619 (PHP2Shell): achtergebleven globals, use-after-free, geheugenlek, PHP-FPM, CVSS 9.2, gepatchte versies en mitigaties.