🇰🇷 한글 설명
PHP 5.3.0 이전 버전의 unserialize() 함수가 깊게 중첩된 직렬화된 변수를 처리할 때 과도한 메모리와 CPU를 소비하여 서비스 거부(DoS) 공격에 취약합니다. 공격자가 a:1: 패턴이 반복되는 악의적인 직렬화 문자열을 전송하면 서버가 무한 처리로 인해 응답 불가능해집니다.
💡 쉬운 설명
PHP가 저장된 데이터를 읽을 때 사용하는 함수에 문제가 있어서, 공격자가 특별히 만든 데이터를 보내면 서버가 멈출 수 있습니다. 마치 받은 상자가 무한히 상자를 포함하고 있어서 열다 보면 자원이 다 떨어지는 것과 같습니다.
🇺🇸 원문 (English)
The unserialize function in PHP 5.3.0 and earlier allows context-dependent attackers to cause a denial of service (resource consumption) via a deeply nested serialized variable, as demonstrated by a string beginning with a:1: followed by many {a:1: sequences.
📍 영향받는 시스템
PHP 5.3.0 이전 모든 버전 (5.2.x, 5.1.x, 5.0.x 등)
⚔️ 공격 벡터
직렬화된 데이터 입력 (사용자 입력, 쿠키, 세션, GET/POST 파라미터 등이 unserialize() 함수로 전달될 때)
🛡️ 대응 방법
PHP를 5.3.0 이상으로 업그레이드하거나, unserialize() 대신 json_decode() 사용, 신뢰할 수 없는 데이터에 unserialize() 적용 금지
🔧 검증 코드
현재 PHP 버전이 5.3.0 이상이면 안전하고, 5.3.0 미만이면 패치 또는 업그레이드 필요
php -v | grep -oP 'PHP \K[0-9]+\.[0-9]+\.[0-9]+'