2005년 최초 발견되고 주목을 받지 못하다가,
2019년 Black Hat USA 에서 PortSwigger Web Security’s director of research James Kettle 분이 HTTP Desync Attacks 발표 후 주목받기 시작함.
HTTP Desync Attacks
HTTP Desync Attacks 는 프론트와 백엔드가 나뉘어 동작하는 웹서버에서 각 서버가 받아들이는 Request의 내용이 다를 때 발생하는 취약점을 말합니다.
그림 출처: https://portswigger.net/web-security/request-smuggling
HTTP body 길이
HTTP body 길이를 알려주기 위해서 HTTP 헤더에 Content-Length 혹은 Transfer-Encoding 를 사용하게 됩니다.
Content-Length(=CL) 사용
Transfer-Encoding(=TE) 사용
다수 body 길이 알려주는 헤더를 사용하여 WAF(웹 방화벽) 우회
body 길이를 알려주는 헤더를 중복해서 사용한다.
아래 처럼 CL 헤더를 2개를 사용하는 경우 WAF가 안쪽 'Content-Length: 1' 로 길이를 판단할 경우 body에 내용을 다 보지 못하고 오리진 서버로 전달하게 됩니다.
이후 서버는 바깥쪽 'Content-Length: 13' 을 보고 길이를 판단하여 /etc/passwd/ 를 반환합니다.
웹 보안 전문 회사(Imperva)의 2주 기간 동안 위처럼 Content-Length 중복 헤더 요청이 8만개 정도 모니터링 되었음.
그림 출처 https://bit.ly/37U81iX