PHP OOM 처리 미흡에 따른 원격 코드 실행(RCE) 취약점 보안 권고 (CVE-2026-109618)
실무자 핵심 요약 (Executive Summary)
SECOPS ASSESSMENTPHP 엔진을 기반으로 구동되는 모든 웹 애플리케이션 및 서버 환경
인증되지 않은 원격 공격자가 메모리 고갈(OOM) 상황을 유도하여 시스템 권한으로 임의 코드를 실행(RCE) 가능
PHP 공식 보안 패치를 즉시 적용하고, php.ini 설정을 통해 비정상적인 메모리 할당 시도를 제한
영향받는 제품 및 버전 범위
권장 패치 및 임시 완화(Workaround) 가이드
PATCH & WORKAROUND- 최신 보안 패치 적용: 각 OS 배포판(Ubuntu, CentOS 등) 또는 PHP 공식 소스를 통해 최신 버전으로 업데이트하십시오.
# Ubuntu/Debian 예시
sudo apt-get update && sudo apt-get install --only-upgrade php8.x- 메모리 제한 설정 (php.ini): 단일 요청이 과도한 메모리를 점유하지 않도록
memory_limit을 적절한 수준으로 제한하십시오.
; php.ini
memory_limit = 128M (또는 서비스 요구사항에 맞는 최소값)- WAF(웹 방화벽) 규칙 강화: 비정상적으로 큰 POST 데이터나 다중 멀티파트 요청을 차단하는 규칙을 적용하십시오.
코드 수정 전에도 가상 패치(Virtual Patching)로 웹 공격을 즉시 차단하세요
서버 재시작이나 긴급 패치가 어려운 운영 환경이라면 클라우드 WAF 관리형 룰셋을 활성화하여 SQLi, RCE, XSS 익스플로잇 페이로드를 엣지에서 1분 만에 차단할 수 있습니다.
취약점 발생 원리 및 공격 메커니즘
본 취약점은 PHP 엔진이 메모리 부족(Out-of-Memory, OOM) 상황을 처리하기 위해 longjmp() 함수를 사용하는 과정에서 발생합니다. PHP는 요청 처리 중 메모리 할당에 실패하면 현재 컨텍스트를 즉시 중단하고 종료 루틴으로 점프합니다. 그러나 특정 코드 경로에서 메모리가 초기화되기 전에 할당 시도가 이루어지고, 이 시점에서 OOM이 발생하면 이후의 '요청 정리(Request Cleanup)' 절차가 초기화되지 않은 메모리 영역을 참조하거나 해당 데이터를 기반으로 분기(Branch)를 수행하게 됩니다. 공격자는 정교하게 구성된 페이로드를 통해 의도적으로 OOM 상황을 반복적으로 유도함으로써 메모리 구조를 조작하고, 최종적으로 원격 코드 실행(RCE)을 달성할 수 있습니다. CISA KEV에 등재된 만큼 실제 공격에 악용될 가능성이 매우 높습니다.
공식 보안 권고문 및 참조 링크
PHP uses longjmp() for out-of-memory (OOM) errors to exit the current context and abort handling of the request. Some contexts may not properly account for this scenario and leave request memory in an uninitialized state before performing an allocation. The subsequent request cleanup procedure may read or branch on this memory. Multiple OOM strategies can consistently trigger this condition and lead to remote code execution (RCE).
일간 취약점 브리핑 및 긴급 Zero-Day 경보 구독
보안 실무자와 인프라·백엔드 엔지니어를 위해 매일 아침 주요 취약점과 패치 우선순위를 요약해 발송합니다.