‹ ぱすてく

情報処理安全確保支援士試験

平成29年度 秋期 午後Ⅰ(旧試験)

平成29年度 秋期に実施された情報処理安全確保支援士試験 午後Ⅰの全3問(記述式)の全設問に,運営者が独自に書いた解説を付けています。事例本文のどこが根拠になるかを示し,IPA の解答例・採点講評と並べています。

この試験について:情報処理安全確保支援士試験について

この年度を解いてみる

問1 ランサムウェアへの対策

ランサムウェアへの対策に関する次の記述を読んで,設問1~4に答えよ。

B 社は,従業員数 300 名の建築資材販売会社であり,本社,営業店 10 か所の他に倉庫がある。本社,各営業店及び倉庫のネットワークは IP-VPN で接続されており,インターネットとの接続は本社に集約されている。本社と営業店では,それぞれ,本社用 PC と営業用 PC から情報共有サーバ(以下,G サーバという)を利用し,Windows のファイル共有機能を使って資料を共有している。本社用 PC 及び営業用 PC では,一般利用者権限でログオンすると,自動的に G サーバへもその権限でログオンされ,G サーバ上の共有フォルダが各 PC の G ドライブとして自動的に割り当てられる。G サーバ上の共有フォルダの利用者データ,本社用 PC の利用者データ及び営業用 PC の利用者データは,それぞれ,各コンピュータのローカルディスク上に設けられた一般利用者権限ではアクセスできない領域に 1 時間に 1 回,毎時 0 分に開始されるジョブによって,バックアップされる。ジョブのログには,バックアップの開始と終了の時刻,総ファイル数,ジョブ実行結果などが記録される。

B 社は,販売及び在庫管理を行うソフトウェアを独自に開発し利用している。受注から出荷までの業務を管理する Web アプリケーションソフトウェア(以下,業務 AP という)は,販売及び在庫管理用の Windows サーバ(以下,D サーバという)上で稼働している。B 社の全ての PC は,ログオン時に,D サーバへも一般利用者権限で自動的にログオンされ,D サーバ上の共有フォルダが Windows のファイル共有機能を使って各 PC の D ドライブとして自動的に割り当てられる。出荷業務は,倉庫に設置された作業用 PC に,無線ハンディターミナル(以下,HT という)を接続して行う。各 PC で用いる B 社の Windows アプリケーション(以下,A アプリという)は,業務 AP に HTTP over TLS で接続する機能,及び出荷指示情報が記載されたファイル(以下,出荷指示ファイルという)を読み書きする機能をもっている。

B 社のシステム構成を図1に,受注から出荷までの業務の流れを図2に示す。

B 社のシステム構成図。凡例:R はルータ,FW はファイアウォール,L2SW はレイヤ2スイッチ。インターネットは本社の FW に接続し,またクラウドサービス内のメールサーバにも接続している。本社の中では,FW が L2SW に接続され,L2SW に D サーバ(業務 AP,共有フォルダ),G サーバ(共有フォルダ),本社用 PC01~PC50(それぞれ A アプリ)が接続されている。本社の FW の隣にルータ R があり,IP-VPN に接続している。IP-VPN には営業店 1~10 と倉庫が接続している。営業店1は,ルータ R,L2SW を経由して営業用 PC01~PC05(それぞれ A アプリ)が接続されている。倉庫は,ルータ R,L2SW を経由して作業用 PC01~PC50(それぞれ A アプリ)が接続され,各作業用 PC には無線で HT が接続されている。
図1 B 社のシステム構成
枠内の7項目。1. 営業担当者が,自分の利用者 ID で営業用 PC にログオンし,A アプリを使って業務 AP に接続し,受注情報を登録する。2. 本社スタッフが,自分の利用者 ID で本社用 PC にログオンし,A アプリを使って業務 AP に接続し,受注情報を基に出荷指示情報を登録する。3. 業務 AP では,出荷指示情報が登録されると D サーバ上の共有フォルダに,出荷指示 1 件につき,CSV 形式による出荷指示ファイルを 1 ファイルとして出力する。全ての出荷指示ファイルは,出荷担当者が内容の確認と更新をすることができる。4. 出荷担当者が,自分の利用者 ID で作業用 PC にログオンする。5. 出荷担当者が,作業用 PC に HT を接続し,A アプリを使って D ドライブ上の自分が担当する出荷指示ファイルを“出荷処理中”にステータス更新した上で,出荷指示情報を HT に取り込む。倉庫内の商品に貼ってあるバーコードを HT で読み取りながら出荷を行う。6. 出荷担当者は,出荷が完了すると,A アプリを使って D ドライブの該当する出荷指示ファイルを“出荷完了”にステータス更新する。7. 営業担当者及び本社スタッフが,A アプリを使って D ドライブ上の出荷指示ファイルを閲覧し,最新の出荷状況を確認する。ただし,内容を確認するだけで更新はしない。
図2 受注から出荷までの業務の流れ

〔セキュリティインシデントの発生〕

ある日の 9:50 に,出荷担当者の V さんから,IT システム担当者の L 君に A アプリの障害の連絡が入った。L 君が D サーバ上の共有フォルダを確認したところ,出荷指示ファイルが破損しており,A アプリで読込みエラーが発生していた。L 君は,原因究明よりも,業務の再開を優先するため,業務 AP の管理機能を使って出荷指示ファイルを再出力して復旧させた。このとき,L 君は,①破損した出荷指示ファイルを削除せず,別のフォルダに移動しておいた。後に,このファイルが,調査に役立った。

復旧させた直後,10:30 に,営業担当者の S さんから L 君に,暗号化されたファイルを取り戻したければ手順に従うよう指示する脅迫文が,営業用 PC05 のデスクトップ画面に表示されているという連絡が入った。また,営業用 PC05 で一部のファイルを開くことができなくなっていた。L 君は,営業用 PC05 がマルウェアに感染したと判断し,営業用 PC05 をネットワークから切り離すよう S さんに指示した。

L 君は,D サーバの出荷指示ファイルも営業用 PC05 と同じように開くことができなくなっていたことから,D サーバも同じマルウェアに感染した可能性があると考え,一連の事象を上司に報告した。上司と相談した結果,業務を一時停止し,D サーバをネットワークから切り離し,従業員に注意喚起をした後,セキュリティ専門会社 U 社の J 氏に協力を依頼して,調査を行うことにした。

〔セキュリティインシデントの調査〕

L 君と J 氏は,感染経路と影響範囲を特定するために,営業用 PC05 と D サーバからログファイルやメモリダンプなどを収集して,表1のタイムラインを作成した。

4列の表(No/時刻/事象/対象機器)。1/7:50/PC が起動された。/営業用 PC05。2/7:51/営業利用者 05 でログオンされた。/営業用 PC05。3/7:51/営業用 PC05 から営業利用者 05 でログオンされた。/D サーバ。4/8:25/A アプリが実行された。/営業用 PC05。5/8:29/メール閲覧ソフトが実行された。/営業用 PC05。6/8:30/invoice.fdp.exe が実行された。/営業用 PC05。7/8:32/提案書.docx ファイルが暗号化された。/営業用 PC05。(No 欄・時刻欄を持たない行)以降,9:11 までファイルの暗号化が繰り返された。/営業用 PC05。8/9:11/出荷指示_01_00001.csv ファイルが暗号化された。/D サーバ。(No 欄・時刻欄を持たない行)以降,9:40 までファイルの暗号化が繰り返された。/D サーバ。9/10:10/脅迫文のファイルが作成され,画面に表示された。/営業用 PC05。
表1 セキュリティインシデントのタイムライン

受信した電子メールを調査したところ,PDF ファイルに偽装したマルウェアが添付されていた。ファイル名に Unicode 制御文字の a が使われていたので,実際のファイル名は invoice.fdp.exe であるが,表示上は invoice.exe.pdf となっていた。S さんは PDF ファイルだと思って添付ファイルを開いたとのことで,開いたときにマルウェアのプログラムが実行されたと考えられた。差出人は B 社従業員になっていたが,メールヘッダの b フィールドで,経由したメールサーバを調べたところ,社外から送信されていたことが分かった。

S さんに割り当てられている営業利用者 05 に与えられているのは,一般利用者権限なので,営業用 PC05 では,OS のシステムファイルは暗号化されず,S さんが作成したファイルだけが暗号化されていた。L 君は,管理者権限を使って営業用 PC05 にログオンし,マルウェアを除去した上で,②複数世代のバックアップデータの中から,暗号化される直前の世代のバックアップデータを選択し,それを使ってファイルを復元した。

次は,マルウェアに関する,L 君と J 氏の会話である。

G サーバを調査したところ,共有フォルダのファイルが暗号化されていることが分かった。しかし,G サーバ上に取得しているバックアップデータを使って,ファイルを復元することができたので,大きな影響はなかった。

〔被害拡大防止策の実施〕

L 君は,PC がランサムウェアに感染した場合に備えて,サーバへの被害を最小限にする対策を講じることにした。D サーバ上の出荷指示ファイルを格納しているフォルダのアクセス権限が必要最小限になるよう,表2のとおりに見直しを行った。

