HTTP 응답 분할
HTTP response splittingHTTP |
---|
![]() |
요구 방식 |
헤더 필드 |
응답 상태 코드 |
보안 접근 제어 방법 |
보안 취약성 |
HTTP 응답 분할은 웹 응용 프로그램의 취약성의 한 형태로, 응용 프로그램 또는 해당 환경이 입력 값을 제대로 검사하지 못하여 발생합니다.사이트 간 스크립팅 공격, 사용자 간 손상, 웹 캐시 포이즈닝 및 유사한 악용에 사용할 수 있습니다.
공격은 서버가 캐리지 리턴(CR, ASCII)을 인쇄하는 것으로 구성됩니다. 0x0D) 라인 피드(LF, ASCII 0x0A) 시퀀스에 이어 공격자가 응답 헤더 섹션에서 제공하는 콘텐츠(통상은 이러한 콘텐츠를 응용 프로그램에 전송되는 입력 필드에 포함).HTTP 표준(RFC 2616)에 따르면 헤더는 1개의 CRLF로 분리되며 응답 헤더는 2개의 본문에서 분리됩니다.따라서 CR 및 LF를 삭제하지 못하면 공격자가 임의의 헤더를 설정하거나 본문을 제어하거나 응답을 두 개 이상의 개별 응답으로 분할할 수 있습니다.이것에 의해, 공격자는 그 이름을 취득할 수 있습니다.
예방
일반적인 솔루션은 Location이나 Set-Cookie 등의 HTTP 헤더에 포함하기 전에 문자열을 URL 인코딩하는 것입니다.
일반적인 검사 예로는 정수에 캐스팅하거나 적극적인 정규 표현식 치환을 들 수 있습니다.응답 분할은 PHP에만 국한된 것은 아니지만 PHP 인터프리터는 버전 4.4.2 및 5.1.[1]2 이후의 공격에 대한 보호를 포함하고 있습니다.
레퍼런스
- ^ "PHP: PHP 5.1.2. Release Announcement". The PHP Group. Retrieved 2014-11-13.
외부 링크
- 분할 및 정복 - HTTP 응답 분할, 웹 캐시 포이즈닝 공격 및 관련 항목.에이미트 클라인, 2004년
- HTTP 헤더 주입에 취약한 대상 웹 응용 프로그램
- HTTP 응답 분할, 웹 애플리케이션 보안 컨소시엄
- Wapiti 오픈 소스 XSS, 헤더, SQL 및 LDAP 주입 스캐너
- LWN 기사
- CWE-113: HTTP 헤더의 CRLF 시퀀스 삭제 실패('HTTP 응답 분할')
- HTTP 응답 스플릿 공격(OWASP)
- CRLF 주입 - OWASP