PHP 원격 코드 실행 취약점 CVE-2026-109618·CVE-2026-109619 (PHP2Shell)
웹 요청을 처리하는 모든 PHP 설치(PHP-FPM, mod_php, php-cgi 등)에 영향을 주는 치명적 취약점 2건입니다. 인증 없이 원격 코드 실행이 가능하고 실제 공격이 확인되어 CISA KEV에 등재되었습니다. PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35로 즉시 업데이트하세요.
- 공지 ID
- DD-ADV-2026-0003
- 유형
- 보안
- 심각도
- Critical
- 상태
- 조치 중
- 최초 발행
- 2026년 10월 30일
- 마지막 업데이트
- 2026년 10월 30일
- CVSS
- 9.2
- CVE
- CVE-2026-109618, CVE-2026-109619
- 영향 받는 제품
- PHP 웹 요청을 처리하는 8.5.12·8.4.27·8.3.36·8.2.35 미만, 8.1 이하(지원 종료)
- 해결된 버전
- PHP 8.5.12, PHP 8.4.27, PHP 8.3.36, PHP 8.2.35
요약 (Summary)
PHP 프로젝트는 2026년 10월 21일 PHP 엔진 자체의 치명적 취약점 2건을 수정한 보안 릴리스를 발표했습니다. 두 취약점 모두 인증되지 않은 원격 코드 실행으로 이어질 수 있으며, 웹 워커 계정의 권한으로 코드가 실행됩니다. 보안 업계에서는 PHP2Shell 이라고 부릅니다.
| CVE | 유형 | 원인 | CVSS v4.0 |
|---|---|---|---|
| CVE-2026-109618 | 메모리 부족(OOM) 손상을 통한 RCE | 메모리 부족 처리가 요청 내부 데이터를 일부만 초기화한 상태에서 PHP를 중단시키고, 요청 정리 단계가 이 잘못된 데이터를 유효한 것으로 다룸 | 9.2 |
| CVE-2026-109619 | 오래된 전역 상태(stale global state)를 통한 RCE | 요청이 소유한 내부 상태가 메모리 해제 후에도 남아, 같은 워커가 처리하는 다음 요청이 초기화 전에 이를 사용(use-after-free) | 9.2 |
- 공통 원인: 요청이 비정상적으로 끝날 때 PHP 메모리가 손상된 상태로 남을 수 있습니다. 취약한 코드는 PHP 5.4(2012년)부터 존재한 것으로 보도되었습니다.
- 악용 현황: 공식 공개 전에 세부 내용이 유출되었고, 패치 전부터 공격이 관측되었습니다. 허니팟에서 실제 원격 셸 획득이 보고되었으며, CISA는 두 취약점을 KEV 카탈로그에 추가했습니다(보도 기준 2026년 10월 26일). Linux 커널 권한 상승 취약점과 연계해 root 권한을 얻는 공격 사례도 보고되었습니다.
- 발견: Calif, OpenAI, Wiz 보안 연구자
Cloudera 고객: Cloudera는 자사 제품이 이 취약점의 영향을 받지 않는다고 발표했습니다. CCA-2026-1000을 참고하세요(패스워드 필요). 고객이 직접 운영하는 PHP 서비스는 아래 지침에 따라 조치해야 합니다.
영향 범위 (Impact)
PHP 공지에 따르면 웹 요청을 처리하는 모든 PHP 설치가 영향을 받습니다.
| 배포 방식 | 비고 |
|---|---|
| Apache + mod_php | 위험이 가장 높음. 인증되지 않은 요청이 애플리케이션 코드가 실행되기도 전에 공격을 일으키는 익스플로잇이 시연됨 |
| PHP-FPM | Nginx·Apache 등과 함께 쓰는 일반적 구성 |
| php-cgi | |
| FrankenPHP | |
| LiteSpeed |
애플리케이션 코드(WordPress, Laravel 등)와 무관하게 PHP 엔진 버전이 기준입니다. 웹 서버 앞단의 제품(어플라이언스 관리 화면 등)에 PHP가 내장된 경우도 해당 공급업체 공지를 확인하세요.
영향받는 버전 및 수정 버전 (Affected / Fixed Versions)
| 브랜치 | 수정 버전 | 비고 |
|---|---|---|
| PHP 8.5 | 8.5.12 | 8.6.0 RC4에도 수정 포함 |
| PHP 8.4 | 8.4.27 | |
| PHP 8.3 | 8.3.36 | |
| PHP 8.2 | 8.2.35 | |
| PHP 8.1 / 8.0 / 7.4 | 공식 릴리스 없음 | PHP 보안팀이 소스 빌드용 최소 백포트 브랜치 제공. 배포판·LTS 공급업체 패키지 확인 |
| PHP 7.3 이하 | 없음 | 지원 버전으로 이전 필요 |
Linux 배포판·LTS 공급업체는 패치를 사전에 받았으므로, 배포판 패키지를 쓰는 경우 해당 배포판의 보안 업데이트를 확인합니다. 배포판 패키지는 버전 번호가 그대로이고 수정만 백포트되는 경우가 많으니 패키지 릴리스 번호와 배포판 공지로 판단합니다.
권고 조치 (Action Required)
- 즉시 업데이트 — PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35 또는 공급업체 백포트 패키지를 적용합니다.
- 모든 워커 재시작 — PHP-FPM 풀, Apache(mod_php)를 재시작해 실행 중인 워커가 모두 새 바이너리를 쓰는지 확인합니다. 컨테이너는 패치된 베이스 이미지로 다시 빌드하고 재배포합니다.
- 실행 버전 확인 —
php -v만으로는 웹 SAPI 버전을 보장할 수 없습니다.phpinfo()또는php-fpm -v로 웹 요청을 처리하는 바이너리를 확인합니다. - 지원 종료 버전 이전 — PHP 8.1 이하는 공급업체 백포트가 없다면 지원 버전으로 이전합니다.
- 침해 여부 점검 — 공격이 이미 진행된 만큼, 패치 후에도 웹 워커 계정이 띄운 셸·다운로드 도구·리버스 셸, 쓰기 가능한 디렉터리의 웹셸, 비정상적인 외부 연결이 있었는지 확인합니다.
보완 통제 (Compensating Controls)
업데이트 전까지 노출을 줄이는 방법입니다. PHP 공지는 이 조치들로 설치가 안전해지지 않는다고 명시합니다. 패치가 유일한 근본 조치입니다.
CVE-2026-109618 (메모리 부족 손상)
memory_limit=-1로 설정합니다. 애플리케이션이 덮어쓰지 못하도록 FPM 풀 또는 Apache 설정의php_admin_value로 지정하고, 다른 풀·디렉터리·애플리케이션 설정이 유한한 값을 다시 적용하지 않는지 확인합니다. 기반 메모리 할당 실패는 여전히 취약한 경로에 도달할 수 있습니다.post_max_size를 낮게 설정합니다.
; 파일 업로드가 필요 없는 경우
post_max_size = 8M
; 파일 업로드가 필요한 경우 (upload_max_filesize는 이보다 작게)
post_max_size = 32M- 웹 서버·프록시에서 디코딩 후 요청 크기, 입력 필드 수, multipart 파트 수, 헤더 수, 중첩 깊이에 한도를 둡니다.
Content-Length가 없는 요청에도 적용되어야 합니다. - 가용성 경계로 컨테이너·cgroup 메모리 한도를 쓰되, 가능하면 해당 워커만 종료하는 정책을 씁니다.
RLIMIT_AS·RLIMIT_DATA는 쓰지 않습니다. 오히려 취약한 할당 실패를 일으킬 수 있습니다.
CVE-2026-109619 (오래된 전역 상태)
session.upload_progress.enabled=0으로 설정하고 모든 워커를 재시작합니다. 요청 파싱 전에 적용되는php.ini, FPM 풀, 서버 설정에 넣어야 하며ini_set()이나 FPM.user.ini로는 효과가 없습니다. 확인된 세션 경로만 막고 다른 변형은 막지 못합니다.
session.upload_progress.enabled=0- PHP 8.5에서는
fatal_error_backtraces=0으로 설정하고 모든 워커를 재시작합니다. 확인된 fatal 백트레이스 경로만 막습니다. - 초기화 전에 진단 메시지를 내는 잘못된·폐기된 요청별 설정을 제거합니다.
error_reporting,display_errors,@로 메시지를 숨기는 것은 도움이 되지 않습니다. - 공격자가 일으킬 수 있는 fatal 오류와 실행 시간 초과(콜백, 업로드·가져오기 처리, 정리 단계 포함)를 수정합니다.
공통
- WAF 공급업체(Cloudflare 등)가 알려진 공격 기법에 대한 룰을 배포했습니다. 임시 방어로 활용하되 패치를 대신할 수 없습니다.
- 관리 화면 등 외부에 노출할 필요가 없는 PHP 서비스는 인터넷 접근을 차단하고 신뢰된 IP로 제한합니다.
참고 자료 (References)
- PHP: Critical remote code execution vulnerabilities, update now (2026-10-21)
- PHP: Upcoming Critical PHP Security Release (2026-10-20)
- GitHub Security Advisory: GHSA-w8hw-w9fx-j79w (CVE-2026-109618)
- GitHub Security Advisory: GHSA-6wmf-4rv5-p3rp (CVE-2026-109619)
- NVD: CVE-2026-109618 · CVE-2026-109619
- BleepingComputer: PHP ships emergency patches for critical PHP2Shell flaws
- Palo Alto Networks Unit 42: PHP2Shell: CVE-2026-109618 and CVE-2026-109619
- The Hacker News: CISA confirms active exploitation of PHP2Shell flaws
변경 이력 (Change Log)
| 날짜 | 변경 사항 |
|---|---|
| 2026-10-30 | 최초 발행 |