🇰🇷 한글 설명
PHP의 SOAP 확장에서 기본 캐시 디렉토리가 /tmp로 설정되어 로컬 사용자가 WSDL 인젝션 공격을 수행할 수 있습니다. 예측 가능한 파일명을 이용해 악성 WSDL 파일을 삽입하면 get_sdl 함수가 이를 로드하게 됩니다.
💡 쉬운 설명
PHP 프로그램이 누구나 접근 가능한 임시 폴더에 설정 파일을 저장할 때, 같은 컴퓨터의 다른 사용자가 가짜 파일을 만들어서 프로그램을 속일 수 있습니다. 이는 공유 서버 환경에서 특히 위험합니다.
🇺🇸 원문 (English)
The default soap.wsdl_cache_dir setting in (1) php.ini-production and (2) php.ini-development in PHP through 5.6.7 specifies the /tmp directory, which makes it easier for local users to conduct WSDL injection attacks by creating a file under /tmp with a predictable filename that is used by the get_sdl function in ext/soap/php_sdl.c.
📍 영향받는 시스템
PHP 5.6.7 이하 버전 (soap.wsdl_cache_dir 기본값이 /tmp)
⚔️ 공격 벡터
로컬 사용자가 /tmp에 예측 가능한 파일명으로 악성 WSDL 파일을 생성하여 SOAP 클라이언트가 로드하도록 유도
🛡️ 대응 방법
PHP를 최신 버전으로 업그레이드하거나 php.ini에서 soap.wsdl_cache_dir을 /tmp 외의 안전한 디렉토리로 변경
🔧 검증 코드
soap.wsdl_cache_dir이 /tmp가 아닌 다른 경로(예: /var/lib/php/wsdl-cache)로 설정되어 있으면 취약점이 완화됨
php -i 2>/dev/null | grep -A1 'soap.wsdl_cache_dir'