PHP-CGI 원격 코드 실행(RCE) 취약점 긴급 보안 권고 (CVE-2024-4577)
실무자 핵심 요약 (Executive Summary)
SECOPS ASSESSMENTWindows 환경에서 Apache 및 PHP-CGI 모드를 사용하며 특정 코드페이지(한국어 CP949, 중국어 CP950, 일본어 CP932 등)가 적용된 PHP 8.1.x (8.1.29 미만), 8.2.x (8.2.20 미만), 8.3.x (8.3.8 미만) 버전
공격자가 특수하게 조작된 HTTP 요청을 전송하여 PHP-CGI 실행 바이너리에 임의의 명령줄 옵션을 주입하고, 이를 통해 대상 서버에서 원격 코드 실행(RCE) 및 소스 코드 유출을 유발할 수 있음
PHP 공식 최신 패치 버전(8.1.29, 8.2.20, 8.3.8 이상)으로 즉시 업그레이드하거나, Apache 설정 파일에서 PHP-CGI 실행 규칙을 비활성화 및 차단 조치 적용
영향받는 제품 및 버전 범위
권장 패치 및 임시 완화(Workaround) 가이드
패치 및 우회 명령어1. 공식 보안 패치 및 버전 업그레이드 명령어
가장 확실한 해결책은 취약점이 해결된 공식 최신 버전으로 PHP를 업그레이드하는 것입니다. Windows 환경에서 패키지 관리자(Chocolatey)를 사용하는 경우 아래 명령어를 통해 신속히 업데이트를 수행할 수 있습니다.
# Chocolatey를 이용한 PHP 패키지 업데이트
choco upgrade php --yes
# 설치된 PHP 버전이 취약하지 않은 버전인지 확인
php -v2. 패치 전 임시 완화(Workaround) 및 접근 제어 설정
즉각적인 패치가 어려운 경우, Apache 설정 파일(httpd.conf 또는 .htaccess)에 Rewrite 규칙을 추가하여 취약한 문자 패턴을 포함한 요청을 사전에 차단해야 합니다.
# Apache 설정 파일(httpd.conf)에 아래 규칙을 추가하여 파라미터 주입 공격 차단
<IfModule mod_rewrite.c>
RewriteEngine On
# Windows Best-Fit 매핑에 악용되는 하이픈 유사 문자 패턴 차단
RewriteCond %{QUERY_STRING} ^(%2d|%ad) [NC]
RewriteRule .? - [F,L]
</IfModule>3. 침해 흔적(IoC) 및 로그·버전 점검 스크립트
웹 서버의 액세스 로그에서 취약점 공격 시도 흔적을 탐지하고 현재 시스템의 취약 여부를 점검하는 PowerShell 스크립트입니다.
# Apache 액세스 로그에서 PHP-CGI 공격 패턴(%ad 또는 %2d) 검색
$LogPath = 'C:\xampp\apache\logs\access.log'
if (Test-Path $LogPath) {
Select-String -Path $LogPath -Pattern 'cgi-bin' | Select-String -Pattern '%ad|%2d'
}
# 현재 실행 중인 PHP 버전 및 CGI 모드 사용 여부 점검
$phpVersion = php -v
Write-Host 'Current PHP Version: ' $phpVersion코드 수정 전에도 가상 패치(Virtual Patching)로 웹 공격을 즉시 차단하세요
서버 재시작이나 긴급 패치가 어려운 운영 환경이라면 클라우드 WAF 관리형 룰셋을 활성화하여 SQLi, RCE, XSS 익스플로잇 페이로드를 엣지에서 1분 만에 차단할 수 있습니다.
취약점 발생 원리 및 공격 메커니즘
1. 취약점 개요 및 발생 원인 (Root Cause)
본 취약점은 Windows 운영체제의 문자 인코딩 변환 메커니즘인 'Best-Fit' 매핑 동작과 PHP-CGI의 명령줄 인자 처리 방식 간의 상호작용에서 발생합니다. Windows API는 유니코드 문자를 특정 ANSI 코드페이지로 변환할 때, 대응하는 정확한 문자가 없으면 가장 유사하게 생긴 대체 문자(Best-Fit)로 자동 변환합니다. 예를 들어, 소프트 하이픈(Soft Hyphen, 0xAD) 또는 전각 하이픈 문자가 명령줄 인자 전달 과정에서 일반 하이픈('-', 0x2D) 문자로 변환됩니다. PHP-CGI는 웹 요청의 쿼리 스트링을 명령줄 인자로 변환하여 실행하는데, 이 과정에서 입력값 검증 필터를 우회한 하이픈 문자가 PHP 바이너리의 실행 옵션으로 해석되는 인자 주입(Argument Injection)이 발생합니다.
2. 공격 메커니즘 및 익스플로잇 시나리오
공격자는 HTTP GET 또는 POST 요청의 쿼리 스트링에 'Best-Fit' 매핑을 유발하는 특수 문자(예: '%ad')를 포함하여 전송합니다. Apache 웹 서버가 이 요청을 처리하고 PHP-CGI 바이너리를 호출할 때, Windows Win32 API 함수 내부에서 '%ad'가 '-' 문자로 변환됩니다. 이로 인해 공격자는 PHP 실행 엔진에 직접 명령줄 옵션을 주입할 수 있게 됩니다. 대표적인 익스플로잇 시나리오에서는 '-d' 옵션을 주입하여 PHP 설정(ini) 지시어인 'allow_url_include=1' 및 'auto_prepend_file=php://input'을 활성화합니다. 이후 HTTP 요청 본문(Body)에 임의의 PHP 코드를 실어 전송함으로써 대상 서버에서 즉각적인 원격 코드 실행(RCE)을 달성합니다.
3. 비즈니스 및 인프라 파급 영향
본 취약점은 CVSS 9.8의 치명적(Critical) 등급으로 평가되었으며, CISA KEV(Known Exploited Vulnerabilities) 목록에 등재되어 실제 야생(In-the-Wild)에서 활발히 악용되고 있음이 확인되었습니다. 공격자는 인증 없이 원격에서 시스템 권한을 획득할 수 있으며, 웹 서버의 제어권을 완전히 탈취하여 내부망 침투, 랜섬웨어 유포, 데이터베이스 기밀 정보 탈취, 웹페이지 변조 등 기업 인프라 전반에 걸쳐 치명적인 비즈니스 중단 및 자산 손실을 초래할 수 있습니다.
공식 보안 권고문 및 참조 링크
In PHP versions 8.1.* before 8.1.29, 8.2.* before 8.2.20, 8.3.* before 8.3.8, when using Apache and PHP-CGI on Windows, if the system is set up to use certain code pages, Windows may use "Best-Fit" behavior to replace characters in command line given to Win32 API functions. PHP CGI module may misinterpret those characters as PHP options, which may allow a malicious user to pass options to PHP binary being run, and thus reveal the source code of scripts, run arbitrary PHP code on the server, etc.
자주 묻는 실무 질문 (FAQ — CVE-2024-4577)
FAQQ1. CVE-2024-4577 취약점의 위험도와 실제 악용 가능성은 어느 정도입니까?
CVE-2024-4577의 기본 점수는 CVSS 9.8 (CRITICAL)이며, 향후 30일 내 실제 악용 확률을 나타내는 EPSS 점수는 100.0%입니다. 현재 미국 CISA KEV(실제 악용이 확인된 취약점 카탈로그)에 등재되어 있으므로 최우선 긴급 패치가 필요합니다.
Q2. CVE-2024-4577에 영향을 받는 벤더와 제품은 무엇입니까?
주요 영향 벤더는 php, apache이며, 대상 컴포넌트는 php입니다. 상세 영향 범위: Windows OS 환경에서 구동되는 PHP 8.1.x (8.1.29 미만), 8.2.x (8.2.20 미만), 8.3.x (8.3.8 미만) 버전. (XAMPP 기본 설치 환경 및 Apache Action 지시어를 통해 PHP-CGI를 연동한 환경이 주요 공격 대상임)
Q3. 서버 재기동이나 정규 패치 전 즉시 적용할 수 있는 완화 조치(Workaround)는 무엇입니까?
[권장 조치] PHP 공식 최신 패치 버전(8.1.29, 8.2.20, 8.3.8 이상)으로 즉시 업그레이드하거나, Apache 설정 파일에서 PHP-CGI 실행 규칙을 비활성화 및 차단 조치 적용 본문의 패치 및 우회 명령어 섹션과 자가 점검 체크리스트를 참고하여 외부 노출 포트를 차단하거나 WAF 탐지 규칙을 선적용하십시오.
CVE-2024-4577 사내 보안 패치 공지문 · CISO 경영진 보고서 초안 자동 생성
클릭 한 번으로 사내 이메일·노션·결재 문서에 바로 붙여넣을 수 있는 공식 보고서 양식을 생성합니다.
🔗 함께 점검해야 할 동일 벤더·스택 연관 취약점 (php)
동일 카테고리 전체 보기 →Apache ActiveMQ Jolokia JMX-HTTP 브릿지 원격 코드 실행(RCE) 취약점 보안 권고 (CVE-2026-34197)
[영향 대상] Apache ActiveMQ Classic 5.19.4 미만 버전 및 6.0.0 이상 6.2.3 미만 버전
Apache Tomcat EncryptInterceptor 우회 및 민감 정보 평문 노출 취약점 (CVE-2026-34486)
[영향 대상] Apache Tomcat 11.0.20, 10.1.53, 9.0.116 버전에서 클러스터링(Clustering) 및 EncryptInterceptor를 사용하는 환경
PHP OOM 처리 미흡에 따른 원격 코드 실행(RCE) 취약점 보안 권고 (CVE-2026-109618)
[영향 대상] PHP 엔진을 기반으로 구동되는 모든 웹 애플리케이션 및 서버 환경
PHP 전역 상태 관리 결함에 따른 원격 코드 실행(RCE) 취약점 보안 권고 (CVE-2026-109619)
[영향 대상] PHP 8.1, 8.2, 8.3 등 주요 버전 중 보안 패치가 적용되지 않은 전체 환경
일간 취약점 브리핑 및 긴급 Zero-Day 경보 구독
보안 실무자와 인프라·백엔드 엔지니어를 위해 매일 아침 주요 취약점과 패치 우선순위를 요약해 발송합니다.