🇰🇷 한글 설명
PHP 5.2.1 이전 및 PHP 4.4.5 이전 버전의 zend_hash_init 함수에서 64비트 플랫폼에서 unserialize() 함수로 특정 정수 표현식을 역직렬화할 때 무한 루프가 발생하여 서비스 거부(DoS) 공격을 초래한다.
💡 쉬운 설명
PHP에서 특정 데이터를 처리할 때 프로그램이 무한히 반복 실행되어 멈추게 되는 버그입니다. 공격자가 특수한 입력값을 보내면 서버가 응답하지 않게 됩니다.
🇺🇸 원문 (English)
The zend_hash_init function in PHP 5 before 5.2.1 and PHP 4 before 4.4.5, when running on a 64-bit platform, allows context-dependent attackers to cause a denial of service (infinite loop) by unserializing certain integer expressions, which only cause 32-bit arguments to be used after the check for a negative value, as demonstrated by an "a:2147483649:{" argument.
📍 영향받는 시스템
PHP 5.0 ~ 5.2.0, PHP 4.0 ~ 4.4.4 (64비트 플랫폼)
⚔️ 공격 벡터
unserialize() 함수에 특수 구성 정수값(예: a:2147483649:{)을 입력하여 DoS 유발
🛡️ 대응 방법
PHP를 5.2.1 이상 또는 4.4.5 이상으로 업그레이드
🔧 검증 코드
PHP 버전이 4.4.5 미만이거나 5.2.1 미만이면 취약합니다.
php -v | grep -E 'PHP (4\.[0-4]\.[0-4]|5\.[01]\.)' && echo 'Vulnerable' || echo 'Check version'