🇰🇷 한글 설명
PHP의 var_unserializer 함수에서 발생하는 Use-after-free 취약점으로, 직렬화된 객체의 중복 키를 부적절하게 처리할 때 원격 공격자가 임의 코드를 실행할 수 있습니다. PHP 5.4.36, 5.5.20, 5.6.4 이전 버전에서 unserialize() 함수 호출 시 악의적인 입력을 처리하면서 발생합니다.
💡 쉬운 설명
PHP 프로그램이 신뢰할 수 없는 데이터를 unserialize() 함수로 처리할 때, 공격자가 특수하게 조작된 데이터를 보내면 서버를 완전히 장악할 수 있습니다. 주로 세션 데이터나 캐시 데이터를 역직렬화하는 웹 애플리케이션이 위험합니다.
🇺🇸 원문 (English)
Use-after-free vulnerability in the process_nested_data function in ext/standard/var_unserializer.re in PHP before 5.4.36, 5.5.x before 5.5.20, and 5.6.x before 5.6.4 allows remote attackers to execute arbitrary code via a crafted unserialize call that leverages improper handling of duplicate keys within the serialized properties of an object, a different vulnerability than CVE-2004-1019.
📍 영향받는 시스템
PHP 5.4.0~5.4.35, 5.5.0~5.5.19, 5.6.0~5.6.3
⚔️ 공격 벡터
공격자가 특수하게 조작된 직렬화 데이터(중복 객체 키 포함)를 unserialize() 함수로 전달하여 메모리 손상 및 코드 실행 유발
🛡️ 대응 방법
PHP를 5.4.36, 5.5.20, 5.6.4 이상으로 업그레이드하거나, unserialize()에 신뢰할 수 없는 입력을 전달하지 않도록 코드 수정
🔧 검증 코드
PHP 버전이 5.4.36 이상, 5.5.20 이상, 5.6.4 이상이면 안전합니다. 그보다 낮은 버전이 표시되면 취약합니다.
php -v | grep -oE 'PHP [0-9]+\.[0-9]+\.[0-9]+'