🇰🇷 한글 설명
PHP 8.2~8.5의 특정 버전에서 urldecode() 등의 함수가 signed char를 ctype 함수에 부정확하게 전달하여, NetBSD 같은 시스템에서 음수 오프셋으로 배열에 접근하고 메모리 보호 위반을 유발합니다. 이를 통해 서비스 거부 공격이 가능합니다.
💡 쉬운 설명
PHP의 URL 처리 함수에서 특정 문자들이 잘못 처리되어 메모리에 잘못 접근하는 버그입니다. 공격자가 악의적인 URL을 보내 웹사이트를 다운시킬 수 있습니다.
🇺🇸 원문 (English)
In PHP versions 8.2.* before 8.2.31, 8.3.* before 8.3.31, 8.4.* before 8.4.21, and 8.5.* before 8.5.6, some functions, including urldecode(), pass signed char to ctype functions (like isxdigit()). On the systems with default signed char and optimized table-lookup ctype functions - such as NetBSD - this can lead to accessing array with negative offset, which can trigger a denial of service.
📍 영향받는 시스템
PHP 8.2.0~8.2.30, 8.3.0~8.3.30, 8.4.0~8.4.20, 8.5.0~8.5.5 (주로 NetBSD 포함 signed char 기본값 시스템)
⚔️ 공격 벡터
특수 문자 또는 음수값으로 인코딩된 바이트가 포함된 URL을 GET/POST 요청으로 전송
🛡️ 대응 방법
PHP를 8.2.31 이상, 8.3.31 이상, 8.4.21 이상, 또는 8.5.6 이상으로 업그레이드
🔧 검증 코드
현재 설치된 PHP 버전을 확인하여 영향받는 범위(8.2.30 이하, 8.3.30 이하, 8.4.20 이하, 8.5.5 이하)와 비교합니다
php -v | grep -oE 'PHP [0-9]+\.[0-9]+\.[0-9]+'