
Patches não oficiais para PHP CVE-2026-109618 / CVE-2026-109619 (RCE, CVSS 9.2) em plataformas EOL: PHP 7.3 no CentOS/RHEL 7 (Remi), PHP 5.4 no Amazon Linux 2, PHP 5.3 no Amazon Linux 1
Backports não oficiais da mitigação mínima da equipe de segurança do PHP para as duas vulnerabilidades críticas de execução remota de código não autenticada anunciadas em 2026-10-21:
| CVE | Aviso | Resumo |
|---|---|---|
| CVE-2026-109618 | GHSA-w8hw-w9fx-j79w | RCE via corrupção por falta de memória (CVSS 4.0: 9.2) |
| CVE-2026-109619 | GHSA-6wmf-4rv5-p3rp | RCE via estado global obsoleto (CVSS 4.0: 9.2) |
O upstream corrigiu o PHP 8.2.35, 8.3.36, 8.4.27 e 8.5.12, e publicou mitigações mínimas apenas de código-fonte para 7.4, 8.0 e 8.1. Ninguém publica uma correção para as plataformas abaixo, portanto este repositório fornece patches e scripts de compilação reproduzíveis para elas.
Sem vínculo com o PHP Group, Remi Collet ou Amazon. Sem garantias. Leia Limitações antes de implantar.
php7.3 7.3.33-35 do Sury para Debian/Ubuntu contém um port separado para 7.3 do mesmo commit upstream. O patch para EL7 aqui altera os mesmos 17 arquivos, e as mudanças centrais são idênticas linha a linha (detalhes em docs/TESTING.md).tests/verify.sh reportou PATCHED para cada uma.| Seu sistema | Origem do pacote PHP | O que usar |
|---|---|---|
| CentOS 7 / RHEL 7 | Remi php73 (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 com o PPA Sury, PHP 7.3 / 7.4 / 8.0 / 8.1 | deb.sury.org | Nada daqui. Atualize para Sury 7.3.33-35, 7.4.33-31, 8.0.30-25 ou 8.1.34-9 (ou posterior). Eles já contêm a correção (debian/patches/*-Avoid-state-corruption-via-bailout.patch), embora seus changelogs não mencionem as CVEs. |
Ubuntu 24.04 distro php8.3 | Repositório do Ubuntu | Atualize para 8.3.6-0ubuntu0.24.04.13 ou posterior. |
| PHP 8.2 ou mais recente de qualquer origem | — | Atualize para 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 ou posterior. |
Requer Docker na máquina de compilação (qualquer SO). As compilações são executadas inteiramente dentro de contêineres da distribuição de destino, de modo que os RPMs resultantes são instalados com um simples 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
Os pacotes resultantes são versionados como <vendor version>.cvefix1 (por exemplo
php-7.3.33-22.cvefix1.el7, php-5.4.16-46.amzn2.0.7.cvefix1), de modo que sempre são ordenados como mais recentes do que
o pacote do fornecedor que substituem.
Instale apenas os pacotes que você já possui e, em seguida, reinicie o 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)
Processos PHP de longa duração (Swoole/Octane, workers de fila, daemons cron) também devem ser reiniciados; caso contrário, eles continuam executando o binário antigo.
rpm -q php-cli # must end in .cvefix1
tests/verify.sh # prints PATCHED / NOT PATCHED
tests/verify.sh executa um processo CLI com um limite de memória de 16 MB e verifica o comportamento observável da mitigação mínima: em caso de falta de memória, o processo termina com o código 1 sem executar as funções de shutdown (o PHP não corrigido termina com 255 e executa-as).
Para confirmar que um PHP-FPM em execução utiliza o novo binário:
p=$(pgrep -o -f 'php-fpm: master'); sha256sum /proc/$p/exe /usr/sbin/php-fpm # hashes must match
Mesmo design do commit upstream 712e60f9ed
("Avoid state corruption via bailout", branch PHP-7.4-CVE-2026-109618-109619):
_exit(1); PHP-FPM / Apache
iniciam um novo worker. O mesmo se aplica aos erros "Possible integer overflow in memory
allocation".Content-Disposition e Content-Type e
ignora duplicatas, de modo que uma requisição pequena não pode mais fazer o PHP alocar enormes quantidades de memória.session.upload_progress está desabilitado (o produtor confirmado para CVE-2026-109619).modules_activated, estado de exceção/tratamento de erros do executor, cabeças de listas encadeadas), para que
uma requisição seguinte não possa observar estado liberado.Detalhes por arquivo e como cada port foi feito: docs/PROVENANCE.md. Resultados dos testes: docs/TESTING.md.