🇰🇷 한글 설명
PHP 4.4.0의 open_basedir 지시문에 후행 슬래시가 포함되어 있을 때, 디렉토리 접근 제한을 제대로 검증하지 않아 PHP 스크립트가 원본 디렉토리명의 부분 문자열을 가진 다른 디렉토리의 파일에 접근할 수 있는 보안 결함입니다. 이를 통해 권한이 없는 파일 시스템 영역에 접근 가능합니다.
💡 쉬운 설명
PHP의 폴더 제한 기능이 이름이 비슷한 폴더는 차단하지 못해 본래 접근 금지된 다른 폴더의 파일을 읽을 수 있는 문제입니다. 예를 들어 /var/www/user1 접근은 허용되지만 /var/www/user1_admin 폴더는 차단하려 했어도 우회가 가능합니다.
🇺🇸 원문 (English)
fopen_wrappers.c in PHP 4.4.0, and possibly other versions, does not properly restrict access to other directories when the open_basedir directive includes a trailing slash, which allows PHP scripts in one directory to access files in other directories whose names are substrings of the original directory.
📍 영향받는 시스템
PHP 4.4.0 및 일부 이전/이후 버전 (4.4.x 계열 중심)
⚔️ 공격 벡터
PHP 스크립트에서 open_basedir 제한을 우회하여 부분 문자열 매칭으로 다른 디렉토리의 파일 접근
🛡️ 대응 방법
PHP를 4.4.1 이상으로 업그레이드하거나 open_basedir 설정에서 trailing slash 제거 및 정확한 경로 지정
🔧 검증 코드
PHP 버전이 4.4.0인 경우 취약함, 4.4.1 이상이면 안전함. 버전 확인 후 4.4.1 이상으로 업그레이드 필요 여부 판단
php -v | grep -E 'PHP [0-9]+\.[0-9]+\.[0-9]+'