PHP2Shell — PHP 원격 코드 실행 취약점
2026년 10월 21일 공개 · CVE-2026-109618 / CVE-2026-109619
개요
2026년 10월 21일 PHP는 두 가지 심각한 원격 코드 실행(RCE) 취약점에 대한 긴급 보안 업데이트를 발표했습니다. PHP2Shell은 이 두 취약점을 통칭하는 이름입니다. 두 CVE 모두 CVSS v4.0 9.2점이며, 인증되지 않은 공격자가 조작한 HTTP 요청으로 PHP 내부의 메모리 처리 문제를 유발할 수 있습니다.
무엇이 문제인가?
문제는 개별 PHP 애플리케이션의 로그인 기능이나 입력 검증이 아니라 PHP 런타임의 요청 처리 단계에 있습니다. 따라서 애플리케이션 코드에 도달하기 전에도 위험한 상태가 발생할 수 있습니다. 메모리 손상은 프로세스 충돌, 정보 노출 또는 환경과 조건에 따라 웹 서버 작업자 권한의 원격 코드 실행으로 이어질 수 있습니다. 모든 요청이 RCE를 발생시키는 것은 아닙니다.
두 취약점의 차이
| CVE | 발생 원인 | 문제가 되는 상태 |
|---|---|---|
| CVE-2026-109618 | 요청 처리 중 메모리 부족(OOM)으로 정상 초기화가 중단됨 | 부분 초기화된 내부 데이터가 정리 단계에서 잘못 처리되어 메모리 손상 |
| CVE-2026-109619 | 이전 요청이 실패한 뒤에도 PHP 작업자 내부에 참조 상태가 남음 | 이후 요청이 이미 해제된 메모리를 참조하는 Use-After-Free |
공격 방식
- 외부에서 조작된 HTTP 요청을 PHP 웹 서비스에 보냅니다.
- 웹 서버가 PHP 런타임으로 요청을 전달하고 요청 파싱을 시작합니다.
- CVE-2026-109618은 메모리 할당 실패 이후 비정상 정리 경로에서, CVE-2026-109619는 이전 요청의 상태가 남아 있는 후속 요청에서 문제가 발생할 수 있습니다.
- 유효하지 않은 메모리 상태를 참조하면 메모리 손상으로 이어지고, 악용 조건에 따라 RCE가 가능해집니다.
시각화는 두 CVE를 선택해 흐름을 비교할 수 있습니다. 요청과 메모리 상태의 변화만 표현하며 실제 공격용 페이로드나 재현 명령은 포함하지 않습니다.
영향 범위
PHP 8.2.34 이하, 8.3.35 이하, 8.4.26 이하, 8.5.11 이하의 해당 계열과 지원 종료된 구형 PHP 버전은 영향을 받을 수 있습니다. PHP-FPM, Apache mod_php, php-cgi 등 웹 요청을 처리하는 PHP 배포 구성을 확인해야 합니다. 배포판이 보안 패치를 백포트한 경우 단순 버전 문자열이 아니라 공급자 보안 공지와 패키지 수정 이력도 확인합니다.
조치 방법
| PHP 계열 | 보안 수정 버전 |
|---|---|
| 8.2 | 8.2.35 이상 |
| 8.3 | 8.3.36 이상 |
| 8.4 | 8.4.27 이상 |
| 8.5 | 8.5.12 이상 |
- 인터넷에 노출된 PHP 서비스를 식별하고 웹 서버가 실제로 사용하는 PHP 런타임과 패키지 버전을 확인합니다.
- 해당 계열의 공식 보안 수정 버전 또는 공급자 보안 패치가 포함된 패키지로 업데이트합니다. 지원 종료 계열은 지원 버전으로 이전합니다.
- PHP-FPM, Apache 등 관련 프로세스를 재시작하고 실제 적용 버전을 재확인합니다.
- 요청·오류 로그와 PHP 프로세스의 비정상적인 자식 프로세스 실행, 메모리 오류를 점검합니다. 의심 정황이 있다면 침해 사고 대응 절차를 진행합니다.
WAF나 설정 변경만으로 완전히 해결할 수 없으며 PHP 자체의 보안 패치가 필요합니다.
핵심 단계
- 1
외부 요청 — 인증되지 않은 사용자가 PHP 서비스에 조작된 HTTP 요청을 보냅니다.
- 2
PHP 요청 처리 — 웹 서버가 요청을 PHP 런타임으로 전달하고 파싱을 시작합니다.
- 3
CVE-2026-109618 — OOM 상황에서 부분 초기화된 데이터가 잘못 정리되어 메모리 손상이 발생할 수 있습니다.
- 4
CVE-2026-109619 — 이전 요청에서 남은 내부 상태가 후속 요청의 해제된 메모리를 참조할 수 있습니다.
- 5
영향 — 조건에 따라 서비스 장애, 정보 노출 또는 PHP 작업자 권한의 원격 코드 실행이 가능해집니다.
- 6
대응 — 보안 패치를 적용하고 런타임 재시작·버전 확인·로그 점검을 수행합니다.