Webサイトのセキュリティに関する次の記述を読んで,設問に答えよ。
F社は,日用雑貨を製造・販売する中堅企業である。このたび,販路拡大を目的として自社製品を販売するWebサイト(以下,本システムという)を新規に開発した。本システムは,D社クラウドサービス上に構築しており,Webサーバとデータベース(以下,DBという)サーバから成り,D社クラウドサービスが提供するファイアウォール(以下,FWという)及びWebアプリケーションファイアウォール(以下,WAFという)を経由してインターネットからアクセスされる予定である。
本システムの開発環境のネットワーク構成(抜粋)を図1に示す。なお,本システムはリリース前であり,F社開発環境の特定のIPアドレスからだけアクセスできるようにFWで制限している。

図1 本システムの開発環境のネットワーク構成(抜粋)
本システムの主な仕様を次に示す。
・会員登録時に自動で発行される会員番号と会員が設定したパスワードをログインフォームに入力してログインする。商品の購入はログイン後に行う。
・パスワードとして使用できる文字は,英数字に一部の記号を加えた70種類である。
・パスワードは,6字以上16字以下で設定する。
・会員テーブルは,会員番号,メールアドレス,パスワードのハッシュ値,姓名,住所,電話番号の7フィールドで構成されている。①パスワードのハッシュ値は,会員が設定したパスワードをハッシュ関数によってハッシュ化したものである。
F社情報セキュリティ部のG部長は,本システムのリリース前にペネトレーションテストを実施することを決定し,H主任をリーダーに任命した。H主任は,セキュリティベンダーであるU社に本システムのペネトレーションテストの実施を依頼した。ペネトレーションテストは,U社内のPCからインターネット,FW及びWAFを経由して本システムにアクセスする経路で実施した。
ペネトレーションテスト期間中は,FW及びWAFに対して次の変更を行った。
・FWに対する変更
通信を許可するアクセス元IPアドレスとして,ペネトレーションテストに用いるU社のIPアドレスを追加する。
・WAFに対する変更
攻撃を検知した際には,通信の遮断は行わず,検知したことだけを記録する。
〔ペネトレーションテストの結果〕
ペネトレーションテストの結果,次の手順(以下,本シナリオという)で会員のパスワードが推測されて,不正にアクセスされてしまうことが確認された。
1.②SQLインジェクション攻撃によって会員テーブルのデータを取得する。このとき取得した会員テーブルのデータ(抜粋)を表1に示す。
2.レインボーテーブル攻撃によって,手順1で取得した会員テーブル中のパスワードのハッシュ値から元のパスワードを推測する。
3.推測したパスワードを利用して,会員になりすまして本システムにログインする。
| 会員番号 | パスワードのハッシュ値 | 姓 | 名 |
| 21717202 | 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 | T中 | T郎 |
| 21717203 | 2597a7caf656e89e9ab35e12326d557ebfe9b7b5dcbe4c564e74070fa5cfcbe5 | S藤 | H子 |
| 30781985 | 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 | S藤 | J郎 |
| 36150833 | ac9689e2272427085e35b9d3e3e8bed88cb3434828b43b86fc0596cad4c6e270 | S木 | H子 |
| 45905900 | ac9689e2272427085e35b9d3e3e8bed88cb3434828b43b86fc0596cad4c6e270 | Y田 | J郎 |
| 45917046 | d82494f05d6917ba02f7aaa29689ccb444bb73f20380876cb05d1f37537b7892 | T中 | T郎 |
稼働中のシステムのログインフォームに対してパスワードを総当たりで試行する a 攻撃では,システム側で試行回数に制限を設けて対策することができるが,レインボーテーブル攻撃ではそれができない。
H主任は,本システムの修正方針を整理するために,SQLインジェクション攻撃及びレインボーテーブル攻撃への対策を検討することにした。なお,ペネトレーションテスト期間中にWAFでSQLインジェクション攻撃が検知できていたが,③仮に対策の一つが破られても他の対策で攻撃を防ぐという考え方に基づき,攻撃への対策をWAFだけに頼らず本システム自体でも行うことにした。
〔SQLインジェクション攻撃への対策の検討〕
本システムのソースコードを調査したところ,一部の処理で外部からの入力値をそのままSQL文に埋め込んでいる箇所が存在していた。そこで,対策として, b を利用する方式を採用することにした。この方式では,外部からの入力値が埋め込まれる箇所を専用の記号に置き換えたSQL文の雛形をあらかじめ作成しておき,専用の記号で置き換えた箇所にDB管理システム側で外部からの入力値を割り当てる。
〔レインボーテーブル攻撃への対策の検討〕
本システムでは会員のパスワードをハッシュ化して保存しているが,パスワードそのものにハッシュ関数を1回適用しただけであったので,レインボーテーブル攻撃に対して脆弱であった。そこで,パスワードをハッシュ化する際に,次の三つの処理を組み合わせて実施することにした。
1.ソルトを用いた処理
・パスワードをハッシュ化する際に,ソルトを付加した上でハッシュ化する。
・ソルトとして,会員ごとに異なるランダムな文字列を用意し,会員テーブルに格納する。
2.④ペッパーを用いた処理
・パスワードをハッシュ化する際に,ペッパーを付加した上でハッシュ化する。
・ペッパーとして,全ての会員に共通のランダムな文字列を用意し,Webサーバ内の外部からアクセスできない安全な領域に格納する。
3.ストレッチング
・ハッシュ関数を複数回適用する。
さらに,ハッシュ化処理の変更に加えて,会員が設定可能なパスワード長を10字以上64字以下に変更した。本システムにおいて,パスワード長が10字の場合,6字の場合と比べてパスワードとして使用可能な文字列のパターン数が c 倍になるのでレインボーテーブル攻撃がより困難になる。
H主任は,これらの対策を取りまとめてG部長に報告し,承認された。
設問1 本文中の下線①について,会員のパスワードをハッシュ関数でハッシュ化して保存することは,情報漏えいの脅威に対してメリットがある。それは,ハッシュ値にどのような特性があるからか。25字以内で答えよ。
解答・解説
解答例
ハッシュ値からパスワードの割出しは難しい
解説
XXX
設問2 本文中の下線②について,会員テーブルのデータが漏えいした場合,情報セキュリティの3要素のどれが直接的に侵害されたといえるか。漢字3字で答えよ。
解答・解説
解答例
機密性
解説
XXX
設問3 本文中の a , b に入れる適切な字句を解答群の中から選び,記号で答えよ。
- エスケープ
- 許可リスト
- サニタイズ
- 中間者
- ブルートフォース
- プレースホルダ
- リプレイ
解答・解説
解答例
a:オ b:カ
解説
XXX
設問4 本シナリオによって,表1に示す会員テーブルのデータが窃取され,会員番号“21717202”の会員のパスワードが推測され不正アクセスを受けたとすると,推測されたパスワードを利用して不正アクセスを受けるおそれが最も強い他の会員は誰か。該当する会員の会員番号を解答群の中から選び,記号で答えよ。
- 21717203
- 30781985
- 36150833
- 45905900
- 45917046
解答・解説
解答例
イ
解説
XXX
設問5 本文中の下線③の考え方を漢字4字で答えよ。
解答・解説
解答例
多層防御
解説
XXX
設問6 〔レインボーテーブル攻撃への対策の検討〕について答えよ。
(1)本文中の下線④について,ペッパーを付加してハッシュ化することで本シナリオにおいてレインボーテーブル攻撃が困難になる理由を,ソルトを用いた処理との違いに着目して35字以内で答えよ。
解答・解説
解答例
会員テーブルの窃盗だけではペッパーを得ることができないから
解説
XXX
(2)本文中の c に入れる適切な数を,xʸのような指数を用いた表記で答えよ。
解答・解説
解答例
70⁴
解説
XXX
IPA公開情報
出題趣旨
パスワードの管理方法が不適切であったことによって,不正アクセスの被害が拡大する事例が発生している。
本問では,EC サイトに対するペネトレーションテストの結果を題材として,パスワードの安全な管理方法についての理解を問う。
採点講評
未公開