🇰🇷 한글 설명
Doctrine의 여러 라이브러리가 캐시 디렉토리를 0777 권한(누구나 쓰기 가능)으로 생성합니다. umask가 0으로 설정된 PHP 애플리케이션이 이 캐시를 실행하면, 로컬 공격자가 악성 PHP 코드를 주입하여 애플리케이션 권한으로 실행할 수 있습니다.
💡 쉬운 설명
서버의 임시 파일 저장소를 누구나 수정할 수 있게 열어두어, 악의적 사용자가 악성 코드를 몰래 심을 수 있습니다. 이 코드가 웹 애플리케이션에서 자동 실행되면서 권한 침해가 발생합니다.
🇺🇸 원문 (English)
Doctrine Annotations before 1.2.7, Cache before 1.3.2 and 1.4.x before 1.4.2, Common before 2.4.3 and 2.5.x before 2.5.1, ORM before 2.4.8 or 2.5.x before 2.5.1, MongoDB ODM before 1.0.2, and MongoDB ODM Bundle before 3.0.1 use world-writable permissions for cache directories, which allows local users to execute arbitrary PHP code with additional privileges by leveraging an application with the umask set to 0 and that executes cache entries as code.
📍 영향받는 시스템
Doctrine Annotations <1.2.7, Cache 1.3.x <1.3.2, 1.4.x <1.4.2, Common 2.4.x <2.4.3, 2.5.x <2.5.1, ORM 2.4.x <2.4.8, 2.5.x <2.5.1, MongoDB ODM <1.0.2, MongoDB ODM Bundle <3.0.1
⚔️ 공격 벡터
로컬 접근 권한을 가진 사용자가 캐시 디렉토리에 PHP 파일을 작성한 후, 애플리케이션이 해당 캐시를 로드하여 실행하도록 유도
🛡️ 대응 방법
영향받는 패키지를 최신 버전으로 업그레이드하고, 서버의 umask를 0022 이상으로 설정하여 캐시 디렉토리 권한을 제한
🔧 검증 코드
777 또는 775 권한으로 설정된 캐시 디렉토리가 발견되면 취약함. 750 이하의 권한이어야 안전
find /var/www /app -type d -name '*cache*' 2>/dev/null | xargs stat -c '%a %n' | grep -E '^7[0-9]{2}'