利用者のグループごとのアクセス権限の表。列は「見直し前」の読み・書きと「見直し後」の読み・書き。出荷担当者グループ:見直し前は読み可・書き可,見直し後は読み[ c ]・書き[ d ]。営業担当者グループ:見直し前は読み可・書き可,見直し後は読み[ e ]・書き[ f ]。本社スタッフグループ:見直し前は読み可・書き可,見直し後は読み[ g ]・書き[ h ]。
表2 D サーバ上の出荷指示ファイルを格納しているフォルダのアクセス権限設定(抜粋)

L 君は,G サーバについても,ファイルの被害が最小限になるように,G サーバ上の共有フォルダのアクセス権限を見直した。

L 君は,ランサムウェアによって暗号化されたファイルを,バックアップから復元する以外に元に戻す方法はないか J 氏に質問した。J 氏によると,ランサムウェアには,ファイルの暗号化に共通鍵暗号だけを使っているタイプと,共通鍵暗号と公開鍵暗号を組み合わせて使っているタイプが発見されている。それぞれファイルを復号可能なケースが報告されているとのことであった。共通鍵暗号だけを使うタイプでは,ランサムウェアのプログラム内にその鍵がハードコードされていれば,ランサムウェアの検体を解析することによって,その鍵を入手してファイルを復号できる可能性がある。一方,共通鍵暗号と公開鍵暗号を組み合わせて使うタイプでは,PC のメモリ上に一時的に作成する共通鍵で対象ファイルを暗号化した後,その共通鍵をプログラム内にハードコードされた公開鍵で暗号化した上で,メモリ上からは共通鍵を消去するので,④このタイプでは,検体を解析しても,ファイルを復号することは難しい。ただし,ランサムウェア X の場合,暗号化に使用した共通鍵をメモリ上から消去しないため,⑤PC をハイバネーション機能によって休止状態で保管しておくことによって,セキュリティベンダから復号ツールが提供されたときに,復号できる場合があるとのことであった。

L 君は,ランサムウェアに感染した場合の対応手順やツールの整備を上司に進言した。

数日後,J 氏から,OS の新たな脆弱性を悪用する新たなランサムウェア Y が発見されたので,至急,セキュリティパッチ P を適用した方がよいという連絡があった。L 君が確認したところ,B 社のサーバと PC に影響する脆弱性であることが分かった。ランサムウェア Y は,⑥ファイルを暗号化するとともに,他のサーバや PC の OS の脆弱性を悪用し,管理者権限で次々と感染を広げるとのことであった。

L 君は,ランサムウェア Y に対処するために,全てのサーバと PC にセキュリティパッチ P を適用するとともに,セキュリティパッチ適用に関する運用の見直しを検討することにした。

出題趣旨(IPA)

組織及び個人において,ランサムウェアの被害が拡大している。業務継続の観点から,これまでのマルウェア対策に加えて,バックアップやアクセス権限設定などの対策も見直しが必要となっている。本問では,業務システムにおけるランサムウェア感染のセキュリティインシデントを題材に,ランサムウェアの基礎知識とともに,インシデントが発生した場合の初動対応や再発防止策を策定する能力を問う。

採点講評(問全体・IPA)

問1では,ランサムウェアへの対策について出題した。全体として正答率は高かった。

設問と解答例

設問1

本文中の下線①のファイルについて,タイムラインを作成する際に用いたタイムスタンプ情報を解答群の中から選び,記号で答えよ。解答群 ア アクセス日時 イ 更新日時 ウ 削除日時 エ 作成日時

解答例

  • イ
解説

本文の根拠

J 氏の説明

見つけたドライブ内のファイルを暗号化して上書き保存します。

表1 No 7

提案書.docx ファイルが暗号化された。

表1 No 8

出荷指示_01_00001.csv ファイルが暗号化された。

下線①は,ランサムウェアによって暗号化され,破損した出荷指示ファイルである。ランサムウェア X は“ファイルを暗号化して上書き保存”するので,暗号化された時点でファイルの内容が書き換えられ,ファイルの更新日時がその時刻になる。表1 の“ファイルが暗号化された”時刻(8:32,9:11 など)は,こうした更新日時を集めて並べたものと考えられ,イ(更新日時)が答えである。

上書き保存なので,ファイルが作られた時刻(作成日時)は変わらず,暗号化の時刻の手がかりにならない。破損したファイルを L 君が削除せず別のフォルダに移動したのは,この更新日時がタイムライン(表1)を作る材料になるからである。

誤りの選択肢との違い。アのアクセス日時は,読み出しただけでも変わるので,暗号化(書込み)の時刻を特定できない。ウの削除日時は,ファイルを削除していないので記録されない。エの作成日時は上書きでは変わらない。解答群から選ぶ設問で,字数制限は無い。

設問2(1) 解答欄2つ

本文中の a,b に入れる適切な字句を解答群の中から選び,記号で答えよ。解答群 ア BOM イ Content-Type ウ CRLF エ Received オ RLO カ X-Mailer

〔a〕解答例

  • オ

〔b〕解答例

  • エ
解説

本文の根拠

受信メールの調査

ファイル名に Unicode 制御文字の a が使われていたので,実際のファイル名は invoice.fdp.exe であるが,表示上は invoice.exe.pdf となっていた。

受信メールの調査

メールヘッダの b フィールドで,経由したメールサーバを調べたところ,社外から送信されていたことが分かった。

a は,実際のファイル名 invoice.fdp.exe が画面上は invoice.exe.pdf に見えるようにする Unicode 制御文字である。RLO(Right-to-Left Override)は,後ろに続く文字の表示を右から左へ並べ替える制御文字で,ファイル名の途中に入れると,その後ろの“fdp.exe”が“exe.pdf”と逆順に表示される。利用者は PDF ファイルだと思って開いてしまう。よって a はオである。

b は,経由したメールサーバを調べるメールヘッダのフィールドである。メールを中継するサーバは,受け取った際に Received ヘッダを追加していく(RFC 5321 のトレース情報)。これをたどれば,差出人が B 社従業員でも社外から送信されたことが分かる。よって b はエである。

誤りの選択肢との違い。BOM はバイトオーダを示す印,CRLF は改行コード,Content-Type は本文の種類を示すヘッダ,X-Mailer は送信に使ったメールソフトを示すヘッダで,どれも“経由したサーバ”を調べるものではない。解答群から選ぶ設問で,a,b の組合せで答える。

設問2(2) 15字以内

本文中の下線②について,復元に利用するバックアップデータを選択する際,感染開始時刻と,何の時刻を比較すべきか。15 字以内で答えよ。

解答例

  • バックアップ終了時刻
解説

本文の根拠

本文 下線②

複数世代のバックアップデータの中から,暗号化される直前の世代のバックアップデータを選択し,それを使ってファイルを復元した

冒頭

ジョブのログには,バックアップの開始と終了の時刻,総ファイル数,ジョブ実行結果などが記録される。

ランサムウェア X の感染開始時刻より前に取得が終わったバックアップなら,暗号化されたファイルを含まない。そこで,感染開始時刻と比較するのはバックアップの“終了時刻”である。ジョブのログにはバックアップの開始と終了の時刻が記録されているので,終了時刻が感染開始時刻より前の世代のうち,最も新しいものを選べばよい。解答例は“バックアップ終了時刻”である。

バックアップは毎時0分に始まり,取得に時間が掛かる。開始時刻だけで選ぶと,開始は感染前でも取得の途中で暗号化が始まり,暗号化されたファイルがバックアップに混ざる世代を選んでしまうおそれがある。採点講評も,“バックアップの開始時刻”という誤答を挙げている。

字数は 15 字以内で,解答例は 10 字。“何の時刻を”と聞かれているので,“バックアップ”の語を落とさず,開始ではなく終了と書く。

採点講評(IPA)

設問2(2)は,復元に利用するバックアップデータを選択する際の適切な判断について問う問題である。“バックアップの開始時刻”という誤った解答が見受けられた。バックアップの取得には時間が掛かるので,その間にランサムウェアが暗号化を行うと,バックアップファイルの中に暗号化されてしまったファイルが含まれ復元できなくなることを理解してほしい。

設問2(3) 解答欄2つ

本文中の下線③について,感染していない D サーバも,ランサムウェア X によってファイルが暗号化された。その原因となる,営業用 PC の設定とランサムウェア X の特徴を,それぞれ 35 字以内で述べよ。

〔営業用PCの設定〕解答例

  • Dサーバ上の共有フォルダをネットワークドライブとして割り当てる。

〔ランサムウェアXの特徴〕解答例

  • ネットワークドライブ上のファイルも暗号化の対象となる。
解説

本文の根拠

冒頭

B 社の全ての PC は,ログオン時に,D サーバへも一般利用者権限で自動的にログオンされ,D サーバ上の共有フォルダが Windows のファイル共有機能を使って各 PC の D ドライブとして自動的に割り当てられる。

J 氏の説明

内蔵ドライブ,外付けドライブ,ネットワークドライブが対象です。

J 氏の発言

D サーバ自体が感染した形跡はありません。

D サーバは感染していないのに,出荷指示ファイルが暗号化された。その理由は,営業用 PC の設定と,ランサムウェア X の特徴の組合せにある。営業用 PC では,ログオン時に D サーバの共有フォルダが D ドライブ(ネットワークドライブ)として自動的に割り当てられる。一方,ランサムウェア X は,内蔵ドライブや外付けドライブだけでなく,ネットワークドライブ上のファイルも暗号化の対象にする。そのため,感染した営業用 PC を通じて,D サーバ上のファイルが暗号化された。

