🇰🇷 한글 설명
PHP 7.0.21 이전 및 7.1.7 이전 버전의 국제화 확장(intl)에서 msgfmt_parse_message 함수가 locale 매개변수의 길이를 검증하지 않아 스택 기반 버퍼 오버플로우가 발생합니다. 원격 공격자가 긴 locale 값을 전송하여 애플리케이션 크래시 또는 임의 코드 실행을 초래할 수 있습니다.
💡 쉬운 설명
PHP의 메시지 포맷팅 기능에서 언어 설정값의 길이를 제한하지 않아, 너무 긴 값을 보내면 메모리가 손상됩니다. 이를 악용하면 웹사이트를 먹통으로 만들거나 악성 명령을 실행할 수 있습니다.
🇺🇸 원문 (English)
In PHP 7.x before 7.0.21 and 7.1.x before 7.1.7, ext/intl/msgformat/msgformat_parse.c does not restrict the locale length, which allows remote attackers to cause a denial of service (stack-based buffer overflow and application crash) or possibly have unspecified other impact within International Components for Unicode (ICU) for C/C++ via a long first argument to the msgfmt_parse_message function.
📍 영향받는 시스템
PHP 7.0.0~7.0.20, PHP 7.1.0~7.1.6 (intl 확장 활성화된 경우)
⚔️ 공격 벡터
msgfmt_parse_message() 함수에 매우 긴 locale 문자열을 입력하여 원격 DoS 또는 코드 실행 유도
🛡️ 대응 방법
PHP를 7.0.21 이상 또는 7.1.7 이상으로 업그레이드하기
🔧 검증 코드
intl 확장이 로드되고 PHP 버전이 7.0.21 미만 또는 7.1.0~7.1.6 범위에 있으면 취약함
php -r "echo phpversion('intl');" && php -v | grep -oP 'PHP \K[0-9]\.[0-9]\.[0-9]+'