
Parches no oficiales para PHP CVE-2026-109618 / CVE-2026-109619 (RCE, CVSS 9.2) en plataformas EOL: PHP 7.3 en CentOS/RHEL 7 (Remi), PHP 5.4 en Amazon Linux 2, PHP 5.3 en Amazon Linux 1
Backports no oficiales de la mitigación mínima del equipo de seguridad de PHP para las dos vulnerabilidades críticas de ejecución remota de código sin autenticación anunciadas el 2026-10-21:
| CVE | Aviso | Resumen |
|---|---|---|
| CVE-2026-109618 | GHSA-w8hw-w9fx-j79w | RCE mediante corrupción por agotamiento de memoria (CVSS 4.0: 9.2) |
| CVE-2026-109619 | GHSA-6wmf-4rv5-p3rp | RCE mediante estado global obsoleto (CVSS 4.0: 9.2) |
El upstream corrigió PHP 8.2.35, 8.3.36, 8.4.27 y 8.5.12, y publicó mitigaciones mínimas solo de código fuente para 7.4, 8.0 y 8.1. Nadie publica una corrección para las plataformas indicadas a continuación, por lo que este repositorio proporciona parches y scripts de compilación reproducibles para ellas.
Sin afiliación con el PHP Group, Remi Collet ni Amazon. Sin garantía. Lea las Limitaciones antes de desplegar.
php7.3 7.3.33-35 de Sury para Debian/Ubuntu contiene un port independiente a 7.3 del mismo commit upstream. El parche para EL7 incluido aquí modifica los mismos 17 archivos, y los cambios principales son idénticos línea por línea (detalles en docs/TESTING.md).tests/verify.sh informó PATCHED para cada una.| Su sistema | Origen del paquete PHP | Qué usar |
|---|---|---|
| CentOS 7 / RHEL 7 | Remi php73 (p. ej. 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 el PPA de Sury, PHP 7.3 / 7.4 / 8.0 / 8.1 | deb.sury.org | Nada de aquí. Actualice a Sury 7.3.33-35, 7.4.33-31, 8.0.30-25 o 8.1.34-9 (o posterior). Ya contienen la corrección (debian/patches/*-Avoid-state-corruption-via-bailout.patch), aunque sus changelogs no mencionan los CVE. |
php8.3 de la distro Ubuntu 24.04 | Archivo de Ubuntu | Actualice a 8.3.6-0ubuntu0.24.04.13 o posterior. |
| PHP 8.2 o superior de cualquier origen | — | Actualice a 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 o posterior. |
Requiere Docker en la máquina de compilación (cualquier SO). Las compilaciones se ejecutan íntegramente dentro de contenedores de la distribución de destino, por lo que los RPM resultantes se instalan con 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
Los paquetes resultantes tienen la versión <vendor version>.cvefix1 (por ejemplo
php-7.3.33-22.cvefix1.el7, php-5.4.16-46.amzn2.0.7.cvefix1), por lo que siempre se ordenan como más recientes que
el paquete del proveedor al que reemplazan.
Instale solo los paquetes que ya tiene y, a continuación, reinicie 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)
Los procesos PHP de larga duración (Swoole/Octane, workers de cola, demonios cron) también deben reiniciarse; de lo contrario, siguen ejecutando el binario antiguo.
rpm -q php-cli # must end in .cvefix1
tests/verify.sh # prints PATCHED / NOT PATCHED
tests/verify.sh ejecuta un proceso CLI con un límite de memoria de 16 MB y comprueba el comportamiento observable de la mitigación mínima: en caso de falta de memoria, el proceso sale con código 1 sin ejecutar las funciones de apagado (PHP sin parchear sale con 255 y las ejecuta).
Para confirmar que un PHP-FPM en ejecución usa el nuevo binario:
p=$(pgrep -o -f 'php-fpm: master'); sha256sum /proc/$p/exe /usr/sbin/php-fpm # hashes must match
Mismo diseño que el commit upstream 712e60f9ed
("Avoid state corruption via bailout", rama PHP-7.4-CVE-2026-109618-109619):
_exit(1); PHP-FPM / Apache
inician un worker nuevo. Lo mismo se aplica a los errores "Possible integer overflow in memory
allocation".Content-Disposition y Content-Type e
ignora los duplicados, de modo que una petición pequeña ya no puede hacer que PHP asigne cantidades enormes de memoria.session.upload_progress está deshabilitado (el productor confirmado de CVE-2026-109619).modules_activated, estado de manejo de excepciones/errores del ejecutor, cabezas de listas enlazadas), de modo que
una petición posterior no puede observar estado liberado.Detalles por archivo y cómo se realizó cada port: docs/PROVENANCE.md. Resultados de las pruebas: docs/TESTING.md.