
第1回 機密情報に合法的に近づけるWebアプリケーションを守れ
草薙 伸
伴 崇博
F5ネットワークスジャパン株式会社
2005/8/17
「SQLインジェクション」や「クロスサイトスクリプティング」という用語に聞き覚えはないだろうか。セキュリティに関連する用語であることを知る人は多くても、詳細な説明をできる人はまだ少ないかもしれない。どちらもWebアプリケーションの脆弱性を指す用語である。
個人情報の保護に関する法律(個人情報保護法)の施行によって、より多くの注目を集めるようになった個人情報漏えいに関するニュースが毎日のように流れている。漏えいした個人情報が、もしWebサイトから盗み出されたものであれば、原因はSQLインジェクションであった可能性がある。
この連載では、Webアプリケーションの脆弱性、攻撃手法の実例を挙げて解説するとともに、その脆弱性を防御する装置として市場に現れたWebアプリケーションファイアウォール(WAF:ワフと発音)を使用した防御方法について説明する。Webアプリケーションセキュリティを専門とする方以外も対象として、できる限りやさしい内容を心掛けるつもりである。
|
Webアプリケーション設計は |
現在、ありとあらゆるアプリケーションはWeb化される傾向にある。クライアントにWebブラウザがインストールされていれば使用できるWebアプリケーションの利便性については語るまでもないことであるが、攻撃者のターゲットとしてもWebアプリケーションは魅力的である。その理由を簡潔に述べるなら、“機密情報に近い位置まで、合法的に忍び寄ることができるから”である。
ほとんどのWebアプリケーションにおいて、どんなユーザーでも、Webブラウザからデータベースへなんらかのトランザクションを発生させることができる。もちろん、通常の動作をする限りは定められた情報しかデータベースから取り出せないが、膨大な機密情報まであと一歩のところまで極めて合法的にたどり着ける。
図1は簡単なWebシステムの概略図である。クライアントはWebサーバに対して大きく分けて静的コンテンツへのリクエスト(HTML、GIF、JPGなど)と動的コンテンツへのリクエストを送信する。ここでは動的コンテンツへのリクエストの例としてCGI(Common Gateway Interface)を挙げる。
![]() |
| 図1 Webシステムの概略 |
CGIはWebサーバ上の任意のプログラムを実行するための仕組みだ。まず、Webサーバはクライアントからのリクエストに含まれるパラメータをプログラムに渡す。プログラムは受け取ったパラメータの内容に応じた実行結果のHTMLを生成してWebサーバに返し、それがクライアントに表示される。また、プログラムの処理の中でデータベースへのアクセスが発生するケースでは、パラメータの内容がデータベースに対して発行するSQL文の一部となる。
ここで忘れてならないのは、ユーザーはWebアプリケーション開発者の意図どおりに行動するとは限らないということである。Webアプリケーションにおいてユーザーに渡される情報はHTMLである。通常、HTMLは平文であり、基本的な知識さえあれば誰でもHTMLソースからWebページの構造を把握できる。どのアプリケーションに対して、どのようなデータが送信されるのかを、ユーザーはHTMLソースから判断できるのである。
図2の赤枠で囲まれた部分はログイン認証に使用されるフォームである。このWebページのソースのうち、赤枠部分に関連する部分を抜き出したものが以下のものである。
![]() |
| 図2 ログイン認証用フォーム |
|
|
| HTMLソース(抜粋) |
このHTMLからは以下のことが分かる。
パラメータの送信先:login.php
使用するHTTPメソッド:POST
パラメータの種類と属性:
| コントロールの種類 | 名前 | 文字数 | 値 |
|---|---|---|---|
| テキスト | username | 8 |
ユーザー入力値 |
| テキスト (マスク表示) |
password | 8 |
ユーザー入力値 |
| 送信ボタン | action | - |
Go! |
HTMLソースを眺めるだけで、これだけの情報が取り出せるわけである。あるCGIに対してユーザーがデータを送信するとき、送信データの内容をユーザー側でいくらでも加工できる、という認識を持たなければならない。その加工したデータから、攻撃者はWebアプリケーション開発者が想定しないトランザクションを発生させる。
データを加工するとき、高度な知識はまったく必要としない。簡単な例を挙げるならば、表示したWebページをローカルマシンに保存し、HTMLを編集すればCGIに送信するデータの内容を書き換えることができる(後述のHiddenフィールドマニピュレーションを参照)。
Webアプリケーションの脆弱性はユーザー行動に関する過度の信頼から発生することが多い。ユーザーを過度に信頼してはならない。インターネットに接続するWebアプリケーションに限らず、社内システムであっても同様である。
|
1/3
|
|
| Index | |
機密情報に合法的に近づけるWebアプリケーションを守れ |
|
| Page1 Webアプリケーション設計はユーザーを過度に信用すべからず |
|
| Page2 Webアプリケーションセキュリティとネットワークセキュリティの隙間 セキュアプログラミングの限界 |
|
| Page3 ネットワークセキュリティ製品がいかに無力であるか Webアプリケーションのつくりが理解できない |
|
Webアプリケーションファイアウォールの必要性 バックナンバー
- 第1回 機密情報に合法的に近づけるWebアプリを守れ
- 第2回 多様化するWebアプリケーションへの攻撃
- 第3回 WAFはどのように脆弱性を防御するのか
- 最終回 WAFのセキュリティレベルとパラメータ設定
| 関連記事 |
| Webアプリケーションに潜むセキュリティホール |
| クロスサイトスクリプティング対策の基本 |
| Webサイト運営者のセキュリティ確保の心得 |
| Security&Trust記事一覧 |
TechTargetジャパン
- Facebook タイムライン利用時の「鉄則」 (2012/2/9)
ユーザーインターフェイスの変更措置に伴い浮上した、Facebookの「過剰な情報提供」のリスクと対策とは - 無料サービスなら通信内容を記録してもいいの? (2012/1/13)
無料の公衆無線LANサービスが、ユーザーに無断で通信履歴を記録していたことが判明し、話題に - 攻撃はまるでレーザービーム (2011/12/26)
2011年に話題となった標的型攻撃は「人」という弱点ををねらい打ちにしました。では、人に教育さえしておけば防げるものなのでしょうか? - 見せたくないなら「持たせない」が鉄則! (2011/12/15)
逆コンパイル対策で難読化したのに、大事なデータが解析されちゃった? Androidアプリのセキュリティの道は深い
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