営業用 PC の側は“D サーバの共有フォルダがネットワークドライブとして割り当てられている”こと,ランサムウェア X の側は“ネットワークドライブも暗号化の対象になる”ことを書く。解答例は,設定が“Dサーバ上の共有フォルダをネットワークドライブとして割り当てる。”,特徴が“ネットワークドライブ上のファイルも暗号化の対象となる。”である。

字数はそれぞれ 35 字以内で,解答例は 32 字と 27 字。D サーバ自体が感染したと書くと,本文の“感染した形跡はありません”と食い違う。二つの要素をそれぞれの欄に分けて書く。

設問2(4) 25字以内

ランサムウェア X が起動した直後に感染を検知し,営業用 PC05 をネットワークから切り離していれば,今回の被害を一部防ぐことができたと考えられる。どのような被害を防ぐことができたか。25 字以内で述べよ。

解答例

  • DサーバとGサーバのファイルの暗号化
解説

本文の根拠

表1 No 6

invoice.fdp.exe が実行された。

表1 No 8

出荷指示_01_00001.csv ファイルが暗号化された。

J 氏の発言

D サーバ上のファイルの暗号化が完了した後で,G サーバ上のファイルを暗号化している可能性があるので調査が必要です。

ランサムウェア X が起動したのは 8:30(表1 No 6)で,営業用 PC05 のファイルの暗号化は 9:11 まで続き,その後に D サーバ上のファイルの暗号化(9:11~9:40)が始まっている。J 氏の説明では,D サーバの後に G サーバのファイルも暗号化される。起動直後に感染を検知して営業用 PC05 をネットワークから切り離していれば,ネットワークドライブとして接続されている D サーバと G サーバのファイルは暗号化されずに済んだと考えられる。

営業用 PC05 内のファイルは,切り離しの前に暗号化が始まっているので防げない点に注意する。防げたのは,ネットワークの先にあるサーバのファイルの被害である。

字数は 25 字以内で,解答例は 18 字。“Dサーバ”と“Gサーバ”の両方を挙げ,被害の中身(ファイルの暗号化)まで書く。“営業用PC05のファイルの暗号化”と書かない。

設問3(1) 解答欄6つ

表 2 中の c~h に入れる適切なアクセス権限を,業務要件を踏まえて,可又は不可で答えよ。

〔c〕解答例

  • 可

〔d〕解答例

  • 可

〔e〕解答例

  • 可

〔f〕解答例

  • 不可

〔g〕解答例

  • 可

〔h〕解答例

  • 不可
解説

本文の根拠

図2 項番3

全ての出荷指示ファイルは,出荷担当者が内容の確認と更新をすることができる。

図2 項番7

営業担当者及び本社スタッフが,A アプリを使って D ドライブ上の出荷指示ファイルを閲覧し,最新の出荷状況を確認する。ただし,内容を確認するだけで更新はしない。

アクセス権限は業務要件に必要な最小限にする。図2 の業務の流れから,グループごとに必要な操作を拾う。出荷担当者は,項番5・6 で出荷指示ファイルを“出荷処理中”“出荷完了”に更新するので,読みも書きも必要で,c(読み)は可,d(書き)は可。営業担当者は,項番7 で最新の出荷状況を確認するだけで更新はしないので,e(読み)は可,f(書き)は不可。本社スタッフも項番7 のとおり閲覧だけなので,g(読み)は可,h(書き)は不可。

出荷指示ファイルは業務 AP が出力する(項番3)。営業担当者や本社スタッフの PC がランサムウェアに感染しても,書込み権限が無ければ,D サーバ上のファイルを暗号化(上書き)されずに済む。見直し前は全グループが読み書き可だったので,営業用 PC の感染が D サーバに及んだ。

解答例は c 可,d 可,e 可,f 不可,g 可,h 不可。“読み”を不可にすると閲覧の業務ができなくなる。書き込みの要否だけを見直す。

設問3(2) 30字以内

本文中の下線④について,検体を解析してもファイルの復号が困難である理由を,30 字以内で述べよ。

解答例

  • 復号に必要な共通鍵や秘密鍵が検体に含まれていないため
解説

本文の根拠

J 氏の説明

共通鍵暗号と公開鍵暗号を組み合わせて使うタイプでは,PC のメモリ上に一時的に作成する共通鍵で対象ファイルを暗号化した後,その共通鍵をプログラム内にハードコードされた公開鍵で暗号化した上で,メモリ上からは共通鍵を消去する

共通鍵暗号と公開鍵暗号を組み合わせるタイプでは,ファイルを暗号化した共通鍵を,プログラム内にある公開鍵で暗号化し,メモリ上の共通鍵は消去する。この公開鍵と対になる秘密鍵は攻撃者が持っていて,検体には含まれない。共通鍵を知るには秘密鍵が要るので,検体を解析しても,共通鍵も秘密鍵も手に入らず,復号は難しい。

共通鍵暗号だけのタイプとの違いが理由になる。共通鍵だけなら,鍵がプログラムにハードコードされていれば解析で取り出せる。組合せのタイプでは,復号に必要な鍵が検体の中に無い。採点講評は,この設問の正答率が低かったと述べ,組合せ方式の具体的な処理を理解して答えるよう求めている。

字数は 30 字以内で,解答例は 26 字。“公開鍵が使われているから”だけでは理由にならない。“復号に必要な鍵が検体に含まれていない”という点まで書く。

採点講評(IPA)

設問3(2)は,暗号化に使う鍵について問う問題である。正答率は低かった。本文で示された共通鍵暗号と公開鍵暗号を組み合わせる方法での具体的な処理を理解した上で解答してほしい。

設問3(3) 35字以内

本文中の下線⑤のように,PC を休止状態で保管しておけばファイルを復号できる可能性があるが,シャットダウンしてしまうとその可能性が低くなる。可能性が低くなる理由を,ランサムウェア X の動作を踏まえて 35 字以内で述べよ。

解答例

  • PC内で一時的に作成されたメモリ上の共通鍵が消えてしまうため
解説

本文の根拠

J 氏の説明

ランサムウェア X の場合,暗号化に使用した共通鍵をメモリ上から消去しないため,

J 氏の説明

PC をハイバネーション機能によって休止状態で保管しておく

ランサムウェア X は,暗号化に使った共通鍵をメモリ上から消去しない。ハイバネーション(休止状態)では,メモリの内容がディスクに保存され,電源を入れ直すとメモリの内容が戻るので,共通鍵が残っていれば復号ツールで復号できる可能性がある。シャットダウンすると,メモリの内容は保存されずに消えるので,PC 内で一時的に作成されたメモリ上の共通鍵も消えてしまい,復号できる可能性が低くなる。

設問3(2)と読み比べる。(2)は,ランサムウェアが共通鍵を意図的に消去するので復号できない,という話である。(3)の X は共通鍵を消さないので,メモリ上に残っていることを足がかりにする。

字数は 35 字以内で,解答例は 30 字。“メモリ上の共通鍵が消えてしまう”ことを書く。“暗号化されるから”のような,暗号化の話にすり替えない。

設問4 40字以内

本文中の下線⑥について,セキュリティパッチ P を適用せずに放置した場合,営業用 PC がランサムウェア Y に感染すると,他のサーバや PC に感染が広がり,甚大な被害が生じるおそれがある。G サーバにおいて,ランサムウェア X では起きないが,ランサムウェア Y では起きる被害を,40 字以内で述べよ。

解答例

  • 共有フォルダのバックアップデータも暗号化されてしまい復元できなくなる。
解説

本文の根拠

下線⑥

ファイルを暗号化するとともに,他のサーバや PC の OS の脆弱性を悪用し,管理者権限で次々と感染を広げる

表2 の後

L 君は,G サーバについても,ファイルの被害が最小限になるように,G サーバ上の共有フォルダのアクセス権限を見直した。

冒頭

G サーバ上の共有フォルダの利用者データ,本社用 PC の利用者データ及び営業用 PC の利用者データは,それぞれ,各コンピュータのローカルディスク上に設けられた一般利用者権限ではアクセスできない領域に 1 時間に 1 回,毎時 0 分に開始されるジョブによって,バックアップされる。

ランサムウェア X は一般利用者権限で動くので,一般利用者権限ではアクセスできない領域のバックアップデータは暗号化できず,G サーバのファイルはバックアップから復元できた。ランサムウェア Y は OS の脆弱性を悪用して管理者権限を得て,他のサーバや PC に感染を広げる。管理者権限があれば,一般利用者権限ではアクセスできない領域にあるバックアップデータにも書込みができ,ファイルといっしょに暗号化できる。よって,G サーバの共有フォルダのバックアップデータも暗号化され,復元できなくなる。

X では起きず,Y でだけ起きる被害を問われている。ファイルの暗号化は X でも起きるので答えにならない。違いは“管理者権限”で,その結果バックアップデータまで失われることが Y の被害である。

字数は 40 字以内で,解答例は 35 字。“バックアップデータも暗号化され,復元できなくなる”の 2 点を入れる。“ファイルが暗号化される”だけでは X との違いが出ない。

採点講評(IPA)

