🇰🇷 한글 설명
PHP를 CGI로 실행할 때 특정 형식의 쿼리 문자열을 부적절하게 처리하는 취약점입니다. 공격자가 %3D 문자(URL 인코딩된 = 기호)를 포함하면서 실제 = 기호는 없는 쿼리 문자열을 전송하여 PHP 명령어 옵션을 주입하고 임의 코드를 실행할 수 있습니다.
💡 쉬운 설명
PHP 웹서버에 특수하게 만든 URL을 보내면 공격자가 원하는 코드가 실행됩니다. PHP 5.3.13 미만, 5.4.2 이하 버전의 CGI 모드에서만 가능합니다.
🇺🇸 원문 (English)
sapi/cgi/cgi_main.c in PHP before 5.3.13 and 5.4.x before 5.4.3, when configured as a CGI script (aka php-cgi), does not properly handle query strings that contain a %3D sequence but no = (equals sign) character, which allows remote attackers to execute arbitrary code by placing command-line options in the query string, related to lack of skipping a certain php_getopt for the 'd' case. NOTE: this vulnerability exists because of an incomplete fix for CVE-2012-1823.
📍 영향받는 시스템
PHP 5.3.13 이전, 5.4.0~5.4.2 (CGI 모드로 실행되는 경우)
⚔️ 공격 벡터
HTTP 쿼리 문자열에 %3D를 포함하면서 = 기호가 없는 형식으로 php-cgi 파라미터 주입
🛡️ 대응 방법
PHP를 5.3.13 이상, 5.4.3 이상으로 업그레이드하거나 CGI 모드 대신 mod_php/php-fpm 사용
🔧 검증 코드
위 명령어가 PHP 버전을 출력하면 취약한 버전입니다. 버전이 5.3.13 이상, 5.4.3 이상이면 패치됨
php -v | grep -E '(5\.[34]\.|5\.3\.[0-9]|5\.4\.[0-2])'