🇰🇷 한글 설명
PHP의 mb_parse_str 함수에서 특정 상황에 register_globals 플래그가 비활성화되지 않아, 원격 공격자가 register_globals 기능을 가진 PHP 스크립트를 탐지 불가능하게 호출할 수 있는 취약점입니다. 메모리 제한 위반을 강제하여 악용됩니다.
💡 쉬운 설명
PHP에서 글로벌 변수 자동 활성화 기능이 완전히 꺼지지 않아, 공격자가 몰래 변수를 주입할 수 있습니다. 웹사이트가 이를 감지하지 못합니다.
🇺🇸 원문 (English)
The mb_parse_str function in PHP 4.0.0 through 4.4.6 and 5.0.0 through 5.2.1 sets the internal register_globals flag and does not disable it in certain cases when a script terminates, which allows remote attackers to invoke available PHP scripts with register_globals functionality that is not detectable by these scripts, as demonstrated by forcing a memory_limit violation.
📍 영향받는 시스템
PHP 4.0.0-4.4.6, PHP 5.0.0-5.2.1
⚔️ 공격 벡터
메모리 제한 위반을 유발하여 mb_parse_str 함수가 register_globals을 완전히 비활성화하지 못하게 하고, 그 후 register_globals가 활성화된 상태에서 스크립트 실행
🛡️ 대응 방법
PHP를 4.4.7 이상 또는 5.2.2 이상으로 업그레이드. register_globals 설정 비활성화 (php.ini에서 register_globals = Off)
🔧 검증 코드
PHP 버전이 4.4.6 이하 또는 5.0.0-5.2.1 범위에 있으면 VULNERABLE 표시. 그 외는 PATCHED
php -r 'echo "PHP Version: ".PHP_VERSION; if(version_compare(PHP_VERSION, "4.4.7") < 0 || (version_compare(PHP_VERSION, "5.0.0") >= 0 && version_compare(PHP_VERSION, "5.2.2") < 0)) echo " - VULNERABLE"; else echo " - PATCHED";'