設問4は,脆弱性を悪用して他のサーバやPCに感染を広めるランサムウェアの被害について問う問題である。このランサムウェアの場合,管理者権限でファイルを暗号化するので,そのときの被害を想定して,対策の立案ができるようになることを期待したい。

出典:平成29年度 秋期 情報処理安全確保支援士試験 午後Ⅰ 問1(表記を一部改変)

問2 Web アプリケーション開発におけるセキュリティ対策

Web アプリケーション開発におけるセキュリティ対策に関する次の記述を読んで,設問1~3に答えよ。

A 社は,Web マーケティングを支援する従業員数 40 名の企業である。A 社では,現在,Web マーケティング分析システム(以下,W システムという)を Web アプリケーションとして独自に開発し,クラウドサービス事業者 S 社のクラウドサービス上で顧客にサービスとして提供している。W システムでは,A 社独自の分析アルゴリズムを用いて,顧客の Web サイトを分析する。顧客の評価は高く,販売も好調である。

〔W システムの概要〕

W システムの開発は,役員 T 氏とシステム担当の K 氏が行っている。T 氏がアルゴリズムなどの基本的な仕様を決め,K 氏が,Java,サーブレットや開発フレームワークなどを用いて開発している。また,ブラウザ側での機能性向上のために JavaScript も用いている。開発は K 氏が管理する PC(以下,開発用 PC という)上で行い,完成したプログラムをシステム管理者の F 氏が本番システムにデプロイし,運用している。

W システムの画面構成は,次のようになっている。

W システムのシンプルなページの構成は,顧客にも好評である。

〔W システムの実装に関する脆弱性〕

A 社では,W システムのセキュリティ検査を,あらかじめ定められた手順に従い K 氏がブラウザを用いて手動で実施している。しかし,昨今の他社のセキュリティインシデント増加を受け,念のために,先月実施した社内のセキュリティ検査とは別に,今月になり初めて,外部の専門家にセキュリティ検査を依頼することにした。

そこで,セキュリティ専門会社 L 社の情報処理安全確保支援士である N 氏が,W システムのセキュリティ検査を担当することになった。

まず,N 氏が脆弱性検査ツールを使って本番システムを検査したところ,図1の Java コードで書かれたサーブレット SearchServlet に,SQL インジェクション脆弱性及びクロスサイトスクリプティング(以下,XSS という)脆弱性があることが判明した。図2は,図1の SearchServlet を呼び出す HTML コードである。

続いて N 氏が本番システムのソースコードを確認し,次の指摘をした。

今回指摘された脆弱性は,検査すべき項目の中に含まれており,K 氏によるブラウザを用いた手動のセキュリティ検査によって発見され,開発用 PC 上のコードでは先月に修正されていた。しかし,K 氏からファイルを受け取った F 氏が,本番システムに修正版をデプロイし忘れたので,本番システムに脆弱性が残存したままとなっていた。

枠内の Java コード(1~17行目まで)。(省略)//package,import宣言など / 1:public class SearchServlet extends HttpServlet { / (省略)//変数やメソッドの定義など / 2: / 3:  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { / 4:    Connection conn = null; / 5:    String cname = request.getParameter("cname"); / 6:    response.setContentType("text/html; charset=UTF-8"); / 7:    PrintWriter out = response.getWriter(); / 8:    try { / (省略)//データベースにアクセスするためにconnを初期化など / 9:      String sql = "SELECT * FROM companylist WHERE cname = '" + cname + "'"; / 10:      Statement stmt = conn.createStatement(); / 11:      ResultSet rs = stmt.executeQuery(sql); / 12:      if (cname != null && rs != null) { / 13:        out.println("<html>"); / 14:        out.println("<head>"); / 15:        out.println("<title>分析結果</title>"); / (省略)//その他,JavaScriptの読込みなど / 16:        out.println("</head>"); / 17:        out.println("<body>");
図1 分析結果を表示するページを出力する Java コード(抜粋)
枠内の Java コード(18~35行目)。18:        out.println("<table border=1>"); / 19:        out.println("<tr><th>キーワード</th><th>アクセス</th><th>売上げ</th></tr>"); / 20:        while (rs.next()) { / 21:          out.println("<tr><td>" + rs.getString(1)); / 22:          out.println("</td><td>" + rs.getString(2)); / 23:          out.println("</td><td>" + rs.getString(3)); / 24:          out.println("</td></tr>"); / 25:        } / 26:        out.println("</table>"); / (省略)//その他 / 27:        out.println("</body>"); / 28:        out.println("</html>"); / 29:      } / 30:    } catch (SQLException e) { / (省略)//例外処理 / 31:    } finally { / (省略)//データベースへのアクセスを終了する処理など / 32:    } / (省略)//その他,エラー処理など / 33:  } / 34: / (省略)  //その他のメソッドの定義など / 35:}
図1 分析結果を表示するページを出力する Java コード(抜粋)(続き)
枠内の HTML コード(4行)。1:<form action="SearchServlet" method="post"> / 2:  分析キーワードを入力してください:<input type="text" name="cname" /> / 3:  <input type="submit" value="検索" /> / 4:</form>
図2 SearchServlet を呼び出す HTML コード(抜粋)

〔W システムの設計に関する脆弱性〕

以前の W システムは,ログイン状態で 30 分間操作しないと,サーバ側で自動的にログアウトする仕様であった。自動的にログアウトした場合,ログアウト直前のページを閲覧するには,再度ログインをして,ダッシュボードページから所望のページを選択する必要があるので,不便だとの指摘が顧客からあった。これを改善するため,自動的にログアウトした場合に,ログアウト直前のページの閲覧を試みると,一旦はログインページに遷移するが,認証が成功すると,閲覧を試みたページへリダイレクトする機能(以下,リダイレクタ機能という)を導入した。例えば,W システムの URL である https://w-system.a-sha.jp/ で動作する Web アプリケーションにおいて,W システムにログインしていない状態で,https://w-system.a-sha.jp/dashboard.jsp という URL にアクセスすると,図3のように生成された URL へリダイレクトされる。

枠内の URL。https://w-system.a-sha.jp/LoginServlet?redirect_url=https://w-system.a-sha.jp/dashboard.jsp
図3 リダイレクタ機能によって生成された URL

認証用サーブレット LoginServlet で認証が成功すると,https://w-system.a-sha.jp/dashboard.jsp へリダイレクトされる。

リダイレクタ機能を含めて W システムの設計に関して検査を実施したところ,N 氏から幾つかの指摘があった。主な指摘は次の 3 点であった。

K 氏は,指摘 1 に対しては,W システムの特性を考慮して,②ホワイトリスト方式によるリダイレクタ機能を採用することにした。指摘 2 と指摘 3 については,N 氏の指摘どおりに改修することにした。

〔脆弱性対策の強化〕

脆弱性が残存した原因も踏まえ,脆弱性対策の強化として,次のとおり提案と指摘を N 氏は行った。

A 社では,N 氏のこれらの提案と指摘を検討し,適切に対処することにした。

出題趣旨(IPA)

クロスサイトスクリプティングとSQLインジェクションの脆弱性は,現在でも数多く報告されている。また,オープンリダイレクタの問題は,情報漏えいの被害には直接つながらないものの,Webアプリケーションを設計・構築する上で重要なトピックである。本問では,Java/Servletを用いたWebアプリケーションのセキュアプログラミングを題材に,脆弱性への対処方法について開発者の観点で確認する。また,Webアプリケーションでの通信をTLSとする際に気を付けるべき,Secure属性とHttpOnly属性についても取り上げている。

採点講評(問全体・IPA)

問2では,Webアプリケーション開発におけるセキュリティ対策について出題した。全体として正答率は低かった。

設問と解答例

設問1(1) 解答欄3つ

本文中の [ ア ],[ イ ] に入れる,適切な行番号を答えよ。また,本文中の下線①について,必要な全てのコードを解答群の中から選び,適切な順序に並べ替えて解答欄の左から順に記号で答えよ。解答群 ア PreparedStatement pstmt = conn.prepareStatement(sql); イ pstmt.setString(1, cname); ウ ResultSet rs = pstmt.executeQuery(); エ ResultSet rs = pstmt.executeQuery(sql); オ String sql = "SELECT * FROM companylist WHERE cname = '" + cname + "'"; カ String sql = "SELECT * FROM companylist WHERE cname = ?";

〔ア〕解答例

  • 9

〔イ〕解答例

  • 11

〔必要な全てのコード〕解答例

  • カ,ア,イ,ウ
解説

本文の根拠

N 氏の指摘

SQL インジェクション脆弱性への対処としては,図 1 の [ ア ] 行目から [ イ ] 行目までを

図1 9~11行目

String sql = "SELECT * FROM companylist WHERE cname = '" + cname + "'";

図1 10~11行目

Statement stmt = conn.createStatement(); / 11: ResultSet rs = stmt.executeQuery(sql);

図1 の 9 行目は,利用者の入力 cname を SQL 文の文字列に連結して作っている。これが SQL インジェクション脆弱性の原因で,10 行目の Statement の生成と 11 行目の実行も,この連結済みの文字列を前提にしている。したがって 9 行目から 11 行目までをプレースホルダ(バインド機構)を使うコードに置き換える。ア は 9,イ は 11 である。

