【SecureIIS Web(2)】〜IISへの攻撃を自動的にシャットアウト〜(執筆:Port139 伊原秀明)
▽編集部より
膨大な被害を及ぼしたNimdaやCodeRedなど、マイクロソフトのIISをター
ゲットとしたワームが多く発生している。これらのワームへの対策としてはIISのセキュリティホールへのパッチあてが必須となってくるが、そのためには頻繁な情報チェックなどの作業が
特集
特集
膨大な被害を及ぼしたNimdaやCodeRedなど、マイクロソフトのIISをター
ゲットとしたワームが多く発生している。これらのワームへの対策としてはIISのセキュリティホールへのパッチあてが必須となってくるが、そのためには頻繁な情報チェックなどの作業が必要となり、その作業は管理者に大きな負担となる。
今回、CodeRedを世界で初めて発見した事で有名なeEye Digital Security社が開発した「SecureIIS Web」はIISの既知および未知のセキュリティホールを狙った攻撃に対応可能であるとのこと。はたしてこのソフトがどこまでの対応が可能であるのかを、WindowsNTに関するセキュリティでは定評のあるPort139の伊原秀明 氏に検証していただいた。
なお、SecureIIS Webの販売に関しては、下記URLをご覧下さい。
http://vagabond.co.jp/cgi-bin/order/mpid01.cgi?siis_scan
―――――――――――――――――――――――――――――――――――(前回よりの続き)
<バッファオーバーフローへの対処>
SecureIISでは、IISへ渡されるリクエストの長さを制限することができる。
SecureIISでは単純にURLとして渡される文字列の長さによる制限を行うだけでなく、クエリー毎に許可する長さを変更することができるようになっている。
デフォルトではURLの長さとしてデフォルトでは1024が指定されており、これより長い文字列がURLに含まれる場合にはリクエストを拒否し警告ページを表示することができる。
例えば、CodeRedでは1024よりは短いが、以下のように長い文字列を送信してくる。
GET /default.ida?XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u9090%u8190%u00c3%u0003%
u8b00%u531b%u53ff%u0078%u0000%u00=a HTTP/1.0
例にあげたCodeRedのリクエストは全体としては1024より短いが、SecureIISのデフォルトではクエリー文字列の最大値として128バイトに制限されてい
る。この為、CodeRedのリクエストはこの最大値により制限を受け拒否されることになる。
実際に上記リクエストをSecureIISのインストールされたIIS 5.0に送信した場合に記録されるSecureIISのログは以下のようになり拒否されていることが確認できる。
Failed in VerifyBufferSize(QUERY - querysize-lastvar:360 /
allowedsize: 128): XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%U9090%U6858%UCBD3%U7801%U9090%U6858%UCBD3%U7801%U9090%U6858%UCBD3%U7801%U9090%U9090%U8190%U00C3%U0003%
U8B00%U531B%U53FF%U0078%U0000%U00=A
さらにSecureIISでは、CodeRedのように文字列全体としてはそれほど長くない場合でもバッファオーバーフローが発生してしまうようなケースへも、シェルコード保護などにより対処できるようになっている。
特に文字列の長さについては、利用するCGIなどのアプリケーションによっては1024より長くなるケースも考えられるが、必要となる文字列の長さがデフォルト値より短いとわかっている場合などはあらかじめその値まで制限しておいた方がより安全である。
バッファオーバーフローへの対策の為に文字列長を制限できる項目は多岐に渡るが、例えばクエーリーとして許可する文字列の長さや、CookieやUser-
Agent、Hostなどのヘッダ値についても最大値を設定することができる。
<シェルコード保護>
SecureIISではCodeRedのように設定された値より短い長さでバッファオーバーフローが発生するようなケースでも、リクエストに含まれる文字列にシェルコードが含まれていないかをチェックすることで、IISを保護することができるようになっている。
Port139 伊原 秀明
http://www.port139.co.jp/
(詳しくはScan本誌をご覧ください)
http:/www.vagabond.co.jp/vv/m-sc.htm
《ScanNetSecurity》