2026년 10월, PHP 코어에서 비인증 원격 코드 실행으로 이어지는 치명적 취약점 2건이 공개되었다. 두 건은 유출된 익스플로잇 도구의 이름을 따 “PHP2Shell”로 불리며, 각각 CVSS v4.0 9.2(Critical)로 평가되었다. 공격자는 인증 없이 PHP 워커 권한으로 임의 코드를 실행할 수 있어 서버 장악이 가능하다.
두 취약점은 이름이 비슷하나 원인이 서로 다르다. CVE-2026-109618은 메모리 부족(OOM) 처리 중 손상에서 비롯되며, CVE-2026-109619는 요청 간에 남은 전역 상태(stale state)를 재사용하는 Use-After-Free이다. 공식 패치는 2026년 10월 21일 공개되었으며, 설정 기반 완화책은 불완전하므로 패치 적용이 유일한 완전한 조치이다.
| 항목 | CVE-2026-109618 | CVE-2026-109619 |
|---|---|---|
| 공개일 | 2026-10-21 | 2026-10-21 |
| 제목 | RCE via OOM corruption | RCE via stale global state |
| CVSS v4.0 | 9.2 (Critical) | 9.2 (Critical) |
| 유형(CWE) | CWE-416, CWE-755, CWE-824, CWE-1325, CWE-1419 | CWE-416(주), CWE-755, CWE-824, CWE-1325, CWE-1419 |
| 설명 | OOM 발생 시 longjmp()로 컨텍스트를 탈출하는데, 요청 메모리가 완전히 초기화되기 전 할당이 실패하면 종료 단계가 무효한 상태를 처리하여 RCE로 이어진다. | 워커가 유지하는 전역 상태가 해제될 요청 메모리를 가리키고, 다음 요청이 초기화 전에 이를 사용하여 UAF가 발생한다. 힙 조작 시 RCE로 이어진다. |
| 주요 트리거 | multipart 파싱을 악용한 OOM 유도 | 생산자 요청(fatal error/OOM/timeout) + 소비자 요청의 2회 요청 |
| 확인된 경로 | mod_php에서 RCE 검증, FPM은 OOM 발생 가능(완전 익스플로잇 미시연) | session.upload_progress(기본 활성화), PHP 8.5 fatal_error_backtraces |
| 영향 버전 | 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 미만 | 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 미만 |
| 수정 버전 | 8.2.35, 8.3.36, 8.4.27, 8.5.12 | 8.2.35, 8.3.36, 8.4.27, 8.5.12 |
| 인증 필요 | 불필요(비인증 원격) | 불필요(비인증 원격) |
| 악용 사례 | 2026-10-21 기준 실제 악용 미탐, CISA KEV 미등재. PoC 유포 중 | 동일 |
참고로 공개 보고에서는 PHP 5 이후 전 버전이 영향받을 수 있다고 언급된다. EoL 버전(5.x, 7.x, 8.0, 8.1)은 공식 패치가 제공되지 않을 수 있으므로 상위 지원 버전으로의 업그레이드가 필요하다.
| 날짜 | 이벤트 |
|---|---|
| 📍 2026-10-20 | PHP 코어팀 사전 공지, 긴급 패치 예고. CERT-EU Security Advisory 2026-018 발행 |
| 📍 2026-10-20 ~ 21 | 엠바고 정보 유출, 익스플로잇 도구(PHP2Shell) 스크린샷 및 PoC 유포 |
| 📍 2026-10-21 14:00 UTC | 공식 패치 릴리스(8.2.35 / 8.3.36 / 8.4.27 / 8.5.12), 공식 어드바이저리 2건 공개 |
| 📍 2026-10-21 | 실제 공격(in-the-wild) 미탐, 다만 PoC 공개로 무기화 임박 평가 |
실제 악용은 요청 구조와 워커 상태의 이상으로 드러나므로, 네트워크와 호스트 양쪽을 함께 본다.
a[b][c][d]...), 신뢰할 수 없는 대용량 본문PHP_SESSION_UPLOAD_PROGRESS 필드 포함 요청.php 파일, /tmp 세션 파일의 비정상 크기, 웹 서버 로그의 반복 multipart POST탐지 시그니처는 필드명 매칭(파싱된 파라미터 이름 기준)과 비정상 multipart 구조 매칭을 함께 적용하는 것이 효과적이다. 다만 검사 바이트 한도 밖으로 악성 파트를 밀어내는 우회가 가능하므로, 본문 크기와 파트 개수 자체도 이상 지표로 모니터링한다.
가장 확실한 조치는 패치 적용이다. 공식 어드바이저리는 설정 기반 완화가 불완전하다고 명시하며, 패치만이 완전한 조치라고 밝힌다.