본문 바로가기
보안

🔥 HTTP Desync 공격: 프록시와 로드 밸런서의 요청 처리 차이를 악용한 보안 위협 🚨

by IT 분석가 2025. 2. 22.
반응형

HTTP Desync 공격

 

📌 목차

  1. HTTP Desync 공격이란?
  2. 공격 원리와 작동 방식
  3. 주요 HTTP Desync 공격 기법
  4. 보안 위협과 실제 사례
  5. 방어 방법 및 대응 방안

🔍 HTTP Desync 공격이란?

HTTP Desync 공격(HTTP Request Smuggling의 한 형태)
웹 서버와 프록시, 로드 밸런서가 HTTP 요청을 다르게 해석하는 점을 악용하는 공격 기법이다.

이 공격을 통해 세션 하이재킹, 캐시 중독, 방화벽 우회 및 내부 시스템 접근 등이 가능하다.
특히, CDN(콘텐츠 전송 네트워크) 및 리버스 프록시를 사용하는 대규모 웹 애플리케이션이 주요 대상이 된다.


⚙️ HTTP Desync 공격의 원리

HTTP 요청을 해석하는 방식은 주로 두 가지가 있다.

  1. Content-Length(CL) 헤더 기반 요청 길이 해석
  2. Transfer-Encoding: chunked(TE) 헤더 기반 요청 길이 해석

공격이 발생하는 조건

  • 클라이언트 → 프록시(로드 밸런서) → 백엔드 서버로 요청이 전달될 때,
    각 구성 요소가 HTTP 요청을 다르게 해석하는 경우 발생
  • 공격자는 이 해석 차이를 이용해 추가적인 숨겨진 요청을 삽입

 

📌 정상적인 HTTP 요청 예제

POST / HTTP/1.1  
Host: example.com  
Content-Length: 20  

username=admin&password=1234
 

📌 HTTP Desync 공격 요청 예제

POST / HTTP/1.1  
Host: example.com  
Content-Length: 20  
Transfer-Encoding: chunked  

0  

GET /admin HTTP/1.1  
Host: example.com
 

🚨 결과:

  • 일부 서버는 Content-Length를, 일부는 Transfer-Encoding을 신뢰
  • 공격자는 숨겨진 GET /admin 요청을 주입하여 인증 우회 가능

🚨 주요 HTTP Desync 공격 기법

1️⃣ CL.TE(Content-Length vs Transfer-Encoding 차이 악용)

📌 공격 방식

  • 프록시는 Content-Length를 신뢰하여 요청을 처리
  • 백엔드 서버는 Transfer-Encoding을 신뢰하여 추가적인 요청을 처리

공격 예제

POST / HTTP/1.1  
Host: vulnerable.com  
Content-Length: 13  
Transfer-Encoding: chunked  

5  
SMUGG  
3  
LED  
0  

GET /admin HTTP/1.1  
Host: vulnerable.com

 

🚨 결과:

  • 백엔드 서버는 GET /admin 요청을 추가적으로 인식하여 인증 우회 가능

2️⃣ TE.CL(Transfer-Encoding vs Content-Length 차이 악용)

📌 공격 방식

  • 프록시는 Transfer-Encoding을 우선 처리하고,
  • 백엔드 서버는 Content-Length를 우선 처리

공격 예제

POST / HTTP/1.1  
Host: vulnerable.com  
Transfer-Encoding: chunked  
Content-Length: 6  

0  

GET /admin HTTP/1.1  
Host: vulnerable.com
 

🚨 결과:

  • 백엔드 서버는 GET /admin을 정상 요청으로 처리하여 공격자에게 관리자 권한 부여

3️⃣ 캐시 포이즈닝(Cache Poisoning)

📌 공격 방식

  • HTTP Desync를 이용하여 CDN 캐시를 조작
  • 악성 콘텐츠가 정상적인 요청으로 처리되도록 함

공격 예제

POST / HTTP/1.1  
Host: cache-server.com  
Content-Length: 10  
Transfer-Encoding: chunked  

0  

GET /malware HTTP/1.1  
Host: cache-server.com
 

🚨 결과:

  • 캐시에 악성 콘텐츠가 저장되어 사용자가 감염됨

⚠️ 보안 위협과 실제 사례

보안 위협

  • 🔓 세션 탈취: 로그인된 사용자의 요청을 변조하여 공격자가 가로챌 수 있음
  • 🎭 사용자 스푸핑: 공격자가 임의의 요청을 삽입하여 권한 상승 가능
  • 🚀 방화벽 우회: 보안 장비가 정상적인 요청으로 인식하여 공격을 차단하지 못함
  • 💣 DDoS 공격: 대량의 요청을 삽입하여 서버 과부하 유발 가능

실제 발생 사례

  1. 2019년 Netflix 및 여러 웹사이트에서 HTTP Desync 취약점 발견
    • 공격자가 HTTP 요청을 변조하여 보안 시스템을 우회할 수 있는 취약점 공개
  2. 2021년 여러 클라우드 서비스에서 HTTP Smuggling 취약점 보고됨
    • 주요 CDN 서비스에서 HTTP 요청 처리가 다르게 해석되는 문제 발생

🔐 방어 방법 및 대응 방안

1. HTTP 요청 해석 방식 일관화

  • Content-Length와 Transfer-Encoding을 혼합 사용하지 않도록 서버 설정 변경
  • 예제 (Nginx 설정)
http {
    proxy_http_version 1.1;
    proxy_set_header Connection "";
}

 

2. 보안 패치 적용

  • 최신 웹 서버 및 프록시 소프트웨어 사용
  • 예제 (Apache 설정)
RequestHeader unset Transfer-Encoding

 

3. 웹 애플리케이션 방화벽(WAF) 적용

  • HTTP Smuggling 공격 패턴 탐지 및 차단
  • 예제 (ModSecurity 설정)
SecRule REQUEST_HEADERS:Transfer-Encoding "@rx chunked" "id:1000001,deny,status:403"

 

4. 정기적인 취약점 점검 수행

  • Burp Suite, OWASP ZAP을 사용하여 HTTP Desync 취약점 테스트
  • 예제 (Burp Suite 활용)
Attack Type: HTTP Smuggling
Test Mode: TE.CL & CL.TE

 

5. 프록시 및 CDN 보안 설정 강화

  • 프록시 및 CDN에서 HTTP 요청을 엄격히 검증
  • 예제 (Cloudflare WAF 적용) 
Rule: Block Suspicious HTTP Smuggling Patterns

📌 해시태그
#HTTPDesync #웹보안 #보안취약점 #API보안 #서버보안 #웹방화벽 #리버스프록시 #로드밸런서 #CDN보안

반응형