피드로 돌아가기
Dev.toSecurity
원문 읽기
URL 디코딩 허점을 이용한 HTTP Desync 기반 실시간 데이터 탈취
HTTP desync: el bug que permitió espiar Discord en tiempo real
AI 요약
Context
Discord 미디어 프록시와 Google Cloud Storage 간의 연결 최적화를 위해 TCP Connection Pool을 사용하는 아키텍처 구조. 프록시 서버가 URL 내 특수 문자를 적절히 Sanitization 하지 않고 Upstream 서버로 전달하며 요청 경계의 모호성 발생.
Technical Solution
- URL 내 %20(공백) 및 %0A(Line Feed) 문자를 디코딩 후 재인코딩 없이 전달하는 프록시의 취약점 식별
- HTTP/1.1의 요청 구분자인 공백과 개행 문자를 주입하여 Front-end와 Back-end 간의 Request Boundary 인식 차이 유도
- Connection Pool 내 공유 소켓에 '미완성된 요청'을 남겨두는 Request Smuggling 기법 적용
- 후속 사용자의 요청이 공격자가 심어둔 요청의 Body로 흡수되게 설계하여 실시간 트래픽 가로채기 구현
- RFC 7230 표준의 엄격한 준수를 통한 요청 구분자 처리 및 입력값 검증 로직 강화로 해결
실천 포인트
1. Proxy와 Upstream 서버 간의 HTTP 해석 방식 일치 여부 검토
2. URL 및 Header에 포함된 제어 문자(%0A, %0D 등)의 재인코딩 처리 확인
3. Burp Suite의 HTTP Request Smuggler 등을 활용한 CL.TE/TE.CL 변이 테스트 수행
4. 공유 커넥션 풀 사용 시 요청 간 상태 오염 가능성 차단 설계