hashtable Attack 정보
- 요약
- POST등으로 값이 넘어온 KEY와 VALUE로 hashtable을 만들게 되는데, 이 때 KEY에 특정 문자열이 들어가면 hashtable을 만들고 검색하는데의 엄청난 시간(CPU사용)이 걸리게 된다.
- 문제있는 문자열
- Ez
- FY
- G8
-
H%17
- 일반적으로는 발생할 수 없다. 왜냐면 넘어온 값의 수가 1000개가 넘고(즉, 엄청나게 많은 수), 문제있는 문자열이 포함되어있어야하기 때문이다.
- 하지만, 이걸로 공격할려고 한다면… 공격되겠지.
-
해결법은 대부분 넘어오는 POST의 갯수를 제한.
- 관련 문서 : http://www.nruns.com/_downloads/advisory28122011.pdf
-
테스트 URL : http://koto.github.com/blog-kotowicz-net-examples/hashcollision/kill.html
-
해결방안 (http://truefeel.tistory.com/206 참고)
- PHP 업데이트 : 5.4.0RC, 5.3.9 이상 버전
-
현재 회사 서버의 PHP 버전은 : .5.2.13 (13 부분은 다를 수 있습니다.)
- 수호신 보안 모듈 사용 (현재 상태에서 추천)
- POST 변수 수를 제한할 수 있음.
-
가장 간단할 것으로 예상
- Apache(웹서버)에서 POST 사이즈 제한
-
이 경우 파일 업로드 등에서 문제가 생김.
- Php.ini 설정 변경
- max_input_time
- post_max_size
-
완벽한 방어가 안됨
- 이 경우 파일 업로드 등에서 문제가 생김.
#테스트
글자 수(ANSI): 1,441,792 (1.3MB)
sar 데이터 파랗게 된 부분에서 CPU하나가 100%를 사용함.
(CPU 8코어, 1코어의 100%는 전체의 12.5%)
10:55:35 all 0.25 0.00 0.51 0.25 0.00 98.99 10:55:36 all 0.00 0.00 0.13 0.00 0.00 99.87 10:55:37 all 0.13 0.00 0.00 0.38 0.00 99.49 10:55:38 all 3.68 0.00 0.76 0.25 0.00 95.30
10:55:39 all 13.07 0.00 0.38 0.00 0.00 86.55 10:55:40 all 12.94 0.00 0.38 0.00 0.00 86.68 10:55:41 all 12.94 0.00 0.38 0.00 0.00 86.68 10:55:42 all 12.94 0.00 0.25 0.00 0.00 86.80 10:55:43 all 13.07 0.00 0.38 0.51 0.00 86.04 10:55:44 all 12.82 0.00 0.13 0.00 0.00 87.06 10:55:45 all 12.80 0.00 0.38 0.00 0.00 86.82 10:55:46 all 12.82 0.00 0.25 0.25 0.00 86.68 10:55:47 all 12.93 0.00 0.38 0.00 0.00 86.69 10:55:48 all 12.96 0.00 0.38 0.38 0.00 86.28 10:55:49 all 12.67 0.00 0.00 0.25 0.00 87.07 10:55:50 all 12.69 0.00 0.13 0.00 0.00 87.18 10:55:51 all 12.91 0.00 0.25 0.00 0.00 86.84 10:55:52 all 12.71 0.00 0.00 0.25 0.00 87.04 10:55:53 all 12.91 0.00 0.25 0.13 0.00 86.71 10:55:54 all 12.96 0.00 0.13 0.13 0.00 86.79 10:55:55 all 12.82 0.00 0.13 0.00 0.00 87.06 10:55:56 all 12.66 0.00 0.13 0.13 0.00 87.09 10:55:57 all 12.72 0.00 0.00 0.00 0.00 87.28 10:55:58 all 12.78 0.00 0.13 0.00 0.00 87.09 10:55:59 all 12.66 0.00 0.00 0.13 0.00 87.22 10:56:00 all 12.74 0.00 0.13 0.00 0.00 87.14 10:56:01 all 16.29 0.00 2.78 0.63 0.00 80.30 10:56:02 all 12.64 0.00 0.00 0.00 0.00 87.36 10:56:03 all 12.63 0.00 0.13 0.00 0.00 87.25 10:56:04 all 12.75 0.00 0.00 0.00 0.00 87.25 10:56:05 all 12.64 0.00 0.13 0.00 0.00 87.23 10:56:06 all 12.75 0.00 0.13 0.00 0.00 87.12 10:56:07 all 12.64 0.00 0.00 0.00 0.00 87.36 10:56:08 all 12.74 0.00 0.25 0.13 0.00 86.89 10:56:09 all 12.64 0.00 0.00 0.00 0.00 87.36 10:56:10 all 12.75 0.00 0.00 0.00 0.00 87.25 10:56:11 all 12.75 0.00 0.13 0.00 0.00 87.12 10:56:12 all 12.75 0.00 0.00 0.00 0.00 87.25 10:56:13 all 12.74 0.00 0.38 0.25 0.00 86.6310:56:14 all 0.63 0.00 0.51 0.00 0.00 98.86 10:56:15 all 0.00 0.00 0.00 0.00 0.00 100.00
#결론 한 번의 공격으로(POST DATA 1.3MB) 34 초간 하나의 CPU를 100% 사용함. 해당 공격으로는 현 시스템에서는 문제가 발생됩니다.