
Inoffizielle Patches für PHP CVE-2026-109618 / CVE-2026-109619 (RCE, CVSS 9.2) auf EOL-Plattformen: PHP 7.3 auf CentOS/RHEL 7 (Remi), PHP 5.4 auf Amazon Linux 2, PHP 5.3 auf Amazon Linux 1
Inoffizielle Backports der minimalen Mitigation des PHP-Sicherheitsteams für die beiden kritischen, nicht authentifizierten Remote-Code-Execution-Schwachstellen, die am 2026-10-21 angekündigt wurden:
| CVE | Advisory | Zusammenfassung |
|---|---|---|
| CVE-2026-109618 | GHSA-w8hw-w9fx-j79w | RCE durch Out-of-Memory-Korruption (CVSS 4.0: 9.2) |
| CVE-2026-109619 | GHSA-6wmf-4rv5-p3rp | RCE durch veralteten globalen Zustand (CVSS 4.0: 9.2) |
Upstream hat PHP 8.2.35, 8.3.36, 8.4.27 und 8.5.12 behoben und reine Quellcode-Minimal-Mitigations für 7.4, 8.0 und 8.1 veröffentlicht. Niemand veröffentlicht einen Fix für die unten genannten Plattformen, daher stellt dieses Repository Patches und reproduzierbare Build-Skripte für diese bereit.
Nicht mit der PHP Group, Remi Collet oder Amazon verbunden. Keine Gewährleistung. Lesen Sie Einschränkungen vor dem Deployment.
php7.3 7.3.33-35 enthält einen separaten 7.3-
Port desselben Upstream-Commits. Der EL7-Patch hier ändert dieselben 17 Dateien, und die Kern-
Änderungen sind Zeile für Zeile identisch (Details in docs/TESTING.md).tests/verify.sh meldete für jeden PATCHED.| Ihr System | PHP-Paketquelle | Was zu verwenden ist |
|---|---|---|
| CentOS 7 / RHEL 7 | Remi php73 (z. B. php-7.3.33-14.el7.remi) | patches/php-7.3.33-remi22-el7-… + build/el7-php73/build.sh |
| Amazon Linux 2 | Amazon php-5.4.16-46.amzn2.* | patches/php-5.4.16-amzn2-… + build/amazon-linux/build.sh amzn2 |
| Amazon Linux 1 (AMI 2017.03 / 2018.03) | Amazon php-5.3.29-1.8.amzn1 | patches/php-5.3.29-amzn1-… + build/amazon-linux/build.sh amzn1 |
| Ubuntu / Debian mit dem Sury-PPA, PHP 7.3 / 7.4 / 8.0 / 8.1 | deb.sury.org | Nichts von hier. Aktualisieren Sie auf Sury 7.3.33-35, 7.4.33-31, 8.0.30-25 oder 8.1.34-9 (oder neuer). Diese enthalten bereits den Fix (debian/patches/*-Avoid-state-corruption-via-bailout.patch), auch wenn ihre Changelogs die CVEs nicht erwähnen. |
Ubuntu 24.04 Distro php8.3 | Ubuntu-Archiv | Aktualisieren Sie auf 8.3.6-0ubuntu0.24.04.13 oder neuer. |
| PHP 8.2 oder neuer aus beliebiger Quelle | — | Aktualisieren Sie auf 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 oder neuer. |
Erfordert Docker auf dem Build-Rechner (jedes Betriebssystem). Builds laufen vollständig in Containern
der Ziel-Distribution ab, sodass sich die resultierenden RPMs mit einem einfachen yum localinstall installieren lassen.
git clone https://github.com/leonlai-tw/php-eol-cve-2026-109618-109619.git
cd php-eol-cve-2026-109618-109619
# CentOS 7 / RHEL 7 + Remi PHP 7.3 -> ./work-el7/out/
build/el7-php73/build.sh
# Amazon Linux 2 + PHP 5.4 -> ./work-amzn2/out/
build/amazon-linux/build.sh amzn2
# Amazon Linux 1 + PHP 5.3 -> ./work-amzn1/out/
build/amazon-linux/build.sh amzn1
Die resultierenden Pakete werden mit <vendor version>.cvefix1 versioniert (zum Beispiel
php-7.3.33-22.cvefix1.el7, php-5.4.16-46.amzn2.0.7.cvefix1), sodass sie immer neuer sortieren als
das Herstellerpaket, das sie ersetzen.
Installieren Sie nur die Pakete, die Sie bereits haben, und starten Sie dann PHP neu:
# on the target host, inside the directory holding the built RPMs
yum localinstall $(for p in $(rpm -qa 'php*' --qf '%{NAME}\n'); do ls ${p}-[0-9]*.cvefix1*.rpm 2>/dev/null; done)
systemctl restart php-fpm # or: apachectl graceful (mod_php)
Lang laufende PHP-Prozesse (Swoole/Octane, Queue-Worker, Cron-Daemons) müssen ebenfalls neu gestartet werden; andernfalls laufen sie weiterhin mit der alten Binärdatei.
rpm -q php-cli # must end in .cvefix1
tests/verify.sh # prints PATCHED / NOT PATCHED
tests/verify.sh führt einen CLI-Prozess mit einem Speicherlimit von 16 MB aus und prüft das beobachtbare Verhalten der minimalen Gegenmaßnahme: Bei Speichermangel beendet sich der Prozess mit Code 1 ohne Shutdown-Funktionen auszuführen (ungepatchtes PHP beendet sich mit 255 und führt sie aus).
Um zu bestätigen, dass ein laufendes PHP-FPM die neue Binärdatei verwendet:
p=$(pgrep -o -f 'php-fpm: master'); sha256sum /proc/$p/exe /usr/sbin/php-fpm # hashes must match
Gleiches Design wie der Upstream-Commit 712e60f9ed
("Avoid state corruption via bailout", Branch PHP-7.4-CVE-2026-109618-109619):
_exit(1); PHP-FPM / Apache
starten einen frischen Worker. Dasselbe gilt für die Fehler "Possible integer overflow in memory
allocation".Content-Disposition und Content-Type und
ignoriert Duplikate, sodass ein kleiner Request PHP nicht mehr dazu bringen kann, riesige Mengen an Speicher zu allozieren.session.upload_progress ist deaktiviert (der bestätigte Auslöser für CVE-2026-109619).modules_activated, Exception-/Fehlerbehandlungszustand des Executors, Heads verketteter Listen), sodass
ein nachfolgender Request keinen freigegebenen Zustand beobachten kann.Details pro Datei und wie jeder Port umgesetzt wurde: docs/PROVENANCE.md. Testergebnisse: docs/TESTING.md.