HTTPoxy - PHP 애플리케이션은 영향을 받습니까?
Environment
Red Hat Enterprise Linux 5.x
Red Hat Enterprise Linux 6.x
Red Hat Enterprise Linux 7.x
Red Hat Software Collections (Red Hat Enterprise Linux 6 및 7)
Issue
본 문제는 use - mod_php, CGI, 또는 FastCGI의 모든 일반 모드에서 PHP를 사용할 때 발생합니다.
PHP의getenv('HTTP_PROXY')
및 $_SERVER['HTTP_PROXY']
super global은 HTTP 요청 Proxy 헤더의 컨텐츠를 제공할 수 있습니다.
PHP 스크립트가 다음번 HTTP 요청에 대해 나가는 프록시를 설정하기 위해 getenv('HTTP_PROXY')
또는 $_SERVER['HTTP_PROXY']
를 사용하거나 스트립트가 모듈이나 라이브러리를 사용하여 이러한 동작을 실행 가능하게 하는 경우 (예: Guzzle) PHP 스크립트 내에서의 모든 다음번 HTTP 트래픽이 공격자가 제어하는 외부 프록시를 통해 전환될 수 있습니다.
libcurl
라이브러리에 바인딩을 제공하는 내장된 PHP 확장 자체는 취약하지 않으며 프록시 사용을 지정하기 위해 위의 방법을 사용하는 PHP 라이브러리에 취약점이 있음에 유의합니다.
영향을 받는 PHP 스크립트가 PHP 스크립트로 들어오는 PHP 요청의 Proxy 헤더 컨텐츠를 제공하는 HTTP 서버에 배포될 경우에만 문제가 됨에 유의합니다.
Resolution
Red Hat은 HTTP 서버 용 업데이트 및 완화 가이드를 게재하여 PHP 스크립트에 HTTP Proxy 헤더 컨텐츠가 제공되지 않게 합니다. HTTP 서버를 업데이트하거나 완화 방법을 적용하여 벡터를 종료하고 결함을 허용하지 않게 합니다.
다음 방법 중 하나를 사용하여 공격자 제공 헤더가 사용되지 않게 할 수 있습니다:
- 들어오는 HTTP 요청에서 웹 애플리케이션 방화벽을 설정하여 Proxy 헤더를 삭제합니다
- PHP 스크립트가 호출되기 전에 HTTP 서버를 설정하여 Proxy 헤더를 삭제합니다
- Apache httpd 서버 사용 시 HTTPoxy - Apache mod_cgi는 영향을 받습니까? 솔루션을 참조합니다. 업데이트된 httpd 버전은 Proxy 헤더를 스크립트의 헤더 세트에서 자동으로 제외합니다.
- nginx 서버 사용 시 HTTPoxy - nginx는 영향을 받습니까? 솔루션을 참조합니다.
-
<?php
뒤 상단에 있는 다음과 같은 명령문이 포함된 PHP 스크립트를 수정합니다:putenv("HTTP_PROXY="); $_SERVER["HTTP_PROXY"] = "";
Apache/mod_php 하에서 PHP를 실행하고 있는 경우 위의 명령문 뒤에 다음을 추가합니다:
apache_setenv('HTTP_PROXY', '');
Root Cause
보다 자세한 내용은 HTTPoxy - CGI에서 "HTTP_PROXY" 변수 이름 충돌 결함에서 확인하십시오.
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments