0xNews - 4가지 새로운 HTTP request 스몰딩 Smuggling 공격 발견

0xNews - 4가지 새로운 HTTP request 스몰딩 Smuggling 공격 발견

SafeBreach 연구팀의 BlackHat USA 2020 발표

SafeBreach 사이트 추가 링크

HTTP request smuggling 은 웹 서버와 HTTP 프록시 서버가 처음 문서화된 이후
15년이 지난 후에도 취약한 방식이 있음을 확인

HTTP request smuggling 혹은 HTTP 비동기화 Desyncing 공격은
웹 사이트가 하나 이상의 사용자로부터 수신한 HTTP request 시퀸스를 처리하는 방식을 방해하는데 사용되는 기술

HTTP request smuggling 과 관련된 취약점은
일반적으로 프론트엔드, 로드밸런서, 프록시와 백엔드 서버가 HTTP request 의 경계를 다르게 해석
악의적인 행위자가 모호한 것을 보낼 수 있게 유발
정상적인 사용자의 request 앞에 추가되는 request 추가

이런 공격을 통해 자격증명 탈취 후
사용자에게 responses 에 인젝션 실행
피해자의 request 에서 데이터를 탈취
공격자 제어 서버로 정보를 유출 가능

HTTP request smuggling 기법은 2005년 최초 발표, 입증
발표 당시 PDF 링크

이후 해당 기법에 대한 개선된 기능 개발을 통한 공격 영역의 확장
Watchfire 연구팀의 해당 기술에 대한 DEFCON 발표 PDF 링크

HTTP request smuggling 새로운 변종에 대한 최초 발표

request 를 다른 사용자와 결합 후
내부 API 에 대한 최대 권한 접속
웹 캐시 포이즌
인기 있는 애플리케이션의 로그인 페이지 손상 등 가능

추가된 새로운 변종은 다양한 공격에 사용

연구팀은 본인들이 실험에 성공한 HTTP request smuggling 변종 정리
Variant 1: "Header SP/CR junk: …"
Variant 2 – "Wait for It"
Variant 3 – HTTP/1.2 to bypass mod_security-like defense
Variant 4 – a plain solution
Variant 5 – "CR header" 

Aprelium 의 Abyss 는 두개의 Content-Length 헤더 필드를 포함하는 HTTP request 처리할 때
두번째 헤더를 유효한 것으로 인정
squid 는 첫번째 Content-Length 헤더를 사용하여 두 서버가 요청을 다르게 해석하고 request Smuggling 를 달성하도록 함

Abyss 가 길이가 지정된 Content-Length 값보다 작은 본문으로 HTTP request 를 받은 경우
request 의 나머지 본문을 무시하기 전 30초 동안 request 이행하기 위해 대기
이로 인해 Squid 와 Abyss 간 불일치가 발생
아웃바운드 HTTP request 의 일부를 두번째 request 해석

Variant 3 같은 경우
HTTP/1.2 를 사용하여 OWASP ModSecurity 에 정의된 WAF 방어를 우회
HTTP request smuggling 공격을 방지하기 위한 CRS Core Rule Set 은 동작을 트리거 하는 악의적인 페이로드 생성

"Content-Type : text / plain" 헤더 필드를 사용하는 것이 CRS 에 지정
paranoia level checks 1 and 2 를 무시
HTTP request smuggling 생성하기에 충분한 것을 확인

OWASP 의 CRS 와 paranoia level 의 설명 사이트 링크

현재 Aprelium, Squid와 OWASP CRS 에서는 해당 문제에 대한 패치와 대응 방안 발표
Aprelium Abyss 다운로드 사이트 링크 - Abyss X1 v.2.14 

Squid 취약점 대응 사이트 링크 - Squid v.4.12 와 v.5.0.3

OWASP CRS 패치 버전 사이트 링크 - CRS v.3.3.0

연구팀은 프록시 서버로부터 아웃바운드 HTTP request 의 정규화를 요구하면서 HTTP request smuggling 공격을 처리할 수 있는 강력한 솔루션 사용 필요성 강조

CRS 와 결합된 ModSecurity 는 실제로 오픈소스 프로젝트이지만
견고성과 일반성에 있어서 몇가지 단점 포함
이는 HTTP request smuggling 에 대한 완벽한 보호 기능을 제공하지 못함
알려진데로 Apache, IIS, Nginx 에서만 사용 가능

HTTP 헤더형식과 요청 라인 형식을 엄격히 준수하여 들어오는
모든 HTTP request 가 완전히 유효하고 준수하며 모호하게 들어오지 않도록 하는
C++ 기반 라이브러리를 Github 공개

Github 사이트 링크

댓글

이 블로그의 인기 게시물

0xNews - 안드로이드 폰 890만대 이상 사전 감염 확인

0xNews - 미군을 주제로 하여 한국인을 노리는 피싱 공격 캠페인 경고

0xNews - 리눅스 커널에서 StackRot 라는 이름의 취약점으로 권한 상승 취약점 발견