jjun님이 글을 쓰셨으니 간단하게만 몇가지 언급하겠다.
'아파치 웹서버 무력화시킬 심각한 DoS 결함 발견' 기사에는 mod_deflate또는 mod_gzip 모듈과 관련이 있는 것으로 쓰여있지만, 이 모듈과는 무관하게 취약점이 존재한다. 해당 모듈을 주석처리해도 악의적인 Range 헤더 요청에 대해 똑같은 문제가 있으며, 아파치 메일링 리스트에서도 이 모듈을 언급한 것은 잘못된 판단이었다고 한다.
* Bug 51714 - Byte Range Filter might consume huge amounts of memory combined with compressed streams
웹페이지 size에 따라서, Range 헤더의 문제가 발생할 수도 있고 없을 수도 없다.
1) mod_php5모듈이 없다면 웹페이지 size에 상관없이 문제가 있다.
2) mod_php5모듈과 함께 아파치를 동작중이라면 8000bytes 이하의 웹페이지를 요청할 때만 문제가 발생한다. mod_php5 모듈이 있더라도 php로 인식하지 않는 확장자(예를 들어 .css, js, .txt 등)는 사이즈에 상관없이 문제가 있다.
따라서 index페이지만 체크하고 '우리는 문제가 없네'라고 판단해서는 안된다. php로 된 index가 8000bytes를 넘는다면, 취약점이 없는 것으로 보일 수 있기 때문이다.
Request 헤더에 Range: bytes=0-,1-2,2-3,4-5 같은 형태로 요청했다고 가정하자.
0-은 해당 웹페이지의 시작부터 끝까지를, 1-2는 웹페이지의 2번째~3번째 문자(0부터 시작하니깐 1-2는 2~3번째)를, 나머지도 같은 의미이다. 일반적으로 콤마(,)로 구분해서 여러 필드를 요청하는 경우는 없다라고 생각하면 된다.
[ 아파치 설정에서 Range헤더에 콤마를 제한하는 예 ]
RequestHeader unset Range env=bad-range
따라서 위처럼 5개 필드 이상(콤마가 5개 이상)인 경우만 제한해도 좋고, 간단하게 콤마(,)가 포함된 경우를 차단해도 무방할 것으로 보인다.
곧 패치버전이 나올 것이다. 하지만 그 때까지는 L7장비 또는 웹서버에서 Range 헤더 조건 강화하는 방법으로 차단해야 할 것이다.
* 관련글 :
- Mitigation of Apache Range Header DoS Attack
- DoS with mod_deflate & range requests
* 내용 추가 (2011.8.31(수) 점심)
- Release 정보 : http://www.apache.org/dist/httpd/Announcement2.2.html
- 다운받기 : http://ftp.daum.net/apache/httpd/
'시스템이야기' 카테고리의 다른 글
웹서버 hash table DoS(HashDoS) 공격 (중요. PHP, ASP 등 해당) (7) | 2012.01.02 |
---|---|
아파치 웹서버, DoS 취약점 해결한 버전 발표 (2) | 2011.08.31 |
로그 분석 및 실시간 검색의 강자, Splunk 맛보기 (5) | 2011.04.08 |
rsync에서 특정 퍼미션으로 고정하기 (3) | 2011.03.17 |
DNS 요청에 대한 TimeOut시간의 진실은. (0) | 2010.11.11 |