Wins blog

글로벌 정보보안 파트너! Global Security  No.1 윈스는 국가대표 정보보안 기업에서 글로벌 강소기업으로 도약합니다.

보안 정보

앞 내용 보기 다음 내용 보기
취약점 정보[CVE-2016-8740] Apache mod_http2 module DoS 분석
작성일 2017-01-24 조회 883

1. 개요

Apache HTTP 서버에 서비스 거부 취약점이 존재한다.

이 취약점은 HTTP/2 프로토콜을 사용하여 리소스에 액세스 할 때 요청 헤더 크기에 대한 부적절한 유효성 검사가 원인이다. 원격의 인증되지 않은 공격자는 서버의 사용 가능한 메모리보다 큰 헤더로 구성된 HTTP/2 요청을 전송한다.

공격 성공시, 서버의 사용 가능한 모든 메모리를 사용하여 서버에서 서비스 거부 상태가 발생한다.

취약버전은 Apache Software Foundation HTTP Server 2.4.17 to 2.4.23 이다.

 

2. 취약점 확인 내역

Apache HTTP 서버는 다양한 런타임로드 가능 플러그인 모듈을 사용하여 기능 확장이 가능하다.

HTTP/2 지원을 위한 플러그인 모듈인 mod_http2 모듈을 사용하는 경우에만 취약하다.

 

해당 취약점은 유효하지 않은 헤더 필드(헤더 필드의 크기가 허용된 최대 헤더 필드 크기보다 크거나 헤더 필드 수가 헤더 필드의 최대 허용 개수일때) 를 수신하게 되면 오류 응답이 생성되게 되는데, 테이블에 헤더필드를 추가 할 때 오류 응답을 확인하지 않고 추가하기 때문에 테이블 크기가 커져서 프로스세 메모리가 지속적으로 소모되게 된다.

공격자는 서버의 사용 가능한 메모리보다 큰 헤더로 구성된 HTTP/2 요청을 전송하여 DoS 상태를 일으킨다.

패치전에는 오류 응답을 확인하는 부분이 존재하지 않으며, 이로 인해 오류 응답이 발생하여도 retrun 구문을 통해  테이블에 헤더필드를 추가하게 된다.

[그림1. 패치 내역에서 확인한 취약점 발생 부분]

 

3. Exploit 확인

공개된 POC를 이용하여 Exploit을 진행하였다.

[그림2. 공개된 POC 중 취약점 트리거 부분]

 

발생 패킷 확인 결과 HEADERS 프레임 이후에 엄청난 양의 CONTINUATION 프레임 을 추가하여 HTTP/2 요청을 크게 만드는걸 확인 할 수 있다.


[그림3. 발생 패킷 확인 내역]

 

4. 정리

본 게시글에서 Apache mod_http2 module 에서 발생한 Denial of Service 취약점에 대해 알아보았다.

해당 취약점을 이용하여 공격하는 방법은 간단하나, Apache의 mod_http2 모듈을 사용하고 있는 상태이어야 하기 때문에 파급력은 크지 않을것으로 판단된다.

그러나 취약점에 대한 POC가 공개된 만큼 HTTP2를 사용하기 위해 mod_http2 모듈을 사용하고 있는 관리자라면 최신 버전으로 업데이트가 필수적이다.

 

5. 대응 방안

1) 취약점이 패치된 최신버전으로 업데이트 한다.

 

2) Sniper IPS에서는 아래와 같은 패턴으로 대응 가능하다.

[IPS 패턴 블럭] : 3389, Apache mod_http2 module Denial of Service


6. 참고

https://www.exploit-db.com/exploits/40909/

https://www.apache.org/dist/httpd/Announcement2.4.html

https://github.com/apache/httpd/commit/29c63b786ae028d82405421585e91283c8fa0da3

첨부파일 첨부파일이 없습니다.
태그 Apache  mod_http2  DoS  HTTP/2