HTTPoxy - Go 애플리케이션은 영향을 받습니까?
Environment
Red Hat Enterprise Linux 7.x
Issue
CGI 모드에서 Go를 사용할 때 이러한 문제의 영향을 받게 됩니다. Go CGI 스크립트가 "HTTP_PROXY" 환경 변수를 사용하여 다음번 HTTP 요청에 대해 나가는 HTTP 프록시를 설정하거나 또는 스트립트가 모듈이나 라이브러리를 사용하여 이러한 동작을 실행 가능하게 하는 경우 (예: Go의 "http" 모듈) Go CGI 스크립트 내에서의 모든 후속 HTTP 트래픽이 공격자가 제어하는 외부 프록시를 통해 전환될 수 있습니다.
영향을 받는 Go CGI 스크립트가 "HTTP_PROXY" 환경 변수를 통해 들어오는 HTTP 요청의 "Proxy" 헤더 컨텐츠를 제공하는 활성 CGI HTTP 서버에 배포될 경우에만 문제가 됨에 유의합니다.
Resolution
Red Hat은 HTTP 서버 용 업데이트 및 완화 가이드를 게재하여 "HTTP_PROXY" 환경 변수에 HTTP "Proxy" 헤더 컨텐츠가 전달되지 않게 합니다. HTTP 서버를 업데이트하거나 완화 방법을 적용하여 벡터를 종료하고 결함을 악용하지 못하도록 합니다.
다음 방법 중 하나를 사용하여 공격자 제공 헤더가 사용되지 않게 할 수 있습니다:
- 웹 애플리케이션 방화벽을 설정하여 "Proxy:" 헤더를 삭제합니다
- Go 스크립트를 호출하기 전 "Proxy:" 헤더를 삭제하도록 HTTP 서버 설정을 변경합니다. (아래 링크 HTTPoxy 기사에서 링크된 기타 다른 지식베이스 기사를 참조하십시오).
- 프로그램에 다음과 같은 사항을 변경합니다:
추가되어 있지 않을 경우 가져오기에 “os”를 추가합니다:
import “os”
“메인” 함수 상단에 추가합니다:
os.Unsetenv(“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