
CVE-2012-1823 - PHP CGI 인자 주입 원격 코드 실행 (RCE)
심각도: 치명적 (CVSS 9.8)
CVE: CVE-2012-1823
게시일: 2012년 5월 11일
영향받는 소프트웨어: CGI 모드로 실행되는 PHP (php-cgi)
취약점 유형: 인자 주입 / 원격 코드 실행 (RCE)
공격 벡터: 네트워크
인증 요구: 없음
CVE-2012-1823은 PHP에서 발견된 가장 중요한 원격 코드 실행 취약점 중 하나입니다. 이 취약점은 CGI(Common Gateway Interface)를 통해 실행되도록 구성된 PHP 설치에 영향을 미치며, 인증되지 않은 공격자가 원격으로 임의의 PHP 코드를 실행할 수 있게 합니다.
웹 애플리케이션 내부의 결함이 필요한 취약점과 달리, 이 문제는 php-cgi를 사용하여 배포할 때 PHP 자체에 존재합니다. 취약점이 인터프리터 수준에 존재하므로, 영향을 받는 서버에서 호스팅되는 모든 PHP 애플리케이션은 코딩 결함 여부와 관계없이 취약해집니다.
이 취약점은 단순성, 신뢰성, 그리고 인터넷 전반에 걸친 광범위한 악용으로 인해 2012년에 널리 알려지게 되었습니다. 공개된 지 수년이 지난 후에도 인터넷 전체 스캔은 취약한 시스템을 계속 식별하고 있으며, 이 취약점은 여전히 악용 프레임워크와 방어 탐지 도구에 포함되어 있습니다. :contentReference[oaicite:0]{index=0}
이 취약점은 PHP의 CGI 구현(php-cgi) 내부에 존재합니다.
일반적으로 HTTP 쿼리 매개변수는 사용자 입력으로 PHP 스크립트에 전달되도록 설계되었습니다.
그러나 PHP는 등호(=) 문자를 포함하지 않는 특수하게 조작된 쿼리 문자열을 잘못 처리합니다.
PHP는 쿼리 문자열을 순수한 사용자 데이터로 취급하는 대신, 그 일부를 PHP 실행 파일에 직접 전달되는 명령줄 인자로 잘못 해석합니다.
PHP는 다양한 명령줄 스위치(예: -d)를 지원하므로, 공격자는 요청 처리 중에 PHP 런타임 구성 옵션을 재정의할 수 있습니다.
이를 통해 공격자는 다음을 수행할 수 있습니다:
근본 원인은 다음 내부에서 php_getopt()를 부적절하게 처리하는 것입니다:
sapi/cgi/cgi_main.c
구체적으로, PHP는 등호(=)가 없는 악성 쿼리 문자열을 처리할 때 명령줄 구문 분석을 올바르게 무시하지 못했습니다. :contentReference[oaicite:1]{index=1}
CGI 실행 파일은 명령줄 매개변수를 허용합니다.
예를 들어:
php-cgi -d allow_url_include=1
일반적으로 이러한 매개변수는 운영 체제에서만 비롯되어야 합니다.
대신, PHP는 HTTP 요청이 특수하게 조작된 URL을 통해 이러한 매개변수를 주입하는 것을 잘못 허용했습니다.
따라서 공격자는 대상 스크립트가 실행되기 전에 PHP 런타임 구성을 조작할 수 있었습니다.
이것은 사실상 단순한 HTTP 요청을 php-cgi에 대한 명령줄 실행으로 변환했습니다.
다음 PHP 릴리스가 취약합니다:
| 버전 | 상태 |
|---|---|
| PHP < 5.3.12 | 취약 |
| PHP 5.4.x < 5.4.2 | 취약 |
**CGI 모드(php-cgi)**를 사용하는 설치만 영향을 받습니다.
다음과 같이 실행되는 PHP는 일반적으로 CVE-2012-1823 자체의 영향을 받지 않습니다:
:contentReference[oaicite:2]{index=2}
공격자는 다음만 필요로 합니다:
이 취약점은 원격으로 완전히 악용 가능합니다.
공격은 일반적으로 다음 단계를 따릅니다:
코드 실행을 획득하면 공격자는 일반적으로 다음을 수행합니다:
성공적인 악용은 PHP 애플리케이션의 완전한 손상을 초래합니다.
잠재적 결과는 다음과 같습니다:
PHP가 상승된 권한으로 실행되는 경우 시스템 수준의 손상도 가능할 수 있습니다.
| 지표 | 값 |
|---|---|
| 기본 점수 | 9.8 |
| 심각도 | 치명적 |
| 공격 벡터 | 네트워크 |
| 공격 복잡도 | 낮음 |
| 필요한 권한 | 없음 |
| 사용자 상호 작용 | 없음 |
| 기밀성 | 높음 |
| 무결성 | 높음 |
| 가용성 | 높음 |
여러 특성으로 인해 CVE-2012-1823은 특히 영향력이 컸습니다:
악용 용이성과 심각한 영향의 결합으로 인해 광범위한 실제 공격이 발생했으며, 이 취약점은 CISA의 KEV(Known Exploited Vulnerabilities) 카탈로그에도 포함되었습니다. :contentReference[oaicite:4]{index=4}
관리자는 다음을 확인해야 합니다:
지표에는 다음이 포함됩니다:
Nuclei, Nessus, OpenVAS, Metasploit 모듈과 같은 보안 스캐너는 취약한 구성을 탐지할 수 있습니다. :contentReference[oaicite:5]{index=5}
권장 완화 조치는 다음과 같습니다:
| 날짜 | 이벤트 |
|---|---|
| 2012년 5월 | 취약점 공개 |
| 2012년 5월 | 보안 패치 출시 |
| 2012년 | 공개 익스플로잇 유포 |
| 2012년 | Metasploit 모듈 게시 |
| 이후 수년 | 대규모 인터넷 악용 관찰 |
| 현재 | 취약점 스캔 및 레거시 시스템에 계속 등장 |
이 저장소는 교육 목적, 보안 연구, 취약점 분석 및 방어적 테스트만을 위해 제공됩니다. 여기에 포함된 모든 정보는 명시적 승인을 받은 시스템에서만 사용해야 합니다. 승인되지 않은 취약 시스템의 악용은 불법적이고 비윤리적입니다.