🇰🇷 한글 설명
PHP 5.2.15 이전의 extract() 함수에서 EXTR_OVERWRITE 옵션 사용 시 GLOBALS 슈퍼글로벌 배열과 $this 변수를 외부 입력으로 덮어쓸 수 있는 취약점입니다. 이를 악용하면 의도하지 않은 데이터 구조 수정을 통해 접근 제한을 우회할 수 있습니다.
💡 쉬운 설명
PHP의 extract() 함수가 핵심 시스템 변수를 사용자 입력으로 덮어쓸 수 있게 하는 문제입니다. 공격자가 이를 이용해 보안 정책을 무시하고 시스템에 접근할 수 있습니다.
🇺🇸 원문 (English)
The extract function in PHP before 5.2.15 does not prevent use of the EXTR_OVERWRITE parameter to overwrite (1) the GLOBALS superglobal array and (2) the this variable, which allows context-dependent attackers to bypass intended access restrictions by modifying data structures that were not intended to depend on external input, a related issue to CVE-2005-2691 and CVE-2006-3758.
📍 영향받는 시스템
PHP 5.2.15 이전의 모든 버전
⚔️ 공격 벡터
사용자 입력값을 extract() 함수의 EXTR_OVERWRITE 옵션으로 처리하여 GLOBALS 배열과 $this 변수 덮어쓰기
🛡️ 대응 방법
PHP를 5.2.15 이상으로 업그레이드하거나 extract() 함수의 사용을 제한하고 더 안전한 변수 초기화 방식 사용
🔧 검증 코드
출력된 PHP 버전이 5.2.15 이하면 취약하며, 5.2.15 초과이거나 5.3 이상이면 패치됨
php -v 2>/dev/null | grep -oE '5\.[0-2]\.[0-9]+' | head -1