Wins blog

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

보안 정보

앞 내용 보기 다음 내용 보기
취약점 정보[CVE-2017-9798] OptionsBleed, OPTIONS Method UAF
작성일 2017-09-26 조회 2709
※ 해당 내역은 9월 26일 시큐어캐스트에 공개한 보고서(AE17-0033)를 기반, 외부 공개용으로 작성
 
 
개요
Apache HTTP 서버에서 “.htaccess” 구성 파일의 Limit 설정을 잘못 처리하여 메모리 누수(Use-After-Free) 가 발생하는 취약점이다.
 
원격 공격자는 취약한 서버에 “OPTIONS” 메소드를 이용한 HTTP Request 구문을 전송하고 서버는 요청에 대한 응답으로 메모리에서 일부 데이터를 표시하게 되어 악용이 가능하다.
 
Hanno Bock 이라는 연구자가 광범위한 OPTIONS Scan 중에 일부 서버에서 비정상적인 “Allow” 필드 응답값을 확인하여 발견하게 되었으며, Heartbleed 취약점과 동일하게 특정 요청에 의해 발생되고, 메모리 누수가 되어 Optionsbleed 라는 이름을 가지게 되었다.
 
본 보고서에서는 취약점에 대한 정보를 분석하고 고객에게 근본적인 대응방안과 자사의 장비를 활용하여 악성 트래픽에 대한 탐지/차단이 가능한 패턴 및 사용자 정의 패턴을 제공한다.
 
 
취약점 정보
▶ CVE-ID
CVE-2017-9798
 
▶ 취약점 종류
메모리 접근 오류(MEMORY ACCESS ERROR)
 
▶ CVSS Score
5.9 (CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N)
 
▶ 영향 받는 제품
Apache HTTP Server 2.2.34
Apache HTTP Server 2.4.X – 2.4.27
 
 
원인 분석
해당 취약점에 대해 Apache에서 제공한 Optionsbleed 용 패치 내역을 통하여 원인을 확인 해 볼 수 있다.
- 실제 패치 된 내역을 보면 server/core.c 파일의 ap_limit_section 함수에 특정 부분을 변경 한 것을 확인 가능 하다.
 
 
패치 된 내역을 확인 해 보면 “.htaccess” 에 정상적이지 않은 메소드가 등록되어 있는 경우 에러를 표시하게 변경하였다.
- RFC7231 규약에서 정의한 표준화 된 메소드는 아래와 같다.
[GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE]
 
 
[그림 1. 패치 내역]
 
 
공격 재연
본 취약점에 대해 Hanno Bock  연구원이 공개한 POC를 이용하여 재연 하였다.
해당 POC 이외에도 간단한 Curl 구문으로도 확인이 가능하다.
- for i in {1..100}; do curl -sI -X OPTIONS http://www.test.com/|grep -i "allow:"; done
 
 
[그림 2. POC 내역]
 
Apache 서버에서는 아래와 같이 정상적이지 않은 메소드인 “win_soc_wsec” 를 설정하였다.
- 정상적인 구문은 <Limit method1 method2 …> 형태
 
[그림 3. Apache 서버 설정 내역]
 
해당 POC 스크립트를 이용하여 공격 결과 아래와 같이 메모리 유출을 확인 할 수 있다.
- Apache 서버에 설정된 비정상적인 메소드의 문자열 및 요청 횟수에 따라 유출되는 내역이 다름
 
[그림 4. 공격 성공 내역]
 
발생 되는 패킷을 확인 해보면, 공격자가 요청한 OPTIONS 메소드에 대해 피해자가 Allow 필드를 이용하여 허용 가능한 메소드를 표시해주는데, 해당 값에 적절하지 않은 값이 포함되어 있는 것을 확인 가능 하다.
 
- 패킷 내역은 SecureCAST 에서 확인 가능
 
취약한 Apache 서버에서 확인 가능한 Allow 필드 내역 샘플
Allow: ,GET,,,POST,OPTIONS,HEAD,,
Allow: POST,OPTIONS,,HEAD,:09:44 GMT
Allow: GET,HEAD,OPTIONS,,HEAD,,HEAD,,HEAD,, HEAD,,HEAD,,HEAD,,HEAD,POST,,HEAD,, HEAD,!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
Allow: GET,HEAD,OPTIONS,=write HTTP/1.0,HEAD,,HEAD,POST,,HEAD,TRACE
 
 
대응방안
연구원이 해당 취약점을 Scan 하여 확인 한 결과 1,000,000 개의 웹서버 중에 매우 적은 466 개의 웹서버가 취약한 것으로 확인 되었지만, 여러 도메인을 호스팅하는 서버에서 한 명의 악의적인 사용자의 잘못된 구성으로 여러 도메인이 취약할 수 있으므로 주의를 기울여야 한다.
 
1. OPTIONS 메소드에 대해 필터링 한다.
 
2. Apache 서버에서 .htaccess 파일을 이용한 설정을 하지 않는다.
일반적으로 Apache 에서는 htaccess 파일을 이용하는 것 보다 주 설정 파일의 설정을 이용하는 것을 권장하고 있다.
https://httpd.apache.org/docs/current/howto/htaccess.html
 
3. Apache 서버에서 .htaccess 파일을 이용하는 경우 Limit 설정에 정상적인 메소드를 입력하였는지 검수한다.
 
4. OptionBleed 패치를 적용 한다.
https://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/server/core.c?r1=1807754&r2=1807753&pathrev=1807754&diff_format=u
 
 
WSEC 에서는 End user(실사용자)가 벤더사의 보안패치를 적용하여 메모리 손상이 발생하는 근본 위협 제거를
권장하며 POC 에 기반한 악성트래픽을 탐지/차단할 수 있는 패턴 및 사용자 정의 패턴을 제공한다.
 
ㆍIPS 패턴
WEBCGI : [5855] WebDAV OPTIONS Method 
 
ㆍ사용자 정의 Snort 패턴 
- SecureCAST 에서 확인 가능
 
 
참고
https://blog.fuzzing-project.org/60-Optionsbleed-HTTP-OPTIONS-method-can-leak-Apaches-server-memory.html
https://github.com/hannob/optionsbleed/blob/master/optionsbleed
https://httpd.apache.org/docs/current/howto/htaccess.html
https://tools.ietf.org/html/rfc7231#section-4.3.7
https://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/server/core.c?r1=1807754&r2=1807753&pathrev=1807754&diff_format=u
첨부파일 첨부파일이 없습니다.
태그   Optionsbleed  CVE-2017-9798  OPTIONS