🇰🇷 한글 설명
PHP 버전 8.1.* ~ 8.5.*에서 array_merge() 함수에 대한 힙 버퍼 오버플로 취약점이 발견되었습니다. 이는 총 요소 개수가 32비트 한계 또는 HT_MAX_SIZE를 초과할 때 발생하며, 이는 zend_hash_num_elements() 함수에서 요소 개수를 미리 계산할 때 정수 오버플로로 인해 발생합니다. 이 취약점은 메모리 손상 또는 충돌을 일으켜 대상 서버의 무결성과 가용성을影响할 수 있습니다.
💡 쉬운 설명
PHP의 array_merge() 함수에서 특정 조건을 만족하면 메모리 오버플로가 발생할 수 있습니다. 이는 서버의 안정성을影响할 수 있습니다. 최신 버전으로 업데이트 하세요.
🇺🇸 원문 (English)
In PHP versions:8.1.* before 8.1.34, 8.2.* before 8.2.30, 8.3.* before 8.3.29, 8.4.* before 8.4.16, 8.5.* before 8.5.1, a heap buffer overflow occurs in array_merge() when the total element count of packed arrays exceeds 32-bit limits or HT_MAX_SIZE, due to an integer overflow in the precomputation of element counts using zend_hash_num_elements(). This may lead to memory corruption or crashes and affect the integrity and availability of the target server.
📍 영향받는 시스템
PHP 8.1.* ~ 8.4.* (8.1.34 이전, 8.2.30 이전, 8.3.29 이전, 8.4.16 이전), PHP 8.5.* (8.5.1 이전)
⚔️ 공격 벡터
공격자는 array_merge() 함수를 악용하여 힙 버퍼 오버플로를 발생시킬 수 있습니다.
🛡️ 대응 방법
최신 PHP 버전으로 업데이트하세요 (8.1.34 이상, 8.2.30 이상, 8.3.29 이상, 8.4.16 이상, 8.5.1 이상).
🔧 검증 코드
로컬 시스템에서 Python을 사용하여 PHP 패키지 버전을 확인합니다. Python이 설치되어 있어야 하며, PHP 패키지도 설치되어 있어야 합니다. 코드를 실행하면 PHP 버전이 출력됩니다. 버전이 취약한 버전일 경우 '취약'으로 판단하며, 그렇지 않을 경우 '양호'로 판단합니다.
python -c 'import pkg_resources; print(pkg_resources.get_distribution("php").version)'