
Correctifs non officiels pour PHP CVE-2026-109618 / CVE-2026-109619 (RCE, CVSS 9.2) sur les plateformes en fin de vie : PHP 7.3 sur CentOS/RHEL 7 (Remi), PHP 5.4 sur Amazon Linux 2, PHP 5.3 sur Amazon Linux 1
Rétroportages non officiels de la minimisation de l'équipe sécurité de PHP pour les deux vulnérabilités critiques d'exécution de code à distance non authentifiée annoncées le 2026-10-21 :
| CVE | Avis | Résumé |
|---|---|---|
| CVE-2026-109618 | GHSA-w8hw-w9fx-j79w | RCE via corruption par épuisement de mémoire (CVSS 4.0 : 9.2) |
| CVE-2026-109619 | GHSA-6wmf-4rv5-p3rp | RCE via état global obsolète (CVSS 4.0 : 9.2) |
L'amont a corrigé PHP 8.2.35, 8.3.36, 8.4.27 et 8.5.12, et publié des minimisations source uniquement pour 7.4, 8.0 et 8.1. Personne ne publie de correctif pour les plateformes ci-dessous, ce dépôt fournit donc des correctifs et des scripts de compilation reproductibles pour celles-ci.
Non affilié au PHP Group, à Remi Collet ni à Amazon. Aucune garantie. Lisez les Limitations avant de déployer.
php7.3 7.3.33-35 de Sury contient un portage 7.3 distinct du même commit amont. Le correctif EL7 présent ici modifie les mêmes 17 fichiers, et les changements principaux sont identiques ligne pour ligne (détails dans docs/TESTING.md).tests/verify.sh a rapporté PATCHED pour chacune.| Votre système | Source du paquet PHP | Quoi utiliser |
|---|---|---|
| CentOS 7 / RHEL 7 | Remi php73 (par ex. 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 avec le PPA Sury, PHP 7.3 / 7.4 / 8.0 / 8.1 | deb.sury.org | Rien d'ici. Mettez à niveau vers Sury 7.3.33-35, 7.4.33-31, 8.0.30-25 ou 8.1.34-9 (ou ultérieur). Ils contiennent déjà le correctif (debian/patches/*-Avoid-state-corruption-via-bailout.patch), même si leurs changelogs ne mentionnent pas les CVE. |
Ubuntu 24.04 distro php8.3 | Archive Ubuntu | Mettez à niveau vers 8.3.6-0ubuntu0.24.04.13 ou ultérieur. |
| PHP 8.2 ou plus récent depuis n'importe quelle source | — | Mettez à niveau vers 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 ou ultérieur. |
Nécessite Docker sur la machine de compilation (tout OS). Les compilations s'exécutent entièrement dans des conteneurs de la distribution cible, de sorte que les RPM produits s'installent avec un simple 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
Les paquets résultants sont versionnés <vendor version>.cvefix1 (par exemple
php-7.3.33-22.cvefix1.el7, php-5.4.16-46.amzn2.0.7.cvefix1), de sorte qu'ils se trient toujours comme plus récents que
le paquet du fournisseur qu'ils remplacent.
Installez uniquement les paquets que vous possédez déjà, puis redémarrez 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)
Les processus PHP de longue durée (Swoole/Octane, workers de file d'attente, démons cron) doivent également être redémarrés ; sinon ils continuent d'exécuter l'ancien binaire.
rpm -q php-cli # must end in .cvefix1
tests/verify.sh # prints PATCHED / NOT PATCHED
tests/verify.sh exécute un processus CLI avec une limite de mémoire de 16 Mo et vérifie le comportement observable de l'atténuation minimale : en cas de dépassement de mémoire, le processus se termine avec le code 1 sans exécuter les fonctions d'arrêt (un PHP non corrigé se termine avec le code 255 et les exécute).
Pour confirmer qu'un PHP-FPM en cours d'exécution utilise le nouveau binaire :
p=$(pgrep -o -f 'php-fpm: master'); sha256sum /proc/$p/exe /usr/sbin/php-fpm # hashes must match
Même conception que le commit amont 712e60f9ed
(« Avoid state corruption via bailout », branche PHP-7.4-CVE-2026-109618-109619) :
_exit(1) ; PHP-FPM / Apache
démarrent un nouveau worker. Il en va de même pour les erreurs « Possible integer overflow in memory
allocation ».Content-Disposition et Content-Type et
ignore les doublons, de sorte qu'une petite requête ne peut plus amener PHP à allouer d'énormes quantités de mémoire.session.upload_progress est désactivé (le producteur confirmé pour CVE-2026-109619).modules_activated, état de gestion des exceptions/erreurs de l'exécuteur, têtes de listes chaînées), afin
qu'une requête suivante ne puisse pas observer un état libéré.Détails par fichier et méthode de portage de chaque correctif : docs/PROVENANCE.md. Résultats des tests : docs/TESTING.md.