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

AngriffspfadBlockiert?
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

shell
# 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

OrtWirkt?Warum
php.ini / conf.d-Drop-inJaGilt vor dem Parsen des Requests.
FPM-Pool php_admin_flag / php_admin_valueJaPro Pool; die Anwendung kann es nicht überschreiben.
Apache-VHost / Serverkonfiguration (php_admin_flag)JaFür mod_php.
.user.iniNeinphp.net: nicht darauf verlassen — greift möglicherweise nicht vor dem Parsen des Requests.
.htaccess php_flagNicht empfohlenPro Verzeichnis und überschreibbar; Serverkonfiguration nutzen.
ini_set() im CodeNeinLäuft erst, nachdem der Request bereits geparst wurde.
config
; 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 off

3. Jeden Worker neu starten

Laufende Worker behalten ihre alten Einstellungen — und eventuell bereits korrupten Zustand —, bis sie neu starten.

shell
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 handler

Fragen

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