
EOL 플랫폼에서 PHP CVE-2026-109618 / CVE-2026-109619(RCE, CVSS 9.2)에 대한 비공식 패치: CentOS/RHEL 7(Remi)의 PHP 7.3, Amazon Linux 2의 PHP 5.4, Amazon Linux 1의 PHP 5.3
2026-10-21에 발표된 두 가지 치명적인 비인증 원격 코드 실행 취약점에 대한 PHP 보안 팀의 최소 완화책을 비공식적으로 백포트한 것입니다:
| CVE | 권고문 | 요약 |
|---|---|---|
| CVE-2026-109618 | GHSA-w8hw-w9fx-j79w | 메모리 부족 손상으로 인한 RCE (CVSS 4.0: 9.2) |
| CVE-2026-109619 | GHSA-6wmf-4rv5-p3rp | 오래된 전역 상태로 인한 RCE (CVSS 4.0: 9.2) |
업스트림은 PHP 8.2.35, 8.3.36, 8.4.27, 8.5.12에서 수정했으며, 7.4, 8.0, 8.1에 대해서는 소스 전용 최소 완화책을 게시했습니다. 아래 플랫폼에 대한 수정은 아무도 게시하지 않았으므로, 이 저장소는 해당 플랫폼을 위한 패치와 재현 가능한 빌드 스크립트를 제공합니다.
PHP Group, Remi Collet, Amazon과 제휴 관계가 없습니다. 보증하지 않습니다. 배포 전에 제한 사항을 읽어 보십시오.
php7.3 7.3.33-35에는 동일한 업스트림 커밋을 7.3용으로 별도 포팅한 내용이 포함되어 있습니다. 여기 있는 EL7 패치는 동일한 17개 파일을 변경하며, 핵심 변경 사항은 줄 단위로 동일합니다(자세한 내용은 docs/TESTING.md 참조).tests/verify.sh는 각각에 대해 PATCHED를 보고했습니다.| 사용 중인 시스템 | PHP 패키지 소스 | 사용할 항목 |
|---|---|---|
| CentOS 7 / RHEL 7 | Remi php73 (예: 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 |
| Sury PPA를 사용하는 Ubuntu / Debian, PHP 7.3 / 7.4 / 8.0 / 8.1 | deb.sury.org | 여기서는 아무것도 필요 없습니다. Sury 7.3.33-35, 7.4.33-31, 8.0.30-25 또는 8.1.34-9(또는 이후 버전)로 업그레이드하십시오. 변경 로그에 CVE가 언급되어 있지 않더라도 이미 수정 사항(debian/patches/*-Avoid-state-corruption-via-bailout.patch)이 포함되어 있습니다. |
Ubuntu 24.04 배포판 php8.3 | Ubuntu 아카이브 | 8.3.6-0ubuntu0.24.04.13 또는 이후 버전으로 업그레이드하십시오. |
| 모든 소스의 PHP 8.2 이상 | — | 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 또는 이후 버전으로 업그레이드하십시오. |
빌드 머신에 Docker가 필요합니다(모든 OS). 빌드는 전적으로 대상 배포판의 컨테이너 내부에서 실행되므로, 생성된 RPM은 일반 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
생성된 패키지는 <vendor version>.cvefix1 형식으로 버전이 지정되므로(예:
php-7.3.33-22.cvefix1.el7, php-5.4.16-46.amzn2.0.7.cvefix1), 대체하는 벤더 패키지보다 항상 더 최신으로 정렬됩니다.
이미 설치된 패키지만 설치한 다음 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)
장시간 실행되는 PHP 프로세스(Swoole/Octane, 큐 워커, cron 데몬)도 재시작해야 합니다. 그렇지 않으면 이전 바이너리를 계속 실행하게 됩니다.
rpm -q php-cli # must end in .cvefix1
tests/verify.sh # prints PATCHED / NOT PATCHED
tests/verify.sh는 16 MB 메모리 제한으로 하나의 CLI 프로세스를 실행하고 최소 완화책의 관찰 가능한 동작을 확인합니다. 메모리 부족 시 프로세스는 종료 함수를 실행하지 않고 종료 코드 1로 종료됩니다(패치되지 않은 PHP는 255로 종료하고 종료 함수를 실행합니다).
실행 중인 PHP-FPM이 새 바이너리를 사용하는지 확인하려면:
p=$(pgrep -o -f 'php-fpm: master'); sha256sum /proc/$p/exe /usr/sbin/php-fpm # hashes must match
업스트림 커밋 712e60f9ed
("Avoid state corruption via bailout", 브랜치 PHP-7.4-CVE-2026-109618-109619)와 동일한 설계입니다:
_exit(1)로 프로세스를 종료합니다. PHP-FPM / Apache는
새 워커를 시작합니다. "Possible integer overflow in memory
allocation" 오류에도 동일하게 적용됩니다.Content-Disposition 및 Content-Type 파트 헤더만 유지하고
중복을 무시하므로, 작은 요청으로 PHP가 막대한 양의 메모리를 할당하게 만들 수 없습니다.session.upload_progress가 비활성화됩니다 (CVE-2026-109619의 확인된 생성 경로).modules_activated, 실행기 예외/오류 처리 상태, 연결 리스트 헤드). 따라서
다음 요청이 해제된 상태를 관찰할 수 없습니다.파일별 세부 사항과 각 포팅 방식: docs/PROVENANCE.md. 테스트 결과: docs/TESTING.md.
memory_limit을 소진한 요청은 해당 워커 프로세스를 종료합니다. mod_php의 경우
클라이언트는 HTTP 500 페이지 대신 끊어진 연결을 보게 됩니다.register_shutdown_function() 콜백이 실행되지 않습니다.session.upload_progress가 더 이상 진행 상황을 보고하지 않습니다.7.3.33-22 소스를 기반으로 합니다. 현재 Remi의 마지막 EL7
바이너리(7.3.33-14)를 실행 중이라면, -15부터 -22까지의 Remi 보안 백포트도
함께 받게 됩니다
(CVE-2024-4577, CVE-2024-8925/8926/8927, CVE-2024-8929, CVE-2024-11233/11234/11236,
CVE-2025-14178, CVE-2026-6735, CVE-2026-14355, CVE-2026-7260, CVE-2026-17543 등).amazonlinux:2018.03 이미지에서 만들어지며
openssl ≥ 1.0.2k (libcrypto.so.10(OPENSSL_1.0.2))가 필요합니다. 여전히 openssl 1.0.1k를
사용하는 호스트는 먼저 amzn-updates에서 openssl을 업그레이드해야 합니다.작성자가 2026-10-22에 프로덕션 환경에서 빌드하고 배포했습니다 (CentOS 7 / PHP-FPM 웹 서버, Amazon Linux 2 및 1 / mod_php). 이슈와 풀 리퀘스트는 환영하지만, 지원을 약속하지는 않습니다.
패치는 PHP 소스 코드를 수정하며 PHP License v3.01에 따라 배포됩니다. 빌드 스크립트와 문서는 MIT 라이선스입니다. LICENSE를 참조하십시오. "PHP"는 PHP Group의 상표이며, 이 프로젝트는 이의 승인을 받지 않았습니다.
소프트웨어는 "있는 그대로" 제공되며, 어떠한 종류의 보증도 없습니다. 비프로덕션
환경에서 테스트하고 롤백 경로(yum downgrade 또는 디스크 스냅샷)를 확보하십시오.