🇰🇷 한글 설명
PHP 5.2.0의 Zend Memory Manager에서 발견된 정수 부호 오류로, _zend_mm_alloc_int 함수의 잘못된 signed long 캐스트로 인해 발생합니다. HTTP SOAP 클라이언트나 msg_receive 함수에 최대 양의 정수값을 전달하여 메모리 할당 검증을 우회하고 임의의 코드 실행이 가능합니다.
💡 쉬운 설명
PHP에서 매우 큰 숫자로 메모리를 요청할 때 보안 검사 로직의 계산 오류가 발생합니다. 이 오류를 악용하면 해커가 서버에서 원하는 코드를 실행할 수 있습니다.
🇺🇸 원문 (English)
Integer signedness error in the _zend_mm_alloc_int function in the Zend Memory Manager in PHP 5.2.0 allows remote attackers to execute arbitrary code via a large emalloc request, related to an incorrect signed long cast, as demonstrated via the HTTP SOAP client in PHP, and via a call to msg_receive with the largest positive integer value of maxsize.
📍 영향받는 시스템
PHP 5.2.0 및 일부 이전 5.x 버전
⚔️ 공격 벡터
SOAP 요청 또는 msg_receive 함수 호출 시 maxsize 매개변수에 2147483647 같은 정수 최댓값을 설정하여 메모리 할당 오류 유발
🛡️ 대응 방법
PHP 5.2.1 이상으로 업그레이드 또는 SOAP/메시지 매개변수에 대한 입력 검증 강화
🔧 검증 코드
PHP 버전이 5.2.0이면 취약, 5.2.1 이상이면 패치되었음을 의미합니다.
php -v 2>/dev/null | grep -oP 'PHP \K[0-9]+\.[0-9]+\.[0-9]+'