🇰🇷 한글 설명
PHP 7.x의 zend_throw_or_error 함수에서 클래스명으로 오용되는 문자열에 포함된 형식 문자열 지정자(%x, %n 등)를 통해 원격 공격자가 메모리를 읽거나 임의의 코드를 실행할 수 있는 취약점입니다. 잘못된 오류 처리 메커니즘이 원인입니다.
💡 쉬운 설명
사용자 입력이 PHP의 오류 메시지 생성에 직접 사용될 때, 특수한 문자열(%x, %n 등)을 삽입하면 공격자가 서버의 메모리에 접근하거나 악의적 코드를 실행할 수 있습니다. 이는 프로그램이 입력값을 안전하게 검증하지 않기 때문에 발생합니다.
🇺🇸 원문 (English)
Format string vulnerability in the zend_throw_or_error function in Zend/zend_execute_API.c in PHP 7.x before 7.0.1 allows remote attackers to execute arbitrary code via format string specifiers in a string that is misused as a class name, leading to incorrect error handling.
📍 영향받는 시스템
PHP 7.0.0부터 7.0.0 버전 (7.0.1에서 패치됨)
⚔️ 공격 벡터
HTTP 요청의 클래스명, 함수명, 오류 핸들러에 형식 문자열 페이로드(%x, %s, %n)를 삽입하여 원격 실행
🛡️ 대응 방법
PHP 7.0.1 이상으로 즉시 업그레이드하거나 입력 값에 대한 엄격한 형식 검증 및 필터링 적용
🔧 검증 코드
출력된 PHP 버전이 7.0.1 이상이면 패치됨, 7.0.0 이하면 취약함
php -v 2>/dev/null | grep -oP 'PHP \K[0-9]+\.[0-9]+\.[0-9]+'