HTTP/2 Rapid Reset DoS공격
Posted on Friday, January 12, 2024.
HTTP/2 프로토콜을 이용한 서비스거부공격(DoS)에 대한 대처가 필요하다.
통신구간이 암호화되어 프라이버시는 좋아졌지만 보안장비를 우회한 네트워크 침투가 용이해진 것 처럼 HTTP/1에서 HTTP/2로 프로토콜 성능이 개선됨에 따라 보통 사용자뿐만 아니고 공격자의 전송성능이 올라가서 DoS가 쉽게 되었다.
CVE-2023-44487은 2023년 10월 10일 발표된 취약점으로
HTTP/2 프로토콜에서 공격자가 요청을 보내고 즉시 해당 요청을 끊어 총 요청수 제한을 회피함으로써
서비스 거부 공격을 쉽게 할 수 있다는 내용으로 HTTP/2 Rapid Reset
공격으로 불리운다.
HTTP/1는 하나의 네트워크 연결에서 요청-응답 사이클로 정보를 전송한다. 카페에서 줄을 서고, 맨 앞 사람이 주문하면 커피가 나올때까지 해당 줄은 대기한다. 좀더 빨리 처리하기 위해서 줄을 여러개를 운영하는 것이 HTTP/1.
HTTP/2는 주문을 받으면 대기표를 준다. 커피를 받는 순서는 주문 순서가 아니고 커피가 제조되서 나오는 순서이다. 줄 하나에 수백개의 주문을 바리스타에게 전달할 수 있다. 바리스타가 처리할 수 있는 양은 한정되어 있을 것이므로 주문하는 대로 모두 받다보면 카페는 마비된다. 그래서 총 대기표의 수를 제한하고, 대기표가 모두 배부되었으면 그때부터는 주문자들은 자신이 주문할 수 있을때까지 줄에서 기다려야한다. 이것이 HTTP/2.
이번 HTTP/2 Rapid Reset
공격에서는 공격자가 줄을 서고, 주문하고, 바리스타에게 주문이 들어갈때쯤 (굉장히 짧은 시간이므로 주문 하자마자 즉시) 주문을 취소하고 대기표를 반환한다. 총 대기표의 수가 제한되어 있지만 주문을 하자마자 취소하였으니
제한된 수를 넘지 않고, 착한 캐셔는 계속 주문을 받는다. 공격자가 아닌 일반 고객들은 그들의 줄에서 나오지 않는 커피를 한정없이 기다리게된다.
HTTP/3도 표준이 된 지금 HTTP/2는 이미 안정화상태이고 많은 웹 서버, WAS서버등에서 기본적으로 활성화하고 있다. 따라서 nginx, apache는 물론이고, tomcat, go-grpc등, 대중에 노출된 서버라면 이번 공격에 대해서 취약점이 해결된 버젼으로 업그레이드 하는 것이 필요하다.