🇰🇷 한글 설명
PHP의 pcntl_exec 함수에서 null byte(\x00) 문자를 만나면 경로명이 잘려서, 공격자가 의도된 파일 확장자 제한을 우회하고 예상치 못한 파일을 실행할 수 있는 취약점입니다.
💡 쉬운 설명
PHP에서 파일을 실행할 때 특정 문자를 넣으면 파일 이름이 중간에 끊겨서, 안되는 파일을 실행할 수 있게 됩니다. 웹 서버를 통해 원격으로 악의적인 명령을 실행당할 수 있습니다.
🇺🇸 원문 (English)
The pcntl_exec implementation in PHP before 5.4.41, 5.5.x before 5.5.25, and 5.6.x before 5.6.9 truncates a pathname upon encountering a \x00 character, which might allow remote attackers to bypass intended extension restrictions and execute files with unexpected names via a crafted first argument. NOTE: this vulnerability exists because of an incomplete fix for CVE-2006-7243.
📍 영향받는 시스템
PHP 5.4.41 이전, 5.5.25 이전, 5.6.9 이전 버전
⚔️ 공격 벡터
pcntl_exec() 함수 호출 시 null byte가 포함된 경로명을 전달하여 파일 확장자 검증 우회 후 임의 파일 실행
🛡️ 대응 방법
PHP를 5.4.41, 5.5.25, 5.6.9 이상의 패치된 버전으로 업그레이드
🔧 검증 코드
출력에 PHP 5.4, 5.5, 5.6의 버전이 나타나면 취약한 버전이며, 상기된 최소 버전 미만이면 패치가 필요합니다.
php -v | grep -E 'PHP (5\.[456]\.)' && echo 'Vulnerable version detected'