置き換え後のコードは,まず SQL 文を“cname = ?”の形で用意し(カ),それから PreparedStatement を作り(ア),cname を setString でバインドし(イ),最後に引数なしで executeQuery を実行する(ウ)。したがって並びは“カ,ア,イ,ウ”。オは連結で SQL 文を作る元のコード,エは PreparedStatement に対して SQL 文を渡して実行する書き方で,Java の PreparedStatement では使えない呼出しである(Java SE の API 仕様)。

行番号は“9”“11”とそのまま書き,コードの記号は実行する順に並べる。9 行目から 11 行目の 3 行がカ,ア,イ,ウの 4 つに増える点に注意する。解答例は“カ,ア,イ,ウ”。字数制限は無い。

採点講評(IPA)

設問1(1)は,SQLインジェクションの脆弱性対策の問題である。設問1(2)及び設問1(3)は,クロスサイトスクリプティング脆弱性対策の問題である。これらについては,比較的よく解けていた。理解が進んでいると思われる。

設問1(2)

図 1 には,XSS 脆弱性を招く可能性を否定できないコードがある。N 氏の指摘に従い,改修すべき行番号を全て答えよ。

解答例

  • 21,22,23
解説

本文の根拠

N 氏の指摘

XSS 脆弱性を招く可能性の否定できない箇所について,HTML 形式での出力時に処置するよう改修することとする。

図1 21~23行目

out.println("<tr><td>" + rs.getString(1)); / 22: out.println("</td><td>" + rs.getString(2)); / 23: out.println("</td><td>" + rs.getString(3));

XSS 脆弱性は,外部から入った値を,エスケープせずに HTML に出力すると生じる。図1 のうち,HTML に出力している行は 13~28 行目だが,固定の文字列だけを出力する行(13~20 行目,24~28 行目)は問題にならない。21,22,23 行目は,データベースから取り出した値(rs.getString(1)~(3))をそのまま出力している。データベースの値には,利用者が入力した文字列が含まれている可能性があるので,XSS 脆弱性を招く可能性を否定できない。よって,21,22,23 が答えである。

5 行目の cname は SQL 文には使われるが,HTML には出力されていない。24 行目は固定の文字列だけである。“出力時に処置する”とは,値を出力する行で処置する,という意味である。

行番号を全て答える設問で,字数制限は無い。1 行でも欠けると不正解になるので,rs.getString を含む 3 行を全て挙げる。解答例は“21,22,23”。

採点講評(IPA)

設問1(1)は,SQLインジェクションの脆弱性対策の問題である。設問1(2)及び設問1(3)は,クロスサイトスクリプティング脆弱性対策の問題である。これらについては,比較的よく解けていた。理解が進んでいると思われる。

設問1(3)

XSS 脆弱性に対する修正を,N 氏の指摘に従い,解答群の中から選び,記号で答えよ。解答群 ア CSRF 対策トークンを使う。 イ Referer ヘッダの値の URL のドメイン名が W システムのものであることを確認する。 ウ 出力時に<,>,&,",' の各文字をエスケープする。 エ 同一生成元ポリシを適用する。 オ バインド機能を使う。

解答例

  • ウ
解説

本文の根拠

N 氏の指摘

XSS 脆弱性への対処としては,XSS 脆弱性を招く可能性の否定できない箇所について,HTML 形式での出力時に処置するよう改修することとする。

