🇰🇷 한글 설명
PHP의 pathnames에서 %00 (null byte) 검증 부재로 인한 취약점으로, 특정 함수 호출 시 임의 파일 읽기/쓰기가 가능합니다. 파일명에 null byte를 삽입(예: filename\0.xml)하여 의도된 접근 제한(예: .xml만 읽기)을 우회할 수 있습니다.
💡 쉬운 설명
PHP의 파일 처리 함수들이 파일명의 특수문자(null byte, %00)를 올바르게 검증하지 않아, 공격자가 숨겨진 파일에 접근할 수 있습니다. .xml만 읽도록 제한된 시스템을 null byte로 우회하여 다른 파일에 접근 가능합니다.
🇺🇸 원문 (English)
PHP before 5.4.40, 5.5.x before 5.5.24, and 5.6.x before 5.6.8 does not ensure that pathnames lack %00 sequences, which might allow remote attackers to read or write to arbitrary files via crafted input to an application that calls (1) a DOMDocument load method, (2) the xmlwriter_open_uri function, (3) the finfo_file function, or (4) the hash_hmac_file function, as demonstrated by a filename\0.xml attack that bypasses an intended configuration in which client users may read only .xml files.
📍 영향받는 시스템
PHP 5.4.0~5.4.39, 5.5.0~5.5.23, 5.6.0~5.6.7
⚔️ 공격 벡터
파일명에 %00 (null byte)를 삽입하여 DOMDocument::load(), xmlwriter_open_uri(), finfo_file(), hash_hmac_file() 함수의 파일 접근 제어 우회
🛡️ 대응 방법
PHP를 5.4.40, 5.5.24, 5.6.8 이상으로 업그레이드
🔧 검증 코드
PHP 버전이 5.4.40 이상(5.5는 5.5.24+, 5.6은 5.6.8+)이면 안전하고, 그 이하 버전이면 취약점에 노출됨
php -v 2>/dev/null | grep -oE 'PHP [0-9]+\.[0-9]+\.[0-9]+'