시스템이야기2012. 1. 2. 19:20
먼저 공격 동영상 한편을 보자.

Denial of Service using Hash tables collisions in PHP


hash table collisions버그를 이용해서 PHP로 DoS공격을 하는 예이다. 동영상에서는 약 190초 동안이나 CPU load가 15%정도 올라갔다. H/W사양이나 요청하는 POST값은 다양하니 수치의 의미보다는 load 상승의 심각성을 중요포인트로 생각해야 한다. 이런 비정상 요청 몇개만으로 서비스는 제대로 이뤄지지 않을 수 있다. '단 몇개만'으로.

웹서버에서는 Request POST, GET 변수를 hash 구조로 관리한다. 그런데 POST 요청 파라미터수가 상당히 많을 경우(GET 요청은 길이 제한이 있으므로 문제가 되지 않음)에 hash 충돌이 많이 발생하게 되어 CPU load가 상당히 올라가게 된다. 이런 문제는 PHP5, Asp.Net, Java, V8 자바스크립트 엔진 등에서 발생한다.

PHP의 경우 5.4.0 RC버전과 앞으로 나올 PHP 5.3.9 버전에서 max_input_vars 설정으로 파라미터 개수를 제한할 수 있다.

현재 @hashDoS 트위터( http://twitter.com/hashDoS )에서 이번 취약점에 대한 논의가 있으니 참고하기 바란다.

* php에서 hash table DoS(HashDoS) 공격 방어 (정리해서 올렸습니다. 1.4(수) 오전)
* hashDoS 취약점 관련 글


Posted by 좋은진호

댓글을 달아 주세요

  1. 나중에 기회 되시면 이번 선관위 DDos 공격도 좀 다뤄주세요!
    새해 복 많이 받으세요.

    2012.01.02 20:08 [ ADDR : EDIT/ DEL : REPLY ]
    • 선관위 DDoS는 누구나 다루곳 싶을거에요. 그런데, 정확한 자료 없이 다뤘다가는 ㅠ.ㅠ
      웹로그를 볼 수만 있다면, 공개만 된다면 다루고 싶어요. ^^

      2012.01.02 23:16 신고 [ ADDR : EDIT/ DEL ]
  2. 잘 봤습니다. 참고 하겠습니다.

    2012.01.02 21:59 [ ADDR : EDIT/ DEL : REPLY ]
  3. 여우이

    java 쓰고 있는데 패킷이 200메가급이 밖으로 빠져나가질 못해서 인터넷 다운걸립니다.

    해결책없나요

    2012.01.07 16:44 [ ADDR : EDIT/ DEL : REPLY ]
  4. 파란준이

    좋은 자료 보고 갑니다.
    항상 좋은 부탁드릴께요~^^

    2012.02.07 21:07 [ ADDR : EDIT/ DEL : REPLY ]
    • 예. 감사합니다.
      php로 서비스 중이시면, 꼭 5.3.10으로 업그레이드하세요.
      HashDoS를 패치한 5.3.9버전에는 원격에서 코드를 실행할 수 있는 취약점이 있습니다.

      2012.02.08 08:33 신고 [ ADDR : EDIT/ DEL ]