応用情報技術者試験 過去問 2011年(平成23年) 秋期 午後 問9

Webアプリケーションのセキュリティ対策

W社は、インターネット上で日用雑貨品の会員制通信販売システムを運営する会社である。この通信販売システム(以下、本システムという)は、商品検索、注文、会員管理、会員掲示板などの機能を提供する。

本システムの機能を利用するには、あらかじめ会員管理機能を使って、会員登録しなければならない。

図1は、会員掲示板機能を使った会員掲示板画面の例である。

会員掲示板画面の例
図1 会員掲示板画面の例

ある日、会員情報が知らぬ間に書き換わっていたり、覚えの無い商品が届いたりしたとのクレームが複数の会員から寄せられた。情報システム部門で本システムを調べたところ、クレームに該当する登録情報の変更処理や商品の注文処理が確認された。

情報システム部門の責任者であるA部長は、セキュリティ事故が発生したと判断して、本システムの利用を直ちに停止し、外部のセキュリティ専門会社の支援を受けながら対策をとることを指示した。

後日、外部のセキュリティ専門会社から、今回のセキュリティ事故に関する調査報告書が届けられた。調査報告書に記載された内容は、次のとおりである。

セキュリティ事故の経過

  1. 会員Xは、本システムのトップ画面から、会員ログインページへのボタンを押した。
  2. 本システムは、ログイン画面を表示した。
  3. 会員Xは、ログイン画面で、自身のアカウント名とパスワードを入力した。
  4. 本システムは、アカウント名とパスワードを確認して、セッションIDを発行し、cookieを利用して会員のブラウザに戻した。
  5. 会員Xは、会員メニュー画面で、会員掲示板機能を選択した。
  6. 本システムは、会員掲示板画面を表示した。
  7. 会員Xが、特定の会員掲示板ページを参照したときに、悪意のあるコードが自動的に実行され、会員Xの登録情報を書き換える処理と、注文処理が行われた。

想定される原因

  1. 会員掲示板ページを出力する処理に問題があり、この問題を悪用した<scriptタグを用いた悪意のあるコードが、会員掲示板ページに埋め込まれた形跡があった。
  2. ログインした会員が、この悪意のあるコードが埋め込まれた会員掲示板ページを参照すると、そのコードが自動的に実行され、会員の登録情報を書き換える処理や特定の商品の注文処理が行われるようになっていた。

原因から想定される脅威

  1. 登録情報や会員掲示板情報に対して、ログインした会員が予期しない処理を勝手に実行させられることによって起こる情報の改ざん
  2. ログインした会員が予期しない注文処理を勝手に実行させられることによって起こるサービスの悪用

対策の提言

  1. 入力された文字列は、そのままではなく、エスケープ処理を適切に施してからブラウザに表示する。入力データに"<"、">"、"&"などのHTMLの特別な記号文字が存在した場合、その記号文字が有する特別な働きを無効にする文字や文字列に置き換える。例えば、">"は"&gt;"、"<"は"&lt;"、"&"は"&amp;"とする。これによって、タグの文字列"<script>"は、文字列"&lt;script&gt;"に置き換わる。
  2. 特に、会員情報の登録処理や注文処理のような重要な処理を実行するページにはaメソッドでアクセスするようにし、そのhiddenパラメタに秘密情報(ページトークン)が挿入されるように、前のページを自動生成する。実行ページでは、その値が正しい場合だけ処理を行う。もしaメソッドの代わりにbメソッドでアクセスすると、秘密情報をURLに付加して送信することになるので、ここでは利用を避けるべきである。また、HTMLフォームで<formタグを用いる場合、メソッド属性の指定を省略するとbメソッドと解釈されるので、適切に指定する必要がある。

今回のように、ログインした会員だけが、予期しない処理を実行させられてしまうセキュリティ攻撃は、クロスサイトリクエストフォージェリーと呼ばれている。

この攻撃が成功する主たる要因は、会員の正しい要求と悪意のあるコードの要求を区別できないことである。

この後、A部長は、外部のセキュリティ専門会社の提言に従い、今回のセキュリティ攻撃の根本的な原因を解消すべく、本システムの改善を行うことにした。

提言された対策(1)を本システムの全てのプログラムに適用し、その上で重要な処理を行う注文機能と会員管理機能に対して、提言された対策(2)を適用した。会員登録時における本システムと会員のブラウザとの間の情報の流れは、図2のとおりである。

会員管理機能の流れ
図2 会員管理機能の流れ
出典:平成23年度 秋期 応用情報技術者試験 午後Ⅰ 問9