
RHEL, CentOS 및 Oracle Linux 7 / 6의 수명 종료(EOL) PHP 5.4 / 5.3 패키지에 대한 CVE-2026-109618 / CVE-2026-109619 (php2shell) 비공식 수정
CVE-2026-109618 및 CVE-2026-109619("php2shell")에 대한 비공식 수정으로, Enterprise Linux 6 및 7의 수명 종료(EOL) PHP 패키지인 php-5.3.3(RHEL / CentOS / Oracle Linux 6) 및 php-5.4.16(RHEL / CentOS / Oracle Linux / Scientific Linux 7)을 대상으로 합니다.
PHP는 2026년 10월 21일 8.2.35, 8.3.36, 8.4.27 및 8.5.12에서 두 취약점을 모두 수정했으며, 7.4, 8.0 및 8.1에 대한 소스 백포트를 게시했습니다. PHP 5에 대해서는 아무것도 릴리스되지 않았고, EL6 / EL7 벤더들도 수정 사항을 배포하지 않았습니다. 이러한 시스템을 계속 운영해야 하는 경우, 이 프로젝트는 공식 최소 수정 사항을 포팅한 재빌드된 벤더 패키지를 제공합니다.
이것은 PHP, Red Hat 또는 Oracle의 공식 수정이 아닙니다. 지원되는 PHP 버전으로 이동할 수 있을 때까지 위험을 줄여줄 뿐이므로, 가능한 한 빨리 이동하십시오. EL8 / EL9 / EL10에서는 대신 벤더의 업데이트를 설치하십시오(예: ELSA/RHSA-2026:87080, 87151, 87079).
php-5.4.16 / php-5.3.3 릴리스 타르볼에는 적용되지 않는데, 이들은 동일한 코드에 대한 벤더의 이후 보안 수정(예: 멀티파트 헤더 파싱의 CVE-2015-4024)이 빠져 있기 때문입니다.| 배포판 | 벤더 패키지 | 이 프로젝트의 수정 패키지 |
|---|---|---|
| RHEL / CentOS / Oracle Linux / Scientific Linux 7 | php-5.4.16-48.el7 | php-5.4.16-48.el7.php2shell.1 |
| RHEL / CentOS / Oracle Linux 6 | php-5.3.3-50.el6_10 | php-5.3.3-50.el6_10.php2shell.1 |
릴리스 접미사는 벤더 패키지보다 상위로 정렬되며, 향후 벤더 에라타(예: 48.el7_9.1)보다는 하위로 정렬되므로, 공식 수정이 나온다면 일반 업데이트로 이 수정을 대체하게 됩니다.
아마도 PHP 7 및 8보다는 덜할 것이지만, 아직 확실한 답은 없습니다:
php 패키지가 CVE-2026-109619에 영향을 받지 않는다고("취약한 코드 없음") 평가하며, CVE-2026-109618은 조사 중으로 표시합니다
(CSAF VEX).이 프로젝트는 어쨌든 공식 완화책을 적용합니다: 알려진 도달 경로만이 아니라 안전하지 않은 오류 경로 자체를 제거합니다.
GitHub Pages의 서명된 yum 저장소에서:
# EL7
curl -o /etc/yum.repos.d/php2shell-eol-backport.repo \
https://alvm.github.io/php2shell-eol-backport/php2shell-eol-backport-el7.repo
# EL6
curl -o /etc/yum.repos.d/php2shell-eol-backport.repo \
https://alvm.github.io/php2shell-eol-backport/php2shell-eol-backport-el6.repo
yum update 'php*' # confirm the signing key: fingerprint under "Signing key" below
service httpd restart # and php-fpm, if you use it
저장소에는 이 프로젝트의 PHP 패키지만 포함되어 있으며, 패키지와 저장소 메타데이터 모두 서명되어 있습니다(gpgcheck=1, repo_gpgcheck=1). RPM과 소스 RPM은 서명된 SHA256SUMS와 함께 각 릴리스에 첨부되어 있으며, yum localinstall로 설치할 수 있습니다.
./tools/check-patched.sh
설치된 모든 PHP 5 패키지를 FIXED 또는 VULNERABLE로 나열하고, PHP CLI가 수정된 코드를 실행하는지 확인하며, httpd 또는 php-fpm이 업데이트 전에 시작되어 여전히 이전 코드를 실행 중인 경우 경고합니다.
이 수정은 공식 최소 백포트를 따르며, 이는 정상적인 오류 처리보다 안전성을 우선시합니다:
memory_limit을 초과하거나(또는 할당 크기가
오버플로우되면), PHP는 stderr(웹 서버 오류 로그)에 Fatal error: ...를 출력하고 프로세스가 즉시 종료됩니다.
Apache / php-fpm은 새 워커를 시작합니다. 종료 함수는 실행되지 않으며, 해당 요청에서 업로드된 임시 파일은
제거되지 않습니다 — tmpwatch(EL6)와 systemd-tmpfiles(EL7)가 시간이 지나면서 /tmp에서 정리합니다.Content-Disposition 및 Content-Type 헤더만 유지되며
(PHP가 사용하는 유일한 헤더), 새로운 php.ini 지시문 max_multipart_body_parts가 파트 수를
제한합니다 (기본값 -1 = max_input_vars + max_file_uploads).zend_mm_safe_error_ex)를 추가하고 기존 API나 ABI는 변경하지 않으므로,
벤더 패키지용으로 빌드된 확장이 계속 작동합니다.이는 공개된 공격 경로에 대한 최소한의 완화 조치이며, PHP 5의 완전한 보안 업데이트가 아닙니다.
벤더 소스 RPM에서 빌드되었습니다 (build/build.sh에 SHA-256 고정); 스펙 변경은 8줄입니다
(spec/*/php.spec.diff).
PHP 테스트 스위트(make test, RPM 빌드 중 실행)를 동일한 벤더 패키지의 수정되지 않은 재빌드와
비교했습니다. 새로 발생한 실패는 예상된 것들뿐입니다:
세션 업로드 진행률 테스트(기능 비활성화)와 tests/lang/bug45392.phpt(치명적 오류 메시지가 이제
공식 7.4 패치에서처럼 빈 줄로 시작함)입니다.
| 테스트 | 실패: 벤더 | 실패: 패치됨 | |
|---|---|---|---|
| EL7, PHP 5.4.16 | 12373 | 14 | 23 (업로드 진행률 8개 + bug45392) |
| EL6, PHP 5.3.3 | 11213 | 55 | 56 (bug45392) |
정확한 수치는 빌드 환경에 따라 약간씩 다릅니다: GitHub 러너에서는 두 개의 SPL 파일 소유자 테스트
(DirectoryIterator_getOwner/getGroup_basic)도 실패하며, time_sleep_until_basic은 타이밍에 민감합니다.
이들 중 어느 것도 패치로 변경된 코드를 건드리지 않습니다.
PHP 5.4 패치는 Amazon Linux 2의 php-5.4.16에 대한 동일한 수정의 독립적인 포팅과 비교되었습니다:
핵심 변경 사항은 동일합니다. 차이점은 docs/ALTERNATIVES.md에 나열되어 있습니다.
익스플로잇 코드는 작성되거나 사용되지 않았습니다. 업스트림 커밋과 대조하여 패치를 직접 검토하시기 바랍니다.
벤더 상태, 프로젝트 목록 및 비교는 docs/ALTERNATIVES.md를 참조하십시오.
Docker와 빌드당 약 3 GB의 여유 디스크 공간이 필요합니다.
build/build.sh el7 # results in _build/el7/RPMS
build/build.sh el6 # results in _build/el6/RPMS
스크립트는 벤더 소스 RPM을 다운로드하고, SHA-256을 검증한 뒤, 이 저장소의 spec 파일과 패치를 사용하여 고정된 Oracle Linux 컨테이너에서 재빌드합니다.
패키지와 릴리스 태그는 다음으로 서명됩니다:
pub rsa4096/80797C97A561BC94 2026-10-22 [SC] [expires: 2029-10-21]
2757 B60F D23D ED25 021B BE37 8079 7C97 A561 BC94
uid Oleksii Molchanov (php2shell-eol-backport signing key) <[email protected]>
키는 이 저장소(RPM-GPG-KEY-php2shell-eol-backport)와 keyserver.ubuntu.com에 있습니다.
patches/el7, patches/el6 the fix, as a patch against the vendor source tree
spec/el7, spec/el6 vendor spec files with the patch added, and their diffs
build/ reproducible container build
tools/check-patched.sh check an installed system
docs/ALTERNATIVES.md vendor status, other projects, comparison
SECURITY.md how to report a security problem
버그는 이슈로 등록해 주세요. 패치 자체의 보안 문제에 대해서는 SECURITY.md를 참고하세요.
LICENSE.PHP)을 따릅니다. 빌드 스크립트 및 도구: MIT(LICENSE). 스펙 파일은 Red Hat / Fedora 패키징(MIT)에서 파생되었습니다.