HTML 形式での出力時に行う XSS の対処は,出力する値に含まれる HTML の特殊文字(<,>,&,",')をエスケープすることである。これで,値の中にスクリプトが含まれていても,HTML の構文として解釈されず,文字として表示される。よってウである。

誤りの選択肢との違い。ア(CSRF 対策トークン)とイ(Referer の確認)は CSRF への対策,エ(同一生成元ポリシ)はブラウザ側の仕組みで,出力時の処理ではない。オ(バインド機能)は SQL インジェクションへの対策で,設問1(1)の修正に当たる。

“出力時”という条件が決め手になる。解答群から選ぶ設問で,字数制限は無い。採点講評は,設問1(1)から(3)は比較的よく解けていたと述べている。

採点講評(IPA)

設問1(1)は,SQLインジェクションの脆弱性対策の問題である。設問1(2)及び設問1(3)は,クロスサイトスクリプティング脆弱性対策の問題である。これらについては,比較的よく解けていた。理解が進んでいると思われる。

設問2(1) 解答欄2つ

本文中の a,b に入れる適切な字句を,解答群の中から選び,記号で答えよ。解答群 ア Expires イ HttpOnly ウ Max-Age エ Secure オ Secured

〔a〕解答例

  • エ

〔b〕解答例

  • イ
解説

本文の根拠

指摘 2

W システムからの Cookie 発行の際,TLS 通信時だけ Cookie をブラウザから送信する a 属性を設定する必要がある。

指摘 3

JavaScript から Cookie を操作できないようにする b 属性を設定する方がよい。

a は,TLS 通信のときだけ Cookie を送信させる属性で,Secure 属性(エ)である。b は,JavaScript から Cookie を読み書きできないようにする属性で,HttpOnly 属性(イ)である。どちらも Set-Cookie ヘッダの属性として,RFC 6265 に定められている。HttpOnly を付けると,XSS 攻撃で JavaScript が実行されても,Cookie の値を盗まれにくくなる。

誤りの選択肢との違い。Expires(ア)と Max-Age(ウ)は Cookie の有効期限を指定する属性で,送信の条件や JavaScript からの操作とは関係がない。Secured(オ)という属性は定義されていない。Secure と紛らわしい名前の誤りである。

解答群から記号で答える設問で,字数制限は無い。採点講評は,Secure 属性は理解されているが,HttpOnly 属性は理解が進んでいないと述べている。名前が似た属性との区別に注意する。

採点講評(IPA)

設問2(1)は,Cookieについての問題である。Secure属性については理解されているようだが,それに比べるとHttpOnly属性については理解が進んでいないようであった。

設問2(2) 40字以内

本文中の下線②について,W システムで採用するホワイトリスト方式の適切な仕様を,40 字以内で具体的に述べよ。

解答例

  • 認証後のリダイレクト先のURLを,WシステムのFQDNのものに限定する。
解説

本文の根拠

図3の前後

認証が成功すると,閲覧を試みたページへリダイレクトする機能(以下,リダイレクタ機能という)を導入した。

図3

https://w-system.a-sha.jp/LoginServlet?redirect_url=https://w-system.a-sha.jp/dashboard.jsp

指摘 1

W システムの認証後のリダイレクタ機能は,オープンリダイレクタの問題を招く。修正する必要がある。

図3 のように,認証後のリダイレクト先がパラメータ redirect_url で指定される。この値を検証しないと,攻撃者が redirect_url に別サイトの URL を入れた URL を利用者に踏ませ,認証後に攻撃者のサイトへ誘導できる。これがオープンリダイレクタの問題である。ホワイトリスト方式は,許可する宛先をあらかじめ定めて,それ以外を拒否する。W システムの場合,リダイレクト先は W システム内のページだけでよいので,リダイレクト先の URL を W システムの FQDN のものに限定する。

“具体的に”と問われているので,何を許可するか(W システムの FQDN の URL)を書く。“ホワイトリストで制限する”だけでは,仕様を述べたことにならない。

字数は 40 字以内で,解答例は 36 字。“認証後のリダイレクト先のURL”と“WシステムのFQDNのものに限定する”の 2 つを入れる。採点講評は,この設問の正答率は低かったと述べている。

採点講評(IPA)

設問2(2)は,正答率は低かった。Webアプリケーションでの認証後のリダイレクト機能に関する問題である。不適切な実装は,オープンリダイレクタの問題を招くことを確認するとともに,オープンリダイレクタの対策としては,ホワイトリストが知られているので,対策できるようになってほしい。

設問3(1) 30字以内

本文中の下線③について,どのように改善すべきか。改善された検査手順を 30 字以内で述べよ。

解答例

  • セキュリティ検査を本番システムに対し行うこと
解説

本文の根拠

N 氏の説明

今回指摘された脆弱性は,検査すべき項目の中に含まれており,K 氏によるブラウザを用いた手動のセキュリティ検査によって発見され,開発用 PC 上のコードでは先月に修正されていた。

N 氏の説明

K 氏からファイルを受け取った F 氏が,本番システムに修正版をデプロイし忘れたので,本番システムに脆弱性が残存したままとなっていた。

K 氏の検査は,開発用 PC 上のコードに対して行われていた。脆弱性は開発用 PC では修正済みだったのに,本番システムに修正版がデプロイされず,残ったままだった。検査手順に,本番システムを検査する工程が無かったことが問題である。N 氏は,本番システムに対しても検査を行うべきだと提案している。解答例は“セキュリティ検査を本番システムに対し行うこと”である。

“どのように改善すべきか”は,開発用 PC とは別の,デプロイ後の本番システムを検査対象に加える,という意味である。デプロイ漏れや,環境の違いによる設定の差も,本番システムの検査で見つけられる。

字数は 30 字以内で,解答例は 22 字。“本番システムに対し”と“行う”を入れる。“変更管理を改善する”は別の項目(変更管理プロセスの改善)の話で,検査手順の改善ではない。

採点講評(IPA)

設問3は,ソフトウェア開発における検査及びリスク低減策に関する問題である。正答率は低かった。検査にWebブラウザを用いることもあるので,最近のWebブラウザの機能をよく理解しておいてほしい。

設問3(2) 30字以内

本文中の下線④について,XSS 攻撃の試みを完遂できないことがある理由を 30 字以内で述べよ。

解答例

  • ブラウザによってはXSS攻撃を遮断する機能をもつから
解説

本文の根拠

N 氏の指摘

K 氏によるブラウザを用いた検査には問題がある。W システムに XSS 脆弱性があったとして,適当な検査用文字列を入力しても,

XSS の検査は,検査用の文字列(スクリプトなど)をフォームに入力し,そのスクリプトが実行されるかどうかを見る。ところがブラウザによっては,XSS 攻撃と見られるスクリプトを遮断する機能をもっている。この機能が働くと,W システムに XSS 脆弱性があっても,スクリプトが実行されず,検査で脆弱性を見つけられない。よって,ブラウザによっては XSS 攻撃を遮断する機能をもつからである。

問われているのは,W システムの側ではなく,検査に使うブラウザの側の理由である。ブラウザを用いた検査では,ブラウザの機能で検査の結果が変わる。採点講評は,最近の Web ブラウザの機能をよく理解してほしいと述べている。

字数は 30 字以内で,解答例は 26 字。“XSS 攻撃を遮断する機能”と,それが“ブラウザによって”異なることを書く。“XSS 脆弱性が無い”と答えない。

採点講評(IPA)

設問3は,ソフトウェア開発における検査及びリスク低減策に関する問題である。正答率は低かった。検査にWebブラウザを用いることもあるので,最近のWebブラウザの機能をよく理解しておいてほしい。

設問3(3) 50字以内

本文中の下線⑤について,低減できるリスクを 50 字以内で述べよ。

解答例

  • Wシステムで当該脆弱性に対処する前に始まる攻撃によって,セキュリティ侵害されてしまうリスク
解説

本文の根拠

S サービスの説明

S サービスでは,Web システムに脆弱性が発見された際,短時間で適切なシグネチャが WAF に追加される。

S サービスの説明

WAF を利用せずに W システムを改修するケースと比較して,

WAF を使わずに W システムを改修する場合,脆弱性が見つかってから改修・テスト・デプロイが終わるまでには時間が掛かる。その間は脆弱性が残るので,改修が完了する前に始まる攻撃を受けるおそれがある。S サービスでは,脆弱性の発見後,短時間で適切なシグネチャが WAF に追加されるので,改修より前に攻撃を遮断できる。低減できるリスクは,W システムで当該脆弱性に対処する前に始まる攻撃によって,セキュリティ侵害されてしまうリスクである。

“W システムを改修するケースと比較して”という条件が,リスクの時間軸(対処前に攻撃が始まる)を指している。WAF の導入は,脆弱性そのものをなくすものではなく,改修までの期間の被害を抑えるものである。

字数は 50 字以内で,解答例は 45 字。“対処する前に始まる攻撃”と“セキュリティ侵害される”の 2 点を入れる。“脆弱性が無くなる”とは書かない。

採点講評(IPA)

設問3は,ソフトウェア開発における検査及びリスク低減策に関する問題である。正答率は低かった。検査にWebブラウザを用いることもあるので,最近のWebブラウザの機能をよく理解しておいてほしい。

出典:平成29年度 秋期 情報処理安全確保支援士試験 午後Ⅰ 問2(表記を一部改変)

問3 SSL/TLS を用いたサーバの設定と運用

SSL/TLS を用いたサーバの設定と運用に関する次の記述を読んで,設問1~3に答えよ。

C 社は,衣服のデザイン,製造及び販売を行う中堅の衣料品製造会社である。近年は,C 社の複数の販売チャネルのうち,EC モールに出店したオンラインショップでの販売量が増えており,C 社の社名も比較的知られるようになった。C 社では,事業を更に拡大するために,新たに独自のドメイン名を取得し,C 社専用の販売サイト(以下,EC サイトという)を立ち上げることにした。

EC サイトの構築,運用及び管理は,C 社のシステム部が担当することになった。システム部は開発会社の協力を得て構築を進め,当初の計画どおり運用が開始された。

〔社外からの通報〕

運用開始から 3 か月が経過した頃,C 社の問合せ窓口に,EC サイトで利用されている一部のサーバ証明書に対応する秘密鍵が,サーバ証明書と一緒に,ある Web サイト(以下,Q サイトという)に掲示されているという通報があった。そこで,システム部の M 部長は,EC サイトの管理を担当する B さんに,セキュリティ専門会社である E 社の支援を得て本件を調査し必要な措置を講じるよう指示した。

E 社のセキュリティコンサルタントである H 氏のアドバイスを受けて B さんが確かめたところ,Q サイトに掲示された秘密鍵は自社のものと一致していた。B さんは鍵が危たい化したと判断した。

次は,H 氏と B さんの会話である。

H 氏は,DNS キャッシュポイズニング攻撃について説明した。

〔鍵の危たい化への初動対応〕

H 氏は,次の二つの措置をとるように B さんにアドバイスした。

H 氏は,今後,再び鍵の危たい化が起きた場合に備えて,あらかじめ検討して準備しておくことが望ましい事項について,B さんに説明した。その事項を図1に示す。

枠内の箇条書き。・鍵の危たい化に対応するための体制,及びその役割と責任(認証局サービス事業者との連携を含む。)/・鍵が危たい化した又はそのおそれがあると判断する基準/・鍵が危たい化した又はそのおそれがあると判断した場合の実施事項:(1) 当該鍵に関わるサーバ証明書の [ ア ] 停止,(2) 当該鍵に関わるサーバ証明書の [ イ ] 申請,(3) 原因の調査,(4) 影響範囲の調査,(5) 原因の除去,(6) 当該鍵を使用していたサーバの利用者が,自身の被害の可能性を判断できるようにするための情報の公表(下線③が付いている),(7) その他の必要な是正処置/・システムを復旧させる際の遵守事項:(1) 危たい化した鍵に関わる証明書署名要求(CSR)の再利用禁止,(2) [ e ] の生成と,その利用。
図1 あらかじめ検討して準備しておくことが望ましい事項

〔H 氏による調査及び問題の指摘〕

B さんは,秘密鍵が他者に知られてしまった原因と,SSL/TLS の利用に関して EC サイトの設定などに改善すべき問題がないかについて,H 氏に調査を依頼した。

H 氏による調査の結果を図2に,暗号スイートの名前の構成を図3に示す。

枠内の調査結果。1. EC サイトの設定など基本情報:・EC サイトのサーバ数:5 台/・社外からアクセスできる全てのサーバで SSL/TLS を利用。利用可能なプロトコルのバージョン:SSL 3.0,TLS 1.0,TLS 1.1,TLS 1.2/・サーバの鍵ペアは,Z ソフトを利用して生成。鍵ペアは,特定の機器で生成されていた。当該機器に Z ソフトがインストールされていた。/・SSL/TLS の暗号スイートに,次のものを設定:(1) TLS_RSA_WITH_AES_128_CBC_SHA,(2) TLS_RSA_WITH_AES_128_CBC_SHA256,(3) TLS_RSA_WITH_AES_128_GCM_SHA256,(4) TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,(5) TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256,(6) TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256,(省略)/・サーバ証明書は,認証局サービス事業者 Y 社が発行するドメイン認証証明書を採用。2. 秘密鍵が他者に知られてしまった原因:・鍵ペアの生成に Z ソフトを利用していたので,Q サイトが推定に成功したと推測。3. SSL/TLS の利用に関して改善すべき問題:問題 1 POODLE 攻撃に対して脆弱であること/問題 2 Perfect Forward Secrecy(以下,PFS という)に対応していないこと/問題 3 サーバ証明書にドメイン認証証明書を用いていること
図2 H 氏による調査の結果(抜粋)
暗号スイート名 TLS_RSA_WITH_AES_128_CBC_SHA の構成。RSA の部分が (a),AES_128_CBC の部分が (b),SHA の部分が (c)。(a) 認証及び鍵交換のアルゴリズム,(b) データ暗号化のアルゴリズム,(c) MAC 又は PRF(Pseudorandom Function)のアルゴリズム。
図3 暗号スイートの名前の構成(概要)

問題 1 中の POODLE 攻撃の概要を図4に示す。H 氏は,④問題 1 を解決するために各サーバに施すべき措置を提案した。

枠内の箇条書き。・POODLE 攻撃によって,攻撃者は,暗号化された通信データの一部を解読し,取得できる。/・中間者攻撃が可能であり,かつ,攻撃対象に大量のデータを送信できることなどの一定の条件を満たす場合に,攻撃が成功する。/・SSL 3.0 プロトコルのパディングチェックの脆弱性を利用して攻撃する。ソフトウェアの開発時に起こり得る実装上のミスによる脆弱性を利用するものではない。/・TLS 1.0 以降のプロトコルについて,同様のパディングチェックの仕組みを突いた攻撃の可能性はあるが,実装上の問題がなければ成功は困難と考えられている。
図4 POODLE 攻撃の概要

問題 2 は,C 社が SSL/TLS のハンドシェイクにおいて,⑤PFS の性質をもつ鍵交換方式を利用せず,代わりに,⑥セッション鍵を共有するための秘密情報をクライアントがサーバ証明書に記載された RSA の公開鍵を用いて暗号化して送信する方式を用いていたことである。

問題 3 は,サーバ証明書の種類についてである。H 氏は,⑦EC サイトが新たに立ち上げたサイトであることを考慮すると,ドメイン認証証明書の選択は妥当でないと指摘した。

〔対策実施と運用見直し〕

B さんは,H 氏の支援を受け,各問題について解決策を検討した。また,M 部長の承認の下,図1の事項の検討も進めた。C 社は,Q サイトに関わる通報を受けた 1 か月後には,各問題を解決し,今後起こり得る鍵の危たい化に備えた態勢を整えた。

出題趣旨(IPA)

インターネットにおいて,SSL/TLSは欠くことのできない技術であり,Webサービスをはじめとして,各種サービスの基盤として利用されているが,SSL/TLSを利用する場合には注意点がある。サーバ証明書の鍵の漏えい,つまり危たい化は起こり得るし,また,新しく発見された攻撃方法によって対応が求められる場合もある。本問では,サーバの鍵の危たい化を題材に,暗号技術に関する基礎的知識,SSL/TLSについての基礎的知識,及びSSL/TLSを正しく設定し,利用し,運用する能力を問う。

採点講評(問全体・IPA)

問3では,SSL/TLSを用いたサーバの設定と運用について出題した。全体として正答率は低かった。

設問と解答例

設問1(1) 解答欄4つ

本文中の a~d に入れる適切な字句を解答群の中から選び,記号で答えよ。解答群 ア CA 証明書 イ EV 証明書 ウ エンコード方式 エ エンティティ認証 オ 鍵交換 カ 共通鍵暗号 キ 公開鍵 ク 自己解凍 ケ 相互認証証明書 コ ディジタル署名 サ ハッシュ関数 シ メッセージ認証 ス ルート証明書

〔a〕解答例

  • コ

〔b〕解答例

  • カ

〔c〕解答例

  • オ

〔d〕解答例

  • イ
解説

本文の根拠

H 氏の説明

サーバ証明書の作成とその検証には公開鍵暗号方式を利用した a 技術を利用します。

H 氏の説明

データの送受信時は,暗号化と復号のために b を利用します。

H 氏の説明

データの送信者と受信者が b で使用する鍵を共有するために,公開鍵暗号方式を用いて c を行います。

H 氏の説明

代表的なものはドメイン認証証明書と d です。

a は,認証局がサーバ証明書に署名し,利用者が署名を検証する技術なので,公開鍵暗号方式を使ったディジタル署名(コ)である。b は,データの送受信時に暗号化と復号に使う暗号技術で,処理が速い共通鍵暗号(カ)である。c は,共通鍵暗号で使う鍵を,公開鍵暗号方式で相手と共有する処理なので,鍵交換(オ)である。d は,ドメイン認証証明書と並ぶ代表的なサーバ証明書の種類で,EV 証明書(イ)である。

b は同じ字句が 2 か所に入る点を押さえる。データそのものの暗号化には共通鍵暗号,鍵の共有には公開鍵暗号方式,という役割分担が SSL/TLS の基本である。

誤りの選択肢との違い。ハッシュ関数やメッセージ認証は改ざんの検出に使う技術,エンティティ認証は相手の確認,CA 証明書やルート証明書は認証局の証明書で,サーバ証明書の“種類”とは別の話である。解答群から選ぶ設問で,a~d の 4 つとも記号で答える。採点講評は,SSL/TLS が利用する暗号関連技術を正しく理解しておくよう述べている。

採点講評(IPA)

設問1(1)は,SSL/TLSが利用する暗号関連技術を問う問題である。SSL/TLSの安全性は一部これらの技術によっているので,SSL/TLSを安全に利用するために,正しく理解しておいてほしい。

設問1(2) 40字以内

本文中の下線①について,DNS キャッシュポイズニング攻撃は偽の EC サイトと組み合わせた不正の中でどのような役割を果たすか。40 字以内で具体的に述べよ。

解答例

  • 正規のECサイトのURLでアクセスしたときに,偽のECサイトに誘導する。
解説

本文の根拠

H 氏の説明

御社の EC サイトを複製して偽の EC サイトを立ち上げ,①DNS キャッシュポイズニング攻撃と組み合わせて,不正を行うかもしれません。

H 氏の説明

サーバ証明書には,サーバの FQDN と公開鍵が記載されます。

偽の EC サイトを立ち上げるだけでは,利用者は正規の URL でアクセスするので,偽サイトにたどり着かない。そこで DNS キャッシュポイズニング攻撃で,DNS キャッシュサーバに,EC サイトの FQDN に対して偽サイトの IP アドレスを覚えさせる。すると,利用者が正規の EC サイトの URL でアクセスしても,偽の EC サイトに誘導される。さらに,偽サイトは漏えいした秘密鍵とサーバ証明書をもっているので,ブラウザは警告を出さず,利用者は偽サイトだと気付きにくい。

問われているのは DNS キャッシュポイズニング攻撃の“役割”である。偽サイトを立ち上げる側ではなく,利用者を偽サイトへ誘導する側の役割を書く。

字数は 40 字以内で,解答例は 36 字。“正規のURLでアクセスしたとき”と“偽のECサイトに誘導する”の 2 点を入れる。“偽サイトを作る”や“通信を盗聴する”は,役割ではない。

設問1(3)

本文中の下線②について,擬似乱数生成器が生成する乱数列に求められる性質として,適切なものを,解答群の中から選び,記号で答えよ。解答群 ア 一様分布でない。 イ 規則性がある。 ウ 周期が短い。 エ 予測不可能である。

解答例

  • エ
解説

本文の根拠

H 氏の発言

②鍵ペアの生成に用いる擬似乱数生成器に必要な条件を,Z ソフトは,満たさないことが分かっています。

H 氏の発言

Q サイトには,サーバ証明書のうち,ある古い暗号ソフトウェア(以下,Z ソフトという)を用いて鍵ペアが生成されたものを対象に秘密鍵の推定を試み,推定に成功したものを掲示している旨の説明がありました。

鍵ペアの生成には乱数が使われる。乱数列が予測できると,生成される鍵も推定できてしまう。Q サイトは,Z ソフトで生成された鍵ペアを対象に秘密鍵の推定に成功している。このことから,暗号に使う擬似乱数生成器が生成する乱数列には,予測不可能であることが求められる。よってエである。

誤りの選択肢との違い。ア(一様分布でない)は,値の出方に偏りがあると推定しやすくなるので逆の性質である。イ(規則性がある)とウ(周期が短い)も,次の値や再現が予測しやすくなるので,求められる性質ではない。

解答群から選ぶ設問で,字数制限は無い。“予測不可能”は,乱数に求められる性質として暗号の分野で最もよく問われる点である。

設問2(1) 解答欄2つ

本文中及び図 1 中の [ ア ],[ イ ] に入れる適切な字句を,それぞれ 5 字以内で答えよ。

〔ア〕解答例

  • 利用

〔イ〕解答例

  • 失効
解説

本文の根拠

〔鍵の危たい化への初動対応〕

当該鍵に関わるサーバ証明書の [ ア ] 停止

〔鍵の危たい化への初動対応〕

当該鍵に関わるサーバ証明書の [ イ ] 申請

危たい化した鍵に関わるサーバ証明書は,そのまま使い続けると,漏えいした秘密鍵で偽サイトなどに悪用される。そこで,まず証明書の“利用”を停止する。その上で,認証局サービス事業者に“失効”を申請する。失効しておけば,証明書が失効したことを利用者側が確認できる。よって,ア は“利用”,イ は“失効”である。

停止と申請を分けているのは,利用の停止が自社でできる措置で,失効は認証局にしてもらう手続きだからである。採点講評も,関係するサーバ証明書の利用を停止し,かつ失効を遅滞なく行うべきだと述べている。

字数は,それぞれ 5 字以内で,解答例はどちらも 2 字。“使用”“無効化”のような別の語でも意味は通じるが,本文の“停止”“申請”に続けて自然に読める字句を選ぶ。

採点講評(IPA)

設問2(1)は,鍵の危たい化発生時の対応を問う問題である。危たい化が明らかとなった場合,被害の発生を最小にとどめるために,関係するサーバ証明書の利用を停止し,かつ当該サーバ証明書の失効を遅滞なく行わなければならない。設問2(2)で採り上げたように,情報公開を適切に行うことも求められる。システム運用の現場において,危たい化発生時の対応についての検討が不足していることはないだろうか。受験者各位は,正しい知識を身につけ,現場に貢献してほしい。

設問2(2) 解答欄2つ

図 1 中の下線③について,公表すべき情報として,重要なものを二つ挙げ,それぞれ 20 字以内で具体的に述べよ。

〔①〕解答例

  • 鍵が危たい化したWebサイトのFQDN

〔②〕解答例

  • 鍵が危たい化したと思われる日時
解説

本文の根拠

図1

当該鍵を使用していたサーバの利用者が,自身の被害の可能性を判断できるようにするための情報の公表

利用者が,自分が被害を受けたかもしれないかを判断するには,どのサイトの鍵が,いつ危たい化したかが分かればよい。そこで公表すべき情報は,鍵が危たい化した Web サイトの FQDN と,鍵が危たい化したと思われる日時である。FQDN で,自分が接続した可能性のあるサイトかどうかを,日時で,その前後に自分が通信したかどうかを判断できる。

この二つは,利用者自身が被害の可能性を判断するための材料である。調査の経緯や再発防止策は,被害の可能性の判断には直接使えない。

字数はそれぞれ 20 字以内で,解答例は 19 字と 15 字。重要なものを二つ挙げる設問で,二つは別の観点でなければならない。“FQDN”と“日時”のように,具体的な情報の名前を書く。

採点講評(IPA)

設問2(1)は,鍵の危たい化発生時の対応を問う問題である。危たい化が明らかとなった場合,被害の発生を最小にとどめるために,関係するサーバ証明書の利用を停止し,かつ当該サーバ証明書の失効を遅滞なく行わなければならない。設問2(2)で採り上げたように,情報公開を適切に行うことも求められる。システム運用の現場において,危たい化発生時の対応についての検討が不足していることはないだろうか。受験者各位は,正しい知識を身につけ,現場に貢献してほしい。

設問2(3) 解答欄1つ

図 1 中の e に入れる適切な字句を,7 字以内で答えよ。

〔e〕解答例

  • 鍵ペア
解説

本文の根拠

図1

危たい化した鍵に関わる証明書署名要求(CSR)の再利用禁止

システムを復旧させるときの遵守事項として,危たい化した鍵に関わる CSR の再利用を禁止する。CSR(証明書署名要求)には,鍵ペアの公開鍵が含まれる。危たい化した鍵に対応する CSR を使うと,同じ鍵のサーバ証明書が再び発行されてしまうので,新しい鍵ペアを生成し,その CSR を使って証明書を申請する。よって,e は“鍵ペア”である。

(2) の“その利用”は,新しい鍵ペアを生成するだけでなく,新しい鍵ペアを実際にサーバ証明書の申請に使う,という意味である。鍵ペアの生成には,設問1(3)のとおり,予測不可能な乱数を使うことが前提になる。

字数は 7 字以内で,解答例は 3 字。“新しい鍵ペア”ではなく,解答例どおり“鍵ペア”と書いても,文脈上は新しい鍵ペアを指す。“公開鍵”だけでは,鍵ペアの生成という意味にならない。

設問3(1) 20字以内

本文中の下線④について,H 氏が提案した措置を,20 字以内で述べよ。

解答例

  • SSL3.0を利用しない設定にする。
解説

本文の根拠

図4

SSL 3.0 プロトコルのパディングチェックの脆弱性を利用して攻撃する。

図4

TLS 1.0 以降のプロトコルについて,同様のパディングチェックの仕組みを突いた攻撃の可能性はあるが,実装上の問題がなければ成功は困難と考えられている。

図2

利用可能なプロトコルのバージョン:SSL 3.0,TLS 1.0,TLS 1.1,TLS 1.2

POODLE 攻撃は SSL 3.0 の仕様上の脆弱性(パディングチェック)を突く攻撃で,TLS 1.0 以降では実装上の問題がなければ成功は困難とされている。EC サイトのサーバは,SSL 3.0 を含む 4 つのバージョンを利用可能にしている。したがって,SSL 3.0 を利用しない(無効にする)設定にすれば,問題 1 は解決する。解答例は“SSL3.0を利用しない設定にする。”である。

実装上のミスではなく SSL 3.0 のプロトコルそのものの脆弱性なので,ソフトウェアの修正(パッチ)では解決しない。使わせない設定にするのが対策になる。なお,TLS 1.0 以降を無効にする必要は無い。

字数は 20 字以内で,解答例は 18 字。“SSL 3.0”と“利用しない”の 2 点を入れる。“TLS 1.2 に更新する”だけでは,SSL 3.0 が残る場合に不十分である。

設問3(2)

本文中の下線⑤について,SSL/TLS の利用において,PFS の性質をもつ鍵交換方式を解答群の中から全て選び,記号で答えよ。解答群 ア AES イ CFB ウ DHE エ DSA オ ECDHE カ ECDSA キ PKCS ク RSA

解答例

  • ウ,オ
解説

本文の根拠

問題 2

⑤PFS の性質をもつ鍵交換方式を利用せず,代わりに,⑥セッション鍵を共有するための秘密情報をクライアントがサーバ証明書に記載された RSA の公開鍵を用いて暗号化して送信する方式を用いていたことである。

図2

TLS_RSA_WITH_AES_128_CBC_SHA

PFS(Perfect Forward Secrecy)は,サーバの秘密鍵が漏えいしても,過去の通信の内容を復号できない性質である。セッションごとに使い捨ての鍵(一時的な鍵)を使って鍵交換を行うことで実現する。解答群のうち,これに当たるのは,Diffie-Hellman 鍵交換(一時鍵を使う DHE)と,楕円曲線を用いた ECDHE である。よって,ウとオである。

図2 の暗号スイート TLS_RSA_WITH_… は,鍵交換に RSA を使う(図3 の (a))。これはサーバ証明書の公開鍵で秘密情報を暗号化して送る方式で,PFS の性質をもたない。クの RSA が答えにならないのはこのためである。

誤りの選択肢との違い。AES(ア)と CFB(イ)は,データの暗号化のアルゴリズムと利用モード,DSA(エ)と ECDSA(カ)は署名のアルゴリズム,PKCS(キ)は規格群の名前で,どれも鍵交換方式ではない。全て選ぶ設問なので,ウとオの両方を答える。

設問3(3)

本文中の下線⑥について,RSA の鍵が危たい化した場合に,当該鍵を用いてハンドシェイクを行った通信に関するリスクは何か。そのリスクの説明として,最も適切なものを解答群の中から選び,記号で答えよ。ここで,攻撃者は,Web ブラウザと Web サーバの通信経路上におり,危たい化前後における通信データを取得していたものとする。解答群 ア 取得された通信データのうち,鍵が危たい化した時点より前の通信データだけを,復元されるおそれがある。 イ 取得された通信データのうち,鍵が危たい化した時点で通信中だった通信データだけを,復元されるおそれがある。 ウ 取得された通信データのうち,鍵が危たい化した時点より後の通信データだけを,復元されるおそれがある。 エ 取得された通信データの全てを復元されるおそれがある。

解答例

  • エ
解説

本文の根拠

問題 2

セッション鍵を共有するための秘密情報をクライアントがサーバ証明書に記載された RSA の公開鍵を用いて暗号化して送信する方式

図3 の説明

(a) 認証及び鍵交換のアルゴリズム

RSA の公開鍵で暗号化して送る方式では,セッション鍵を作る元の秘密情報が,サーバの秘密鍵で復号できる形で通信路上を流れる。通信データを取得していた攻撃者が,後で秘密鍵を入手すると,取得済みの通信データから秘密情報を復号し,セッション鍵を求めて,通信データの内容を復元できる。これは,鍵が危たい化した時点の前でも後でも,同じ鍵を使ってハンドシェイクした通信の全てに当てはまる。よって,取得された通信データの全てを復元されるおそれがある,エが答えである。

攻撃者は危たい化の前後の通信データを取得していたという条件で,時点を限定する選択肢(ア,イ,ウ)は成り立たない。ア~ウは,危たい化の前後の一部だけを復元できるとする点が誤りである。

解答群から選ぶ設問で,字数制限は無い。PFS の性質をもつ方式(設問3(2))なら,過去の通信は守られるので,この設問の裏返しが PFS の利点になる。

設問3(4) 40字以内

本文中の下線⑦について,妥当でないと指摘した理由を,40 字以内で述べよ。

解答例

  • ドメイン認証証明書ではサーバの運営者がC社であることを確認できないから
解説

本文の根拠

問題 3

⑦EC サイトが新たに立ち上げたサイトであることを考慮すると,ドメイン認証証明書の選択は妥当でない

冒頭

C 社の社名も比較的知られるようになった。C 社では,事業を更に拡大するために,新たに独自のドメイン名を取得し,C 社専用の販売サイト(以下,EC サイトという)を立ち上げることにした。

ドメイン認証証明書は,認証局が,申請者がそのドメインを管理していることだけを確認して発行する。サーバの運営者が実在する C 社であることまでは確認しない。EC サイトは,C 社が新しいドメイン名で立ち上げたサイトなので,利用者が見ても,このサイトの運営者が C 社であることを証明書から確認できない。EV 証明書など,組織の実在を審査する証明書であれば,運営者が C 社であることを確認できる。よって,ドメイン認証証明書では,サーバの運営者が C 社であることを確認できないからである。

新しいサイトは,利用者が C 社のサイトだと分かりにくいので,偽サイトと区別できる証明書が望ましい。設問1(1)で出た EV 証明書がこれに当たる。採点講評も,サーバ証明書の種類と発行時の審査の違いを理解しておくよう述べている。

字数は 40 字以内で,解答例は 35 字。“ドメイン認証証明書では”と“運営者がC社であることを確認できない”の 2 点を入れる。“暗号化できない”のように,通信の暗号化と混同しない。

採点講評(IPA)

設問3(4)は,サーバ証明書の種類についての問題である。正答率は低かった。市場で販売されているサーバ証明書には複数の種類があり,適材適所がある。Webサーバの目的に照らして最適なサーバ証明書を採用できるように,サーバ証明書の仕様及び発行時の審査の違いを正しく理解しておいてほしい。

出典:平成29年度 秋期 情報処理安全確保支援士試験 午後Ⅰ 問3(表記を一部改変)