0xNews - HAProxy 에서 HTTP request 공격에 취약하다는 것이 확인

0xNews - HAProxy 에서 HTTP request 공격에 취약하다는 것이 확인


JFrog 발표

https://jfrog.com/blog/critical-vulnerability-in-haproxy-cve-2021-40346-integer-overflow-enables-http-smuggling/


HAProxy 는 많이 사용되는 오픈소스 로드밸런서 및 프록시 서버

심각한 보안 취약점 발견


CVE-2021-40346 지정

CVSS 8.6

정수 오버플로 Integer Overflow 취약점

HAProxy 의 2.0.25, 2.3.14, 2.4.4 등으로 패치 후 배포


해당 취약점은 HTTP Request Smuggling

웹 사이트가 두명 이상의 사용자로부터 수신한 HTTP 요청 시퀸스를 처리하는 방식을 변경하는 웹 애플리케이션 공격

HTTP 비동기화라고도 하는 이 기술은 프런트 엔드 서버와 백 엔드 서버가 보낸 사람의 요청을 처리하는 방식의 구문 분석 불일치를 활용



프런트 엔드 서버는 일반적으로 단일 연결을 통해 인바운드 HTTP 요청 체인을 관리

하나 이상의 백 엔드 서버로 전달하기 위해 웹 사이트에서 사용하는 로드 밸런서 혹은 역방향 프록시

따라서 서버가 한 요청이 끝나는 위치와 다음 요청이 시작되는 위치를 결정할 수 있도록 요청이 양쪽 끝에서 올바르게 처리되는 것이 중요

실패하면 한 요청에 추가된 악성 콘텐츠가 다음 요청 시작 부분에 추가되는 시나리오가 발생할 수 있음


즉, 프런트 엔드, 백 엔드 서버가 Content-Length, Transfer-Encoding 헤더를 사용

각 요청의 시작과 끝을 처리하는 방식에서 발생하는 문제로 인해 Rogue HTTP 요청의 끝이 잘못 계산

한 서버에서 악성 콘텐츠를 처리하지 않고 체인의 다음 인바운드 요청의 시작 부분에 접두어를 붙임


특히 Content-Length 헤더를 처리하는 로직에서 HTTP 요청을 구문 분석하는 동안 HAProxy 에서 예기치 않은 상태에 도달할 수 있는 정수 오버플로 취약점을 활용하여 공격이 가능함을 확인


가상 공격 시나리오에서 사용자가 악의적인 요청을 차단하기 위해 HAProxy 에 의해 정의된 ACL Access Control List 규칙을 우회하는 것을 가정하여 공격 수행 테스트

HTTP Request Smuggling 의 트리거 역할에 사용되는 것을 확인


HAProxy 에서는 Name and Value length 등의 크기 검사를 추가하여 취약점 수정


HAProxy 개발팀에서의 이번 취약점 수정에 대한 github 을 통한 조치 발표

https://github.com/haproxy/haproxy/commit/3b69886f7dcc3cfb3d166309018e6cfec9ce2c95


HAProxy 관리자와 사용자는 버전 업그레이드할 것을 권고

업그레이드가 불가하다면 프록시 구성에 다음 스니펫을 추가하는 것을 권고


http-request deny if { req.hdr_cnt(content-length) gt 1 }

http-response deny if { res.hdr_cnt(content-length) gt 1 }


댓글

이 블로그의 인기 게시물

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

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

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