Lael's World


Page Navigation


Post Content

» Posted By Lael Rukius, » Posted In 분류없음, » Reg Date : 2012/01/19 00:52
» Post Url : http://lael.be/435
» Last Modified at 2012/01/19 00:52
우분투 사용자를 대상으로 쓰는 글이다.

 

Denial of Service using Hash tables collisions in PHP


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


PHP의 경우 POST나 GET변수를 Linked-list 처리해서 값을 관리한다.

GET변수의 경우 아파치에서 최대 URL길이 제한이있어서 (제 기억에는 2048자 까지 허용되는 것으로 알고있습니다.) Hashdos 취약대상이 안되고

POST변수는 제한이 없어서 서버가 망할 수 있습니다.


적은수의 요청으로도 CPU가 linked-list 처리하면서 부하가 걸리는 것입니다.


해결책은.

1. (아직 나오지 않은)PHP 5.3.9 이상으로 업그레이드 한다.

OR

2. 우분투 사용자의 경우는 따로 작업할 필요가 없습니다. (이번 취약점의 문제대상이 아님)

우분투 내장된 APT 설치프로그램으로는 PHP설치시 수호신(suhosin)패치를 자동으로 진행합니다.

<?php

phpinfo();

?>


위의 PHP코드를 실행시켜서 나오는 페이지에서 한글로 "수호신" 이라는 글자가 있으면 안전합니다.

수호신의 경우 PHP보안에 저명한 사람이 만든 모듈이라는데 널리 인정되어서 기본패키지 패치에도 적용이 된 것입니다. (한국사람인지는 모름)

이 모듈은 이미 이러한 문제를 인지하고 있었고 기본적으로 POST 변수를 1000개 까지로 제한하고 있습니다.

이 모듈은 PHP4.x 버전에서도 동작합니다.

 

 

요약하자면 우분투 쓰는 유저는 취약하지 않고, 그외 사용자는 phpinfo 해봐서 수호신 모듈 로드 되었나 확인하고 로드 되어있으면 안전한것이고 아니면 수호신모듈 받아서 로드 하세요.



 The Post which treat similar subject 
 GNU Free Documentation License (블로그 글 저작권 규정) You can copy and distribute the Document in any medium, either commercially or noncommercially.
We grants you a worldwide, royalty-free, non-exclusive, sublicensable license.
이 블로그에 게시된 모든 글은 작성자(Lael)의 동의 없이 모든 매체에 대해 발췌 및 상업성 및 비상업성 용도로 사용하는 것을 허가합니다. 불펌 및 무단복제 권장.
2012/01/19 00:52 2012/01/19 00:52

Trackback URL : http://lael.be/trackback/435

Leave a comment