🇰🇷 한글 설명
PHP 7.0.8 이하에서 HTTP_PROXY 환경 변수의 신뢰할 수 없는 클라이언트 데이터를 필터링하지 않아, 공격자가 Proxy 헤더를 통해 애플리케이션의 아웃바운드 HTTP 트래픽을 임의의 프록시 서버로 리다이렉트할 수 있는 취약점입니다. getenv('HTTP_PROXY') 호출이나 CGI 설정에서 발생하며 "httpoxy"로 불립니다.
💡 쉬운 설명
웹 서버가 사용자의 요청에 포함된 프록시 정보를 검증하지 않아, 공격자가 서버의 인터넷 통신 경로를 자신의 악성 서버로 변경할 수 있습니다. 이를 통해 서버의 외부 통신을 도청하거나 조작할 수 있습니다.
🇺🇸 원문 (English)
PHP through 7.0.8 does not attempt to address RFC 3875 section 4.1.18 namespace conflicts and therefore does not protect applications from the presence of untrusted client data in the HTTP_PROXY environment variable, which might allow remote attackers to redirect an application's outbound HTTP traffic to an arbitrary proxy server via a crafted Proxy header in an HTTP request, as demonstrated by (1) an application that makes a getenv('HTTP_PROXY') call or (2) a CGI configuration of PHP, aka an "httpoxy" issue.
📍 영향받는 시스템
PHP 5.x, 5.6.22 미만, 7.0.9 미만 (특히 CGI/FastCGI SAPI)
⚔️ 공격 벡터
HTTP 요청의 Proxy 헤더에 악의적인 프록시 서버 주소(예: http://attacker.com:8080)를 포함시켜 전송
🛡️ 대응 방법
PHP를 5.6.22, 7.0.9 이상으로 업그레이드하고, HTTP_PROXY 환경 변수 필터링 또는 .htaccess에서 Proxy 헤더 차단
🔧 검증 코드
PHP 버전이 5.6.22 이상 또는 7.0.9 이상이면 안전하고, 환경 변수에 HTTP_PROXY가 설정되어 있으면 위험 상태입니다.
php -v | grep -oE 'PHP [0-9]+\.[0-9]+\.[0-9]+' && env | grep -i proxy