
Patch non ufficiali per PHP CVE-2026-109618 / CVE-2026-109619 (RCE, CVSS 9.2) su piattaforme EOL: PHP 7.3 su CentOS/RHEL 7 (Remi), PHP 5.4 su Amazon Linux 2, PHP 5.3 su Amazon Linux 1
Backport non ufficiali della mitigazione minima del team di sicurezza PHP per le due vulnerabilità critiche di esecuzione di codice remoto non autenticato annunciate il 2026-10-21:
| CVE | Advisory | Riepilogo |
|---|---|---|
| CVE-2026-109618 | GHSA-w8hw-w9fx-j79w | RCE tramite corruzione da esaurimento memoria (CVSS 4.0: 9.2) |
| CVE-2026-109619 | GHSA-6wmf-4rv5-p3rp | RCE tramite stato globale obsoleto (CVSS 4.0: 9.2) |
Upstream ha corretto PHP 8.2.35, 8.3.36, 8.4.27 e 8.5.12, e ha pubblicato mitigazioni minime solo sorgente per 7.4, 8.0 e 8.1. Nessuno pubblica una correzione per le piattaforme elencate di seguito, quindi questo repository fornisce patch e script di build riproducibili per esse.
Non affiliato con il PHP Group, Remi Collet o Amazon. Nessuna garanzia. Leggere Limitazioni prima della distribuzione.
php7.3 7.3.33-35 di Sury contiene un port separato per 7.3
dello stesso commit upstream. La patch per EL7 qui presente modifica gli stessi 17 file, e le modifiche
principali sono identiche riga per riga (dettagli in docs/TESTING.md).tests/verify.sh ha riportato PATCHED per ciascuna.| Il tuo sistema | Origine del pacchetto PHP | Cosa usare |
|---|---|---|
| CentOS 7 / RHEL 7 | Remi php73 (es. 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 con il PPA Sury, PHP 7.3 / 7.4 / 8.0 / 8.1 | deb.sury.org | Nulla da qui. Aggiornare a Sury 7.3.33-35, 7.4.33-31, 8.0.30-25 o 8.1.34-9 (o successivi). Contengono già la correzione (debian/patches/*-Avoid-state-corruption-via-bailout.patch), anche se i loro changelog non menzionano le CVE. |
php8.3 della distro Ubuntu 24.04 | Archivio Ubuntu | Aggiornare a 8.3.6-0ubuntu0.24.04.13 o successivo. |
| PHP 8.2 o successivo da qualsiasi fonte | — | Aggiornare a 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 o successivo. |
Richiede Docker sulla macchina di build (qualsiasi OS). Le build vengono eseguite interamente all'interno di container della
distribuzione di destinazione, quindi gli RPM risultanti si installano con un semplice yum localinstall.
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
I pacchetti risultanti sono versionati come <vendor version>.cvefix1 (ad esempio
php-7.3.33-22.cvefix1.el7, php-5.4.16-46.amzn2.0.7.cvefix1), così risultano sempre più recenti
del pacchetto del fornitore che sostituiscono.
Installa solo i pacchetti che hai già, poi riavvia PHP:
# 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)
I processi PHP di lunga durata (Swoole/Octane, queue worker, daemon cron) devono anch'essi essere riavviati; altrimenti continuano a eseguire il vecchio binario.
rpm -q php-cli # must end in .cvefix1
tests/verify.sh # prints PATCHED / NOT PATCHED
tests/verify.sh esegue un processo CLI con un limite di memoria di 16 MB e verifica il comportamento osservabile della mitigazione minima: in caso di esaurimento della memoria il processo termina con codice 1 senza eseguire le funzioni di shutdown (PHP non patchato termina con 255 e le esegue).
Per confermare che un PHP-FPM in esecuzione utilizzi il nuovo binario:
p=$(pgrep -o -f 'php-fpm: master'); sha256sum /proc/$p/exe /usr/sbin/php-fpm # hashes must match
Stesso design del commit upstream 712e60f9ed
("Avoid state corruption via bailout", branch PHP-7.4-CVE-2026-109618-109619):
_exit(1); PHP-FPM / Apache
avviano un nuovo worker. Lo stesso vale per gli errori "Possible integer overflow in memory
allocation".Content-Disposition e Content-Type e
ignora i duplicati, così una piccola richiesta non può più far allocare a PHP enormi quantità di memoria.session.upload_progress è disabilitato (il produttore confermato per CVE-2026-109619).modules_activated, stato di gestione eccezioni/errori dell'executor, teste delle liste
concatenate), così una richiesta successiva non può osservare stato liberato.Dettagli per file e come è stato realizzato ciascun port: docs/PROVENANCE.md. Risultati dei test: docs/TESTING.md.