sicherheitshinweis php
Hotfix für CVE-2026-109618 und CVE-2026-109619
Gepatchte Docker-Basis-Images für PHP-Versionen, die kein offizielles Update mehr erhalten (7.3, 7.4, 8.0, 8.1), sowie ein Build-Kit, mit dem Sie die Images selbst erzeugen können.
Zwei Lücken in PHP erlauben Angreifern ohne Anmeldung, Code auf dem Webserver auszuführen. Bestätigt ist das für mod_php und PHP-FPM.
- GHSA-w8hw-w9fx-j79w: Abbruch bei Speichermangel, während der Request erst halb initialisiert ist.
- GHSA-6wmf-4rv5-p3rp: veralteter Zustand zwischen zwei Requests desselben Workers.
Roll-out mit fertigem Image
1. Image laden und prüfen
curl -fO https://cve-fix.ber.neska.io/downloads/images/php-7.3-fpm-alpine-cve2026.tar.gz curl -fO https://cve-fix.ber.neska.io/downloads/SHA256SUMS grep php-7.3-fpm-alpine-cve2026.tar.gz SHA256SUMS | sed 's#./images/##' | sha256sum -c - docker load < php-7.3-fpm-alpine-cve2026.tar.gz
Danach steht lokal cve-fix/php:7.3-fpm-alpine-cve2026 bereit. Wir empfehlen, das Image einmal in Ihre Registry zu übertragen und von dort zu verteilen.
2. Anwendung umstellen
# vorher FROM php:7.3-fpm-alpine # nachher FROM cve-fix/php:7.3-fpm-alpine-cve2026
Bauen Sie das Anwendungs-Image neu. Extensions über docker-php-ext-install funktionieren wie gewohnt. Rollen Sie es aus und starten Sie alle PHP-Container neu.
3. Kontrolle
docker run --rm <image> php -r 'var_dump(ini_get("max_multipart_body_parts"));'
# erwartet: string(2) "-1" (in 7.3, 7.4 und 8.0 gibt es diese Option nur mit Patch)
Das Build-Kit enthält zusätzlich fpm-test.sh und apache-test.sh. Sie prüfen, dass das Image Upload-Fortschritt nicht mehr in die Session schreibt.
Downloads
Fertige Images für docker load
| Datei | Image | PHP | Größe | SHA256 |
|---|---|---|---|---|
| php-7.3-fpm-alpine-cve2026.tar.gz | cve-fix/php:7.3-fpm-alpine-cve2026 | 7.3.33 | 35 MB | 5673c3f1126bd1cde805d8a0fb20ceaa0a6ff07fa8a77a936ffd78002af8c3ec |
| php-7.3-apache-cve2026.tar.gz | cve-fix/php:7.3-apache-cve2026 | 7.3.33 | 164 MB | 17eb27e3f12d2a8cb490afca4c5751727a382fd54f157d9e873b7a12641ea3cc |
| php-7.4-fpm-alpine-cve2026.tar.gz | cve-fix/php:7.4-fpm-alpine-cve2026 | 7.4.33 | 33 MB | 1ad741c61a3e90955c993667e5033fb1845c04a2d9a1b83b5ed1883dc355f294 |
| php-8.0-apache-cve2026.tar.gz | cve-fix/php:8.0-apache-cve2026 | 8.0.30 | 164 MB | 4be381cee785bfe743c5a96366cc4545d898cb481de0d8dfe3da3856b531a0fd |
| php-8.1-fpm-alpine-cve2026.tar.gz | cve-fix/php:8.1-fpm-alpine-cve2026 | 8.1.34 | 39 MB | b250d5941dbb929dd2f6b5bf112551cf1f55c89c36c268eaf5c52ba7ae8e704e |
Build-Kit, Patches, Build-Ergebnisse
| Datei | Inhalt | Größe | SHA256 |
|---|---|---|---|
| patches/php-7.3.patch | Patch für PHP 7.3 | 39 KB | 81bac63c42508dd29136177d0edd0737fdc8439e55ed1b79d46d4220a22b9c63 |
| patches/php-7.4.patch | Patch für PHP 7.4 | 41 KB | 658bc861d874b50a72f79b8e4c97b8198af0aeb36b14ba8ab79901803f516ade |
| patches/php-8.0.patch | Patch für PHP 8.0 | 40 KB | 695511854751d9fef1cd42dae5216417e61abba26d819d8175fe83ba5934d0fb |
| patches/php-8.1.patch | Patch für PHP 8.1 | 48 KB | 797955ab45234a510c17dfd27101d8ad6c2f65abc298168d84214e1a06b77591 |
| php-cve-build.tar.gz | Build-Kit: build.sh, Dockerfile, Patches, Testskripte, README | 35 KB | 5455b8b908bd1cc80d55e7ad77f11cca52f189db1f195542cf535cae91e60a1d |
| php-out/php-7.3-apache-out.tgz | Build-Ergebnis out/ | 8 MB | 499db61cc7bddf9924ac81e24dea58f3fd608e338b4f73bbc97cb8d42c3f305d |
| php-out/php-7.3-fpm-alpine-out.tgz | Build-Ergebnis out/ | 8 MB | abc1aebb56ef2014ff41d1d982adbbd7f93db81f6413d82d50898180864481f3 |
| php-out/php-7.4-fpm-alpine-out.tgz | Build-Ergebnis out/ | 8 MB | 8494480dcdc3e91b78c5e68882b8438ba30d8b0ca9dcee9e92ef621e0043cb06 |
| php-out/php-8.0-apache-out.tgz | Build-Ergebnis out/ | 8 MB | dceb02ae1df5944be71e06076f4fb96c7a1c3378ece541921e7eb33def77bf73 |
| php-out/php-8.1-fpm-alpine-out.tgz | Build-Ergebnis out/ | 9 MB | 322d0ee880fb463bc8eebac83dae344f14a30ea39568dbf24c3c62179058fe2d |
Alle Prüfsummen: SHA256SUMS · Verzeichnis
curl -fsSL https://cve-fix.ber.neska.io/downloads/php-cve-build.tar.gz | tar xz cd php-cve-build ./build.sh php:7.3-fpm-alpine \ registry.example.com/php:7.3-fpm-alpine-cve2026
- Unterstützt
php:7.3.33,7.4.33,8.0.30und8.1.34, jeweils Alpine oder Debian, FPM, Apache oder CLI. - Der Build läuft im Basis-Image selbst. Der Quell-Tarball wird gegen
PHP_SHA256geprüft, und./configurenutzt exakt die Optionen des Originals. - Ins Endimage kommen nur neu gebaute Binaries, Module und Header.
php.ini, FPM- und Apache-Konfiguration bleiben unverändert. - Optionen:
JOBS=16(Compiler-Jobs),RUN_TESTS=1(PHP-Testsuite gepatcht und ungepatcht). - Voraussetzungen: Docker und Internetzugang. Dauer auf 4 Kernen etwa 5 bis 10 Minuten pro Image.
Verhaltensänderungen durch den Patch
- Speicherlimit überschritten: Der Worker beendet sich sofort. Der Client erhält keine Antwort, hinter nginx also den Status
502. Die Fehlermeldung steht nur noch im FPM- bzw. Container-Log. Shutdown-Funktionen und Fatal-Handler von Frameworks wie Symfony laufen in diesem Fall nicht mehr. session.upload_progresshat keine Wirkung mehr, auch wenn die Option eingeschaltet ist.- Neue INI-Option
max_multipart_body_parts. Der Standardwert-1entsprichtmax_input_vars + max_file_uploads. Weitere Multipart-Teile werden mit einer Warnung verworfen.
Tests
| Basis-Image | Patch | PHP-Testsuite | Upload-Fortschritt in Session |
|---|---|---|---|
php:7.3-fpm-alpine | 7.3-Backport (appwerke) | ok | vorher aktiv, jetzt inaktiv |
php:7.3-apache | 7.3-Backport (appwerke) | ok | vorher aktiv, jetzt inaktiv |
php:7.4-fpm-alpine | php-src 7.4 | ok | vorher aktiv, jetzt inaktiv |
php:8.0-apache | php-src 8.0 | ok | vorher aktiv, jetzt inaktiv |
php:8.1-fpm-alpine | php-src 8.1 | ok | vorher aktiv, jetzt inaktiv |
Getestet wurden Zend/tests, tests/basic, tests/lang und ext/session/tests, jeweils gepatcht und ungepatcht. Abweichungen gibt es nur dort, wo der Patch das Verhalten bewusst ändert: bei ext/session/tests/rfc1867* und bei den Speicherlimit-Tests tests/lang/bug45392 bzw. unter 8.1 Zend/tests/gh11189* und fibers/get-return-after-bailout.
- 7.4, 8.0, 8.1: unverändert aus den php-src-Branches
PHP-x.y-CVE-2026-109618-109619(Commits712e60f9ed,82f8f31b16,1d7dec178a). - 7.3: Backport des 7.4-Patches durch appwerke. Die Overflow-Prüfungen der CONCAT-Handler wurden ergänzt, der Shutdown-Reset an PHP 7.3 angepasst und
ZSTR_MAX_LENaus 7.4 übernommen.