B 社は,セキュリティ診断サービスを提供している会社である。このたび,転職支援サービスを提供している M 社から,転職支援 Web サイト(以下,M サイトという)のセキュリティ診断を受注した。
M サイトを利用する求職者は,氏名,自宅住所,電話番号,勤務先などの求職者属性情報と,希望職種,希望条件などの求職情報を入力する。求人企業は,会社情報,求人情報,求人担当者の氏名,所属部署などの情報を入力する。
M サイトは,機能を追加した新しいバージョンの Web アプリケーションプログラム(以下,M サイトの Web アプリケーションプログラムを Web アプリという)の開発が完了したところであり,リリース前である。
〔セキュリティ診断の診断対象と診断方法〕
今回のセキュリティ診断の診断対象と診断方法は,図 1 のとおりである。
【診断対象】
・M サイトには本番用サイトと検証用サイトがあり,診断対象は M サイトの検証用サイトとする。検証用サイトには,開発が完了した新しいバージョンの Web アプリが導入されている。なお,本番用サイトと検証用サイトは,同一の構成である。
・検証用サイトでは,アクセス元の IP アドレスを制限している。診断に当たり,B 社からも検証用サイトにアクセスできるように,検証用サイトの設定を変更する。
・検証用サイトには,テスト用疑似データが投入されている。
【診断方法】
・B 社の社内にある診断用 PC からインターネットを経由して診断を行う。
・Web アプリの脆弱性の検出を行う。
・Web アプリの脆弱性の検出は,診断ツールと診断員の手作業で行う。
・診断に当たり,必要に応じて M サイトの設計書を参照する。
図1 診断対象と診断方法
診断の際に参照した,M サイトの設計書中の画面遷移図を図 2 に,各画面の URL を
表 1 に示す。
〔セキュリティ診断報告書〕
B 社は,セキュリティ診断を実施し,図 3 の診断報告書を作成した。
診断報告書
1 章 診断結果概要(省略)
2 章 Web アプリケーションプログラムの診断結果
2.1 検出した脆弱性の概要検出した脆弱性は,表 A のとおりである。
2.2 検出した脆弱性の説明
2.2.1 セッションフィクセーション
(1) 脆弱性の内容 M サイトでは form 内の hidden フィールドである sessionID の値だけでセッション管理を実施していた。しかし,表 B のいずれの画面遷移においても,HTTP レスポンス中の sessionID の値が同一であった。
攻撃者が図 A の手順でこの脆弱性を悪用すると,M サイトに不正にログインすることができる。
手順 1:求人企業への問合せ先として登録したメールアドレスを,何らかの方法で入手する。
手順 2:URL“ __a2__ ”にアクセスして,sessionID を入手する。
手順 3:次の二つの要素を含む HTML を作成する。
- 手順 2 で入手した sessionID を記述したフォーム
- 当該 HTML が Web ブラウザに読み込まれた直後に,上記のフォームを URL“ __a2__ ”に POST メソッドで送信するスクリプト
手順 4:手順 3 で作成した HTML を,罠サイトに置く。
手順 5:手順 4 の HTML へのリンクを含むメールを作成し,手順 1 で入手したメールアドレスに送信する。
手順 6:手順 5 のメールがメール受信者に届き,罠サイトにアクセスするのを待つ。
手順 7:罠サイトへのアクセスを検知後, __b__ が完了することを期待して数分間待ち,手順 2 で入手した sessionID を指定した状態で,URL“ __a2__ ”にアクセスする。
図A セッションフィクセーション脆弱性を悪用して不正ログインする手順
攻撃者が,セッションフィクセーション脆弱性を悪用して不正ログインに成功し,画面
02 で応募者確認ボタンをクリックして,当該企業の求人に応募した求職者の求職者属性情報と求職情報を閲覧できる。また,同じ画面 02 で問合せ確認ボタンをクリックして,当該企業に問合せを行った求職者の求職者属性情報と問合せ内容を閲覧できる。
(2) 脆弱性の修正方法__a1__ の画面遷移の際に実行されるコードにおいて, __c__ ことを推奨する。
(省略) B 社は,M 社に診断報告書を提出し,セキュリティ診断を完了した。
設問2 次の動作のうち,図 A 中の __b__ に入れるものはどれか。

表1 各画面のURL
画面番号 | URL |
|---|---|
01,02 | https://test.△△△.jp/ |
03 | https://test.△△△.jp/mypage |
04,05 | https://test.△△△.jp/pwchange |
06,07 | https://test.△△△.jp/pwreset |
08,09 | https://test.△△△.jp/pwreset/x |
表A 検出した脆弱性の一覧
項番 | 重要度 | 脆弱性の種類 | 検出箇所 |
|---|---|---|---|
1 | (省略) | セッションフィクセーション | 画面遷移【a1】 |
2 | (省略) | メールヘッダーインジェクション | (省略) |
3 | (省略) | HTTPヘッダーの不備 | 全ての画面遷移 |
表B セッションフィクセーション脆弱性の確認
画面遷移 | HTTPレスポンス中のsessionID |
|---|---|
URLを直接入力して画面01を表示 | 764b2ac2-0452-49e4-92a7-0914fa005011 |
画面遷移(ア) | 同じsessionID |
画面遷移(イ) | 同じsessionID |
画面遷移(エ) | 同じsessionID |
選択肢 | |
|---|---|
ア | メール受信者によるMサイトへのログイン |
イ | メール受信者によるパスワードの再設定 |
ウ | メール受信者による罠サイトへのログイン |