session.upload_progress.enabled
Stoppt session.upload_progress.enabled = 0 PHP2Shell?
Teilweise. Es blockiert die bestätigten Session-Pfade einer der beiden CVEs — und nur, wenn Sie es an der richtigen Stelle setzen und neu starten. Es ist eine Notlösung, kein Fix.
Zuletzt geprüft 2026-10-22
Die kurze Antwort
php.net: „This blocks the confirmed session paths but not other variants.“ Gegen CVE-2026-109618 hilft es nicht. Der Workaround kursierte vor dem Patch breit; das Release bestätigte, dass er nie vollständig war. PHP patchen.
Was die Einstellung bewirkt
Mit aktiviertem Upload-Progress (Standard) achtet PHP bei Multipart-Uploads auf ein spezielles Formularfeld und schreibt den Fortschritt in die Session des Benutzers, während es den Request noch parst. Genau diese frühe Session-Verarbeitung vor der Initialisierung ist der Ort, an dem der Session-bezogene Use-after-free und das Speicherleck von PHP2Shell sitzen — einschließlich des Abflusses von Heap-Speicher in das PHPSESSID-Cookie, das selbst dann funktioniert, wenn Ihre Anwendung nie eine Session startet.
Was es blockiert und was nicht
| Angriffspfad | Blockiert? |
|---|---|
| Bestätigte Session-Upload-Progress-Pfade (CVE-2026-109619) | Ja |
| Fatal-Error-Backtrace-Pfad (PHP 8.5) | Nein — zusätzlich fatal_error_backtraces = 0 setzen |
| Weitere Varianten mit veraltetem Zustand (CVE-2026-109619) | Nein |
| Out-of-Memory-Korruption (CVE-2026-109618) | Nein — siehe memory_limit / post_max_size |
1. Aktuellen Wert prüfen
# 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. Dort setzen, wo es wirklich greift
| Ort | Wirkt? | Warum |
|---|---|---|
| php.ini / conf.d-Drop-in | Ja | Gilt vor dem Parsen des Requests. |
FPM-Pool php_admin_flag / php_admin_value | Ja | Pro Pool; die Anwendung kann es nicht überschreiben. |
Apache-VHost / Serverkonfiguration (php_admin_flag) | Ja | Für mod_php. |
.user.ini | Nein | php.net: nicht darauf verlassen — greift möglicherweise nicht vor dem Parsen des Requests. |
.htaccess php_flag | Nicht empfohlen | Pro Verzeichnis und überschreibbar; Serverkonfiguration nutzen. |
ini_set() im Code | Nein | Läuft erst, nachdem der Request bereits geparst wurde. |
; 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. Jeden Worker neu starten
Laufende Worker behalten ihre alten Einstellungen — und eventuell bereits korrupten Zustand —, bis sie neu starten.
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 handlerFragen
Schützt session.upload_progress.enabled = 0 vor PHP2Shell?+
Nur teilweise. Laut php.net „blockiert es die bestätigten Session-Pfade, aber nicht andere Varianten“. Gegen CVE-2026-109618 hilft es nicht. Gina Peter Banyard aus dem PHP-Core-Team: „the only mitigation is patching/upgrading PHP.“
Kann ich session.upload_progress.enabled in .user.ini oder per ini_set() setzen?+
Nein. Upload-Progress läuft, während PHP den Request parst, bevor Ihr Code läuft. php.net empfiehlt php.ini, einen FPM-Pool oder eine Serverkonfiguration, die vor dem Parsen gilt — und ausdrücklich nicht .user.ini oder ini_set().
Macht das Deaktivieren von Upload-Progress meine Website kaputt?+
Selten. Es betrifft nur Fortschrittsbalken, die auf der Session-Upload-Progress-Funktion von PHP aufbauen. Die meisten modernen Upload-Oberflächen verfolgen den Fortschritt im Browser.
Soll ich es nach dem Patch wieder einschalten?+
Nur wenn Sie es nutzen. php.net empfiehlt, es ungenutzt ausgeschaltet zu lassen — auch auf gepatchten Versionen.
Verwandte Seiten
- WorkaroundsTemporäre PHP2Shell-Workarounds: Speicher- und Upload-Limits, Upload-Progress, Backtraces und cgroups. Wirkung, Grenzen und Nebenwirkungen.
- Beheben / patchenPHP2Shell unter Linux, Docker, cPanel, Plesk, macOS und Windows beheben: Update, Neustart und Prüfung sowie Optionen für ältere PHP-Versionen.
- CVE-2026-109619CVE-2026-109619 (PHP2Shell): veraltete Globals, Use-after-free, Speicherleck, PHP-FPM, CVSS 9.2, gepatchte Versionen und Workarounds.