0xNews - HAProxy 에서 HTTP request 공격에 취약하다는 것이 확인
0xNews - HAProxy 에서 HTTP request 공격에 취약하다는 것이 확인
JFrog 발표
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 }
댓글
댓글 쓰기
글과 상관없는 댓글 작성은 발견 즉시 삭제합니다.