このページでは、情報セキュリティスペシャリスト試験(SC)(現 情報処理安全確保支援士試験)、平成21年度 春期 午後Ⅰの問3「アプリケーション開発時の脆弱性対策」の問題文と解答例を掲載しています。
問題と解答(PDF)
平成21年春期 午後Ⅰ 問3 アプリケーション開発時の脆弱性対策
問題文
問3 アプリケーション開発時の脆弱性対策に関する次の記述を読んで,設問 1, 2 に答えよ。
C 社は, 一般消費者向けにファックスや電話による,生活用品の通信販売を行っている,従業員数50 名の会社である。C社の企画開発課は申込方法の多様化を目的として,インターネットで申込みを受けるための X システム(図 1)を開発してきた。X システムでは, Web アプリケーション(以下, Web アプリという)のログイン画面で、利用者ID とパスワードによって利用者認証を行う。C社の開発ポリシには, サービス開始前に第三者によるセキュリティ検査を実施することが規定されている。そこで, 企画開発課のF課長は,部下の G 君に指示して Web アプリを対象とした疑似侵入テ ストと,データベース(以下, DB という)サーバを対象とした脆弱性診断を,セキ ュリティ専門会社のD社に依頼した。
〔Web アプリのセキュリティに関する問題点〕
D社のH 氏から疑似侵入テストと脆弱性診断の結果が報告された。次は,疑似侵入テストで見つかった脆弱性に関する会話の一部である。
H氏 :まず, 各ログインセッションを識別するセッション識別子は,ログイン日と会員番号を組み合わせた文字列として構成され,図2のように cookie にセットされますね。このままでは,悪意をもつ者に他人のセッション識別子を推定され,①容易になりすましアクセスができてしまいます。影響と対策については報告書に記述しましたので参照してください。
G君 :分かりました。セッション識別子の生成部分を修正します。
H氏 :次は,クロスサイトスクリプティング(以下, XSs という)についてです。 Web アプリでは, XSS の脆弱性が多数見つかりました。
G君 :XSS 対策については,図3のプログラムのように, 利用者からの入カデータ に<script や<iframe などの文字列が含まれていた場合は,入力チェックで、処理を中止するようにしていました。
H氏 :入力チェックだけで完全な XSS 対策を行うのは困難です。まず HTML 出力の際に”<” , “>” , ““” , “‘” , “&” をそれぞれ “<” , “>” , “"” , “'” , “&” に置換することが基本です。その上で,プログラムが HTML タグの②ある特定の属性に値を出力する場合は,個別の対処が必要で す。
G君:(報告書を見ながら)なるほど,そのように対応します。
H氏 :次に,図3のプログラムは HTTPS でアクセスする画面を出力するものですが,その画面を御社で推奨されているブラウザで見たときに,③HTTPS での正常なアクセスを意味する鍵マークが表示されなくなっています。
F課長:これは注意が足りませんでした。ほかのプログラムも含めて確認し,修正します。
〔DB セキュリティに関する問題点〕
脆弱性診断によって, DB セキュリティに関する問題点も報告された。次は,その問題点に関する会話である。
H氏 :DB サーバには,利用者の個人情報が平文で格納される仕様になっています。万が一,不正アクセスによって個人情報が流出した場合に備えて,Web
アプリで個人情報を暗号化して格納することをお勧めします。
G君:実は, DBMS 側で自動的に暗号化/復号する透過的データ暗号化機能(以 下,透過的暗号化という)を利用する予定です。
H氏 :残念ながら④透過的暗号化の効果は限定的です。H氏は透過的暗号化について説明した。
F課長:防止できる脅威を考えると, Web アプリによる暗号化を採用すべきだな。個人情報の登録と参照をしている箇所を洗い出して,実装してくれ。
G君:承知しました。ざっと見積もって1週間以上は掛かると予想されます。
F課長:仕方ない。よろしく頼む。
H氏:今後システム開発をするときにはもっと早い段階で暗号化について検討し, 実装すべきですね。次に, X システムのログイン認証用のパスワード情報について確認します。 DB に格納されているパスワード情報はハッシュ値のように見えますが,どのような方法で算出しているのですか。
G君 :パスワードをMD5 関数の引数にして算出しています。
H氏 :パスワードだけからハッシュ値を算出すると,悪意ある第三者にハッシュ値が知られた場合,検索エンジンや専用ツールを使って,元の値であるパスワードを突き止められてしまう可能性があります。
F課長:パスワードを突き止められることで,X システムに不正ログインされる可能性があるのは理解できますが,ほかに何か問題があるのですか。
H氏:利用者の多くは,ほかのサイトでも同じパスワードを使用しているようです。攻撃者は不正に入手した利用者 ID, パスワードを使ってほかのサイトに不正ログインを試みるでしょう。したがって,万がー,情報流出した際に は,御社に対する非難の声が大きくなりかねませんし,利用者にほかのサイトのパスワードを変更する負担を強いることにもなります。そういう最悪の事態にならないようにするためにも,⑤より工夫してパスワードのハッシュ値を算出した方がよいでしょう。
F課長:なるほど,当社だけの問題ではないのですね。ハッシュ値の算出方法を変更します。
その後,H 氏から指摘された脆弱性に関する対策を完了し,C 社は正式にサービスを開始した。
設問
設問1
〔Web アプリのセキュリティに関する問題点〕について,(1) ~(3) に答えよ。
(1) 本文中の下線のについて,悪意をもつ者が,どのようにして他人になりすますことができるのか。その方法を50字以内で具体的に述べよ。
(2) 本文中の下線のの原因となっている図3 のプログラムの部分を,その行番号で答えよ。また,どのように修正すればよいかを 25字以内で述べよ。ここで、a0.png~a9.png の画像ファイルは同じフォルダに配置されているものとする。
(3) 本文中の下線のの属性に該当するものを二つ挙げ,それぞれ15字以内で答えよ。
設問2
〔DB セキュリティに関する問題点〕 について,(1), (2) に答えよ。
(1) 本文中の下線のについて, DB に格納されている情報に対する不正閲覧のうち,透過的暗号化によって防止できるものを解答群の中から一つ選び,記号で答えよ。
解答群
ア SQLインジェクションによる不正閲覧
ィ サーバ管理者による SQL文を利用した不正閲覧
ウ 図1中の内部セグメントにおける通信傍受による不正閲覧
ェ バックアップ媒体を入手した第三者による不正閲覧
(2) 本文中の下線⑤について,よく使われる文字列をパスワードにしていた場合でも,ハッシュ値から元のパスワードを突き止められないようにするためのハッシュ値の算出方法を,50字以内で述べよ。
解答例
設問1
(1) cookie にセットされたセッション識別子のうち,会員番号部分を他人のものに変える。
(2)
行番号:24
修正方法:
- 画像ファイルを相対パス名で指定する。
- http の部分を https にする。
(3)
①タグの href 属性
②タグのイベントハンドラ属性
設問2
(1)エ
(2)
- 鍵付きハッシュ関数でパスワードからハッシュ値を算出して格納する。
- パスワードとランダムな文字列を連結した文字列からハッシュ値を算出して 格納する。
出題要旨
Web をベースとしたシステム開発が主流となっているが, アプリケーションレベルのセキュリティ対策は正しく実施されていないことがまだ多い。
本間では, Web アプリケーションに対する疑似侵入テストで, クロスサイトスクリプティング (XSS)への対応や,セッション管理の不備が見つかった状況,及び DB サーバに対する脆弱性診断で,格納しているデータ保護の不備が見つかった状況を想定し,それらの脆弱性に対する適切なアプリケーション設計,プログラミング手法,データベースセキュリティ対策などの理解を問う。
関連リンク
その他の過去問は下記リンクなどもご覧ください。