平成23年度 秋期に実施された情報処理安全確保支援士試験
午後Ⅰの全4問(記述式)の全設問に,運営者が独自に書いた解説を付けています。事例本文のどこが根拠になるかを示し,IPA の解答例・採点講評と並べています。
この試験について:情報処理安全確保支援士試験について
この年度を解いてみる
問1 セキュアプログラミング
セキュアプログラミングに関する次の記述を読んで,設問 1~3 に答えよ。
E 社は,従業員数 100 名の自動車部品販売会社であり,販売先は日本各地に散在している。5 年前に社内 LAN を導入した際,営業報告管理システム(以下,X システムという)を開発し,社内 LAN 上で運用を始めた。X システムは C++で開発した Web アプリケーション(以下,X システムの Web アプリケーションを X-Web アプリという),Web サーバ及びデータベースで構成されている。
〔X システムへの新たな要望とその対応〕
これまで営業報告は,その日の営業活動終了後に営業社員が会社に戻り,X システムを用いて営業報告書を作成して,更に X システム上で営業部長に提出し,必要な場合は口頭によって補足する方法がとられてきた。また,遠方の販売先に出張した場合には電話で報告を行い,後日出社した際に営業報告書を作成して営業部長に提出してきた。
インターネットが普及したことから,会社に戻らなくても出張先で営業報告を行えるようにしてほしいという要望が営業社員から出されていた。さらに,他社との競争も激しくなっていることから,E 社としても営業力強化が必要であると経営者が判断し,この要望に対応することになった。具体的には,営業活動の都度,インターネットを利用して報告することで,営業部長が営業活動の状況を逐次把握し,必要に応じて指示ができるようにすることにした。情報システム部の B 君が X-Web アプリの改修を担当することになった。
なお,X システムのデータベースは現状のものを使うことにした。現状の X-Web アプリは,社外からインターネット経由でアクセスすることを想定しておらず,脆弱性対策も行われていない。
〔代表的な脆弱性への対策方法の確認〕
社内の他の Web アプリケーションは Java で開発されている。B 君は,X-Web アプリを Java で書き直す案もあると考え,先輩の D 主任に相談した。D 主任から,“一般的には Java が良いと言われているよ”という助言をもらったが,B 君は,C++と Java のそれぞれを採用するメリットとデメリットを比較することにした。B 君は,X-Web アプリの中で SQL インジェクションの脆弱性がある関数を一つ見つけたので,C++と Java での対策方法を比較してみることにした。その関数 getReport の仕様を図 1 に示す。
図 1 getReport の仕様(抜粋)
SQL インジェクション対策前の C++コードを図 2 に示す。
図 2 SQL インジェクション対策前の C++コード
B 君は,このコードに対し,SQL インジェクション対策を行ってみた。この対策は,a を用いて SQL 文を組み立てるというものである。対策後の C++コードを図 3 に示す。
図 3 SQL インジェクション対策後の C++コード
B 君は,図 3 の C++コードと同様の対策を実施した同じ仕様のプログラムを Java で作成してみた。そのコードを図 4 に示す。
図 4 SQL インジェクション対策を実施した Java コード
この後,図 2~4 のコードには SQL インジェクション以外にも①代表的な脆弱性 の原因となるコードが含まれていることが分かり,B 君は,c を d 処理するという対策を図 3 と図 4 のコードにそれぞれ追加した。
次に,B 君は,インターネット上の信頼できる Web サイトを調査し,図 5 に示すような,脆弱性につながる C++の特性の解説を見つけた。
図 5 脆弱性につながる C++の特性の解説(抜粋)
B 君は,この C++の特性に対して,Java の特性を図 6 に整理した。
図 6 Java の特性
B 君は,以上の調査結果を踏まえ,X-Web アプリの改修でどちらの言語を採用するかを検討するために,両言語を採用する場合のメリット,デメリットを整理した。両言語の比較表を表 1 に示す。
表 1 両言語の比較表(抜粋)
〔その後の状況〕
今回の対応では,C++を用いた場合に f 対策が多くの部分で必要となることが確認されたので,表 1 を基に B 君は Java を採用することを提案した。その提案を受けて,情報システム部内で検討を重ね,情報システム部長が Java を採用することを承認した。言語を変更したことで X-Web アプリを書き直すことになったが,B 君はこの改修を無事に行うことができた。
出題趣旨(IPA)
Webアプリケーションの脆弱性対策の基本的な考え方は,プログラム言語にかかわらず共通であると言える。しかしながら,セキュアなプログラミングを実践するためには,使用している言語の特性を理解した上でその特性に合った対応をとる必要がある。本問では,二つのプログラム言語の比較を通して,それぞれのプログラム言語の特性に合った脆弱性対策を正しく認識しているかを問う。
採点講評(問全体・IPA)
問1では,Webアプリケーションのセキュアプログラミングに関して,C++とJavaでの脆弱性対策の共通点と相違点を正しく認識しているかどうか出題した。全体として正答率は想定どおりだった。
セキュアプログラミングについて,脆弱性対策の手段だけではなく,その発生理由や防御メカニズムも含めて,正確な情報を理解して,活用できるようにしてほしい。
設問と解答例
設問1(1)
図 2 で SQL インジェクションの原因となるコーディング部分が複数ある。そのコーディング部分に書かれた変数名を,コード上から選び,全て答えよ。
解答例
解説
本文の根拠
図 2
string query = "SELECT report FROM reports WHERE user = '" + user + "'";
図 2
query += " AND day = '" + day + "'";
図 1
user - 利用者画面からの入力を基に作成した営業社員名
SQL インジェクションは,利用者が入力した値が SQL 文の一部として解釈されることで起きる。図 2 では,SQL 文を表す変数 query に,文字列の連結(+)で user と day の値をそのまま埋め込んでいる。図 1 の仕様のとおり,user も day も“利用者画面からの入力を基に作成した”値なので,ここが原因になる。
コード上の変数名は多いが,SQL 文の組立てに使われているのは user と day の二つだけである。con はデータベースへの接続,stmt と res は文の実行と結果を扱うオブジェクトで,rep は SQL 文の実行後にデータベースから取り出した値であり,SQL 文の組立てには使われていない。
この設問は変数名を全て挙げる形なので,解答例は“user,day”と二つを並べる。一つだけでは不十分で,講評も(1)は比較対象もあって正答率が高かったとしている。
採点講評(IPA)
設問1のコード上から変数名を選択する問題では,(1)は比較対象もあり正答率は高かったが,(6)は正答率は低かった。(4)は代表的な脆弱性を解答群から選択する問題で正答率は高かったが,“コマンドインジェクション”という誤った解答が多かった。設問1の中ではプログラミング技法について複数出題したが,開発標準に関する経験が少ないためか,正確に記述できているものが少なかった。
設問1(2)
12字以内
解答欄1つ
本文中の a に入れる適切なプログラミング技法を 12 字以内で答えよ。
解説
本文の根拠
〔代表的な脆弱性への対策方法の確認〕
この対策は,a を用いて SQL 文を組み立てるというものである。
図 3
string query = "SELECT report FROM reports WHERE user = ? AND day = ?";
図 3 の SQL 文では,user と day の値が入る位置が“?”に置き換わっており,値は pstmt->setString(1, user) のように後から割り当てている。このように SQL 文の雛形に変数の位置を示す記号を置き,値は後から機械的に割り当てる技法がプレースホルダである。IPA の「安全なウェブサイトの作り方」は,SQL 文の組立てを全てプレースホルダで実装することを根本的解決としており,文字列連結のような組立てと違って SQL インジェクションの脆弱性を解消できると説明している。
本文は,この技法を用いて SQL 文を“組み立てる”と述べ,図 3 の PreparedStatement と prepareStatement がその実装に当たる。値を SQL 文の構文の一部ではなく単なる値として扱う点が,図 2 との違いである。
12 字以内なので,解答例は 7 字の“プレースホルダ”。講評は,この設問を含むプログラミング技法の設問で,正確に記述できているものが少なかったと述べている。
設問1(3)
解答欄1つ
図 4 中の b に入れる適切な文字列を英字で答えよ。
解説
本文の根拠
図 3
pstmt = con->prepareStatement(query);
図 4
ps = con.b (query);
図 4 は図 3 の C++コードと同様の対策を Java で実施したものである。図 3 で PreparedStatement を得ている行は pstmt = con->prepareStatement(query); であり,図 4 の対応する行は ps = con.b (query); である。Java の java.sql.Connection インタフェースには,パラメタの位置を“?”で示した SQL 文を受け取り,プリコンパイル済みの PreparedStatement オブジェクトを返す prepareStatement(String sql) メソッドがある(Oracle の Java SE API 仕様)。したがって b は prepareStatement になる。
query は図 4 で“?”入りの SQL 文として用意されており,直後の ps.setString(1, user) と ps.setString(2, day) で値を割り当てている。この流れは図 3 と同じなので,図 3 の呼出し名から答えを導ける。
英字で答える設問なので,大文字小文字は図 3 の呼出しと同じ prepareStatement とする。
設問1(4)
本文中の下線①の代表的な脆弱性を解答群の中から選び,記号で答えよ。解答群 ア クロスサイトスクリプティング イ クロスサイトリクエストフォージェリ ウ コマンドインジェクション エ セッションフィクセーション
解答例
解説
本文の根拠
図 2
cout << "user = '" << user << "'<BR>";
図 2
cout << "report = '" << rep << "'<BR>";
〔代表的な脆弱性への対策方法の確認〕
図 2~4 のコードには SQL インジェクション以外にも①代表的な脆弱性の原因となるコードが含まれていることが分かり
図 2~4 のコードは,利用者から受け取った user と day,及びデータベースから取り出した rep を,そのまま HTML の一部として出力している(cout や out.write の行)。入力値に含まれるスクリプトなどが何も処理されずに Web ページへ出力されると,ブラウザがそれを実行してしまう。これがクロスサイトスクリプティング(ア)であり,SQL インジェクション以外で,このコードが原因になる代表的な脆弱性である。設問 1(5) の対策(HTML における特別な記号のエスケープ)も,この脆弱性に対するものである。
図 2~4 には,OS のコマンドを組み立てて実行する処理は無く,セッション ID を扱う処理や,リクエストの送信元を確かめる処理もない。イ(クロスサイトリクエストフォージェリ),ウ(コマンドインジェクション),エ(セッションフィクセーション)は,コードの内容と合わない。
講評は,(4)の正答率は高かったが,“コマンドインジェクション”という誤った解答が多かったと述べている。出力する値が HTML に埋め込まれる点に注目して選ぶ。
採点講評(IPA)
設問1のコード上から変数名を選択する問題では,(1)は比較対象もあり正答率は高かったが,(6)は正答率は低かった。(4)は代表的な脆弱性を解答群から選択する問題で正答率は高かったが,“コマンドインジェクション”という誤った解答が多かった。設問1の中ではプログラミング技法について複数出題したが,開発標準に関する経験が少ないためか,正確に記述できているものが少なかった。
設問1(5)
解答欄2つ
本文中の c ,d について,d に入れる適切なプログラミング技法を 10 字以内で,その技法の対象を明確に示す c に入れる適切な字句を 20 字以内で答えよ。
解説
本文の根拠
〔代表的な脆弱性への対策方法の確認〕
B 君は,c を d 処理するという対策を図 3 と図 4 のコードにそれぞれ追加した。
図 3
cout << "user = '" << user << "'<BR>";
設問 1(4) の脆弱性は,出力する値に含まれる HTML の特別な記号(<,> など)が,そのまま HTML の構造として解釈されることで起きる。対策は,そうした記号を別の表記に置き換える処理で,d はエスケープ,対象を示す c は“HTMLにおける特別な記号”である。
この設問は,d に入れる技法を 10 字以内,その技法の対象を c に 20 字以内で答えさせている。“処理する”の前に入るのは技法の名前なのでエスケープ,その目的語として何をエスケープするのかを c に書く。
解答例は d が 5 字,c が 13 字。c は,単に“特別な記号”とせず,どの言語の記号なのかが分かるように“HTMLにおける”を付ける。対象を明確に示すことが求められており,講評も,プログラミング技法の設問は正確に記述できているものが少なかったとしている。
設問1(6)
上記(5)の技法の対象となる変数が図 3 中に複数ある。その変数名を図 3 中から選び,全て答えよ。
解答例
解説
本文の根拠
図 3
cout << "day = '" << day << "'<BR>";
図 3
cout << "report = '" << rep << "'<BR>";
(5)の対策(HTML における特別な記号のエスケープ)の対象は,HTML の一部として出力される変数である。図 3 で出力に使われているのは,user と day(それぞれ“user = ...”“day = ...”の行)と,データベースから取り出した rep(“report = ...”の行)の三つである。query は SQL 文の雛形(定数),con・pstmt・res は出力する値ではない。
rep は利用者が直接入力した値ではなく,データベースに格納されていた営業報告の本文である。入力時の確認に頼らず,出力する位置で一律にエスケープするので,格納された値も含めて三つが対象になる。
講評は,設問 1 のうち(6)の正答率は低かったとしている。出力する変数は user,day,rep の三つあり,rep を含める点を押さえる。
採点講評(IPA)
設問1のコード上から変数名を選択する問題では,(1)は比較対象もあり正答率は高かったが,(6)は正答率は低かった。(4)は代表的な脆弱性を解答群から選択する問題で正答率は高かったが,“コマンドインジェクション”という誤った解答が多かった。設問1の中ではプログラミング技法について複数出題したが,開発標準に関する経験が少ないためか,正確に記述できているものが少なかった。
設問2
解答欄3つ
図 5 中の e に入れる適切な字句を 6 字以内で,図 5 中,表 1 中及び本文中の f ,並びに図 6 中及び表 1 中の g に入れる適切な字句を,それぞれ 12 字以内で答えよ。
解説
本文の根拠
図 5
・e による誤った領域へのアクセス
図 5
・データへのe と,関数へのe を混同したアクセス
図 6
長時間連続動作させる場合には g の実行による応答性への影響を考慮する必要がある。
e は,“誤った領域へのアクセス”の原因であり,“データへの e と,関数への e を混同したアクセス”という表現からも,データのアドレスと関数のアドレスを保持する値であることが分かる。C++で“メモリ内容への柔軟なアクセス”を可能にしているのはポインタである。f は,図 5 で“上記問題が引き起こす代表的な脆弱性”として,境界チェック漏れなどの結果に挙がっており,整数オーバフローと並ぶものはバッファオーバフローである。
g は,図 6 の Java の特性として,Java VM がメモリマネジメントを行うことと対になって“長時間連続動作させる場合には g の実行による応答性への影響”が出るものである。Java VM が不要になったメモリ領域を自動で回収する仕組みであるガーベジコレクションが当てはまる。表 1 の Java のデメリットにも g が挙がっており,同じ語が入る。
字数は e が 6 字以内,f と g が 12 字以内で,解答例は 4 字,10 字,10 字。f は“バッファオーバフロー”と,語尾の長音を付けない表記で答える。講評は,設問 2 は(1)~(3)全て正答率が高かったと述べている。
採点講評(IPA)
設問2では,二つの言語の特性を表す用語を答える問題だったが,(1)~(3)全て正答率は高かった。
設問3
20字以内
図 6 及び表 1 には,脆弱性を狙った f 攻撃が C++では問題となるのに,Java では問題とならない根本的な理由が具体的に記述されていない。図 5 の内容を踏まえて,根本的な理由である Java の言語仕様上の特徴を 20 字以内で述べよ。
解答例
解説
本文の根拠
図 5
C++は,メモリ内容への柔軟なアクセスが可能である。
図 6
Java が提供しているメモリ内容へのアクセス手段は限定的であり,メモリマネジメントは言語処理系の一部である Java VM が行う。
図 5 は,C++がメモリ内容に柔軟にアクセスできる一方で,言語処理系自体では問題を防止できないとしている。これに対し図 6 は,Java が提供するメモリ内容へのアクセス手段は限定的で,メモリマネジメントは Java VM が行うと述べている。バッファオーバフロー攻撃が C++で問題になり Java で問題にならない根本的な理由は,Java にはポインタに相当するアドレスを自分で計算して任意のメモリ位置を指す手段が提供されていないことである。解答例は“アドレスを計算対象にできないから”となる。
設問 2 の e(ポインタ)と同じく,図 5 の“誤った領域へのアクセス”や“データへのポインタと関数へのポインタを混同したアクセス”は,アドレスを自由に扱えることから起きる。アドレスを計算の対象にできなければ,領域を越えた位置への書込みの足がかりがなくなる。
20 字以内に収めるときは,“境界をチェックする”のようなコードの書き方ではなく,言語仕様の特徴を書く。講評は,単純なバッファオーバフローの範囲までの解答が多く,正答率が低かったと述べており,言語特性を述べるために問題文を丁寧に読むよう求めている。解答例は 16 字。
採点講評(IPA)
設問3では,二つの言語を比較してバッファオーバフロー攻撃が可能になる言語特性を問うたが,問題文を丁寧に読んでいないのか,単純なバッファオーバフローの範囲までの解答が多く,正答率が低かった。
出典:平成23年度 秋期 情報処理安全確保支援士試験 午後Ⅰ 問1(表記を一部改変)
問2 販売システムへの機能追加設計
販売システムへの機能追加設計に関する次の記述を読んで,設問 1~5 に答えよ。
A 社は,部品製造を営む従業員数 250 名の中堅会社である。インターネットを介した販売システム(以下,N システムという)を利用し,企業向けに自社製品を販売している。N システムは,A 社の販売部が 3 年前に開発し,運用している。
N システムの利用者は,利用者 ID(以下,UID という)を保有しており,ブラウザからインターネット経由で N システムにアクセスし,ログイン画面で UID 名とパスワードを入力することによってログインした上で,製品の在庫確認,注文を行う。N システムを利用する企業(以下,契約企業という)は,N システムの利用契約時に,利用責任者を 1 名登録する。利用責任者は,ヘルプデスクに対して,UID の新規登録の他,UID の削除,パスワード初期化,サスペンド解除を申請できる。申請の際は,利用責任者が申請書を電子メール(以下,メールという)でヘルプデスクに送付する。
N システムでは,UID に対して表 1 に示す属性を定義し,その値をログイン処理に利用している。N システムの UID 及びログイン処理に関する,セキュリティ要件は図 1 のとおりである。
表 1 UID に定義している属性(N システムの設計書からの抜粋)
図 1 N システムの UID 及びログイン処理に関する,セキュリティ要件
ヘルプデスクでは,図 2 に示す運用手順で UID を管理している。ヘルプデスクによる UID の設定変更時には,表 2 に示す値を UID の属性に設定する。サスペンド設定は,バッチ処理で行う。バッチ処理は,毎日 00:00 に実行し,現在時刻が lastlogin_t の値から 90 日以上経過した全ての UID に対して,表 2 の設定変更 (e) に示す各属性値を設定する。
図 2 UID 管理に関するヘルプデスクの運用手順
表 2 設定変更時に UID の属性に設定する値
また,N システムのログイン画面で,UID 名とパスワードが入力された場合のログイン処理の流れを図 3 に示す。ログイン成功時とロックアウト発生時に,利用者にメールで通知することで,不正ログイン及びその試行を利用者が把握できるようにしている。
図 3 N システムのログイン処理の流れ(N システムの設計書からの抜粋)
〔契約企業からの要望〕
N システムの利用者数と利用頻度が増えるにつれて,利用者がパスワードを忘れた場合のパスワード初期化に要する期間を短縮してほしいという要望が,利用責任者からヘルプデスクに多く寄せられるようになった。パスワード初期化の申請から完了までの期間に利用者が N システムを利用できないことで,契約企業によっては業務に悪影響が発生していることが背景にあった。
販売部では,N システムの利便性向上を目的として,利用責任者とヘルプデスクを介さずに,利用者自身がパスワード初期化を短時間で行えるパスワード初期化機能を N システムに追加することを決定した。
販売部の H 部長は,新人の F 君に対して,G 主任の支援を受け,パスワード初期化機能を設計するように指示した。また,H 部長は,アプリケーションへの不用意な機能追加が原因で,セキュリティ上の問題が発生する事例が一般的に少なくないことを挙げ,現状の N システムの仕様を十分に理解した上で検討を進め,社内の有識者によるレビューを受けるよう F 君と G 主任に伝えた。
〔パスワード初期化機能の設計〕
F 君は,図 1 に示すセキュリティ要件に従って,N システムのパスワード初期化機能を検討した。F 君が作成した設計案を,図 4 に示す。
図 4 パスワード初期化機能の設計案
G 主任は F 君の設計案に対して,次の点を指摘した。
指摘 1:この設計案では,ある状態の UID に対してパスワード初期化を行った場合に,図 1 に示すセキュリティ要件が満たされなくなる。 F 君は G 主任の支援を受け,指摘 1 の問題点に対して図 4 の設計案を修正した。その後,社内の有識者による設計案のレビューが実施された。そのレビューでは,指摘 1 とは別に,次の 2 点が指摘された。
指摘 2:今回設計したパスワード初期化機能によって仮パスワードを発行した場合には,図 1 のセキュリティ要件のうち,(エ) に記されているログイン処理中の強制的なパスワード変更ページへの遷移は不要ではないか。 指摘 3:現行のヘルプデスクによるパスワード初期化運用と比較した場合に,図 4 の設計案に示す (ⅰ)~(ⅴ) の手順には,攻撃者に不正に仮パスワードを取得されるリスクがある。 指摘 2 については,販売部での検討の結果,今回の機能追加においては図 1 のセキュリティ要件を変更しないという判断に基づき,指摘対象となったログイン処理中の強制的なパスワード変更ページへの遷移は残すこととした。
指摘 3 については,今回予定していた開発予算を考慮すると,これ以上のセキュリティ強化は困難であると販売部では判断した。また,設計したパスワード初期化機能の利用を契約企業単位で選択できるようにした。その後,販売部では,F 君の設計に基づいてパスワード初期化機能の開発に着手した。
出題趣旨(IPA)
システムに対して,現行の設計を十分に考慮せず不用意に機能を追加することで,セキュリティ上の問題が発生する事例は少なくない。本問では,システムへの機能追加に関する開発プロジェクトの設計工程において,セキュリティの観点でのレビューを適切に実施することで問題点を指摘し,適切な修正案を提示する能力を問う。
採点講評(問全体・IPA)
問2では,開発プロジェクトの設計工程における,セキュリティの観点から行うレビューについて出題した。全体として正答率は想定どおりだった。
設問と解答例
設問1
解答欄1つ
表 1 中の a に入れる適切な字句を解答群の中から選び,記号で答えよ。解答群 ア AES イ RC4 ウ RSA エ SHA-256
解説
本文の根拠
表 1
password:ソルトを付加したパスワードの,ハッシュ関数 a によるハッシュ値を表す。
表 2
“仮パスワード”はソルトを付加した仮パスワードのハッシュ値を
表 1 の password 属性は,パスワードそのものではなく,ソルトを付加したパスワードのハッシュ値を保存している。a には,この“ハッシュ関数”として使うアルゴリズム名が入る。解答群の中でハッシュ関数に当たるのは SHA-256(エ)である。
表 2 の注記 2 も,password に設定する“仮パスワード”をソルトを付加した仮パスワードのハッシュ値と説明しており,password の値はパスワードに戻せない形で保存される前提になっている。ハッシュ関数は,入力から固定長の値を求める一方向の関数であり,保存した値から元のパスワードを復元することを目的としない。
誤りの選択肢は暗号化(復号できる)のアルゴリズムである。AES(ア)と RC4(イ)は共通鍵暗号で,このうち RC4 は RFC 7465 でストリーム暗号と説明され,TLS では使わないこと(暗号スイートとして交渉しないこと)が求められている。RSA(ウ)は公開鍵暗号である。いずれも“ハッシュ関数”ではないので,a には入らない。
設問2
解答欄4つ
図 3 中の b ~e に入れる適切な字句を,表 1 中の属性名を用いて,b ,d ,e は 15 字以内で,c は 30 字以内で,それぞれ答えよ。
解説
本文の根拠
表 1
0:ログイン可能,1:ロックアウト状態,2:サスペンド状態
図 1
ログイン時に,パスワードを連続して 5 回間違えた場合,その UID はログイン不可能になる。
図 1
ロックアウト状態は,60 分以上経過した後の最初のログイン時に解除される。
図 1
仮パスワード状態の UID で N システムにログインすると,ログイン処理の中で強制的にパスワード変更ページへ遷移する。
図 3 の流れを,図 1 のセキュリティ要件と表 1 の属性値に照らして読む。UID 名が存在する場合の最初の分岐 b は,YES でパスワード照合へ進み,NO では“status の値が 1”の判定に進む。status が 0(ログイン可能)ならそのままパスワードを照合するので,b は“statusの値が0”である。status が 1(ロックアウト状態)のときは,c でロックアウトを解除してよいかを判定する。解除後の処理が“fails の値に 0 を設定”“status の値に 0 を設定”であることから,図 1 のロックアウトの解除条件,つまり lockout_t の値から 60 分以上経過していることを調べるのが c である。
パスワードが誤りのときは“fails の値に 1 を加える”。その後の d の NO では lockout_t に現在時刻を設定し,status を 1 にして,メール送信する(ロックアウト発生)。図 1 は 5 回連続して間違えるとロックアウトになるので,1 を加えた後の fails が 4 以下なら YES(失敗のまま終了),5 になったら NO でロックアウトとなる。したがって d は“failsの値が4以下”。パスワードが正しいときは“fails の値に 0 を設定”した後,e で仮パスワード状態かを判定する。NO のとき“パスワード変更処理”を行い,その後に“temppass の値に 0 を設定”するので,YES が仮パスワードでない場合に当たる e は“temppassの値が0”である。
字数は b・d・e が 15 字以内,c が 30 字以内で,解答例は 10 字,24 字,11 字,12 字。属性名は表 1 のとおり書く。講評は,設問 2 の正答率は全体的に高かったとしている。
採点講評(IPA)
設問2は全体的に正答率が高かった。利用者IDの状態を意識してログイン処理のフローを設計することは,システムのセキュリティを確保するためにも重要であり,実務においても確実にできることを期待したい。
設問3(1)
45字以内
図 1 のセキュリティ要件がどのように満たされなくなるか。45 字以内で具体的に述べよ。
解答例
サスペンド状態のUIDに対するパスワード初期化によって利用者がサスペンドを解除できる。
解説
本文の根拠
図 1
サスペンド状態は,契約企業の利用責任者からのサスペンド解除申請によってだけ解除でき,利用者自身では解除できないようにする。
表 2
設定変更 (b) パスワード初期化:password は仮パスワード,mailaddr は-,status は 0,temppass は 1,fails は 0,lastlogin_t は-。
図 4
このとき,UID の各属性に対して,表 2 の設定変更 (b) に示す値を設定する。
図 4 の設計案は,仮パスワードの発行時に,表 2 の設定変更 (b) の値を UID の属性に設定する。(b) は status を 0 にするので,パスワード初期化の対象がサスペンド状態(status が 2)の UID でも,status が 0 に書き換わり,ログインできる状態になる。
図 1 の(カ)は,サスペンド状態は利用責任者からの解除申請によってだけ解除でき,利用者自身では解除できないようにするとしている。ところが,この設計案では,サスペンド状態の利用者が,取得ページ URL から仮パスワードを発行することで,自分でサスペンドを解除できる。
解答例は 43 字で,45 字以内に収まる。“サスペンド状態の UID が対象になる”こと,及び“利用者自身で解除できる”ことの二つを含める。講評は,設問 3 の正答率がやや低かったとしている。
採点講評(IPA)
設問3は正答率がやや低かった。現行システムの設計や運用手順を十分に理解しないままシステムに不用意な機能追加を行うと,セキュリティ上の問題が発生する可能性があること,及びそういったセキュリティ上の問題を発見するための組織的なレビューが重要であることを再認識してほしい。
設問3(2)
35字以内
上記(1)の問題点の発生を防止するためには,パスワード初期化機能にどのような修正が必要か。表 1 中の属性名を用いて,35 字以内で述べよ。
解答例
statusの値が2のUIDはパスワード初期化を実行しない。
解説
本文の根拠
図 2
サスペンド状態の UID に対しては,UID の削除とサスペンド解除の申請だけを受け付け,それ以外の申請は受け付けない。
表 1
0:ログイン可能,1:ロックアウト状態,2:サスペンド状態
問題の原因は,パスワード初期化が status を 0 にする点にある(設問 3(1))。防止するには,サスペンド状態の UID に対してはパスワード初期化を行わないようにすればよい。図 2 の運用手順 5 は,ヘルプデスクの運用で既にそうしており,サスペンド状態の UID は削除とサスペンド解除の申請だけを受け付ける。同じ制限を,パスワード初期化機能にも設ける。
表 1 のとおり status の値 2 がサスペンド状態を表すので,“status の値が 2 の UID”がパスワード初期化の対象外になる。解答例は“statusの値が2のUIDはパスワード初期化を実行しない。”の 30 字で,35 字以内に収まる。
属性名を使って書くことが求められており,“サスペンド状態の UID”と状態の名前だけで書くのではなく,status の値という判定の基準まで書く。
採点講評(IPA)
設問3は正答率がやや低かった。現行システムの設計や運用手順を十分に理解しないままシステムに不用意な機能追加を行うと,セキュリティ上の問題が発生する可能性があること,及びそういったセキュリティ上の問題を発見するための組織的なレビューが重要であることを再認識してほしい。
設問4
30字以内
指摘 2 の内容が指摘された理由を,図 2 のヘルプデスクによる運用手順との違いを踏まえて,30 字以内で述べよ。
解答例
解説
本文の根拠
図 2
設定した仮パスワードは,ヘルプデスク担当者が利用責任者に電話し,読み上げて通知する。
図 4
利用者が,メールで通知された取得ページ URL にブラウザでアクセスすると,プログラムが仮パスワードを発行し,ブラウザに表示する。
図 4
発行する仮パスワードは,図 1 のセキュリティ要件を満たし,ヘルプデスク担当者でも推測できない文字列とする。
図 1 の(エ)が仮パスワード状態でパスワード変更ページへ強制的に遷移させるのは,仮パスワードが他人に知られている可能性があるからである。図 2 のヘルプデスクの運用では,仮パスワードをヘルプデスク担当者が決定し,電話で利用責任者に読み上げて通知する。仮パスワードを担当者や利用責任者が知るので,使い続けさせないために強制変更が必要になる。
今回の設計案では,プログラムが仮パスワードを発行して,取得ページを開いた利用者のブラウザにだけ表示し,推測もできない文字列とする。仮パスワードを知るのは利用者だけなので,強制的な変更は不要ではないか,というのが指摘 2 である。
解答例は“仮パスワードを知っているのが利用者だけであるから”の 24 字(30 字以内)。講評は,この設問の正答率が低く,問題文中に記載されたシステムの変更点だけを書いている解答が散見されたとして,状況設定を理解した上で,仮パスワードを知り得るのが誰であるのかに注目してほしかったと述べている。
採点講評(IPA)
設問4は正答率が低かった。問題文中に記載されたシステムの変更点だけを書いている解答が散見された。状況設定を理解した上で,仮パスワードを知り得るのが誰であるのかに注目して解答してほしかった。
設問5
45字以内
指摘 3 について,攻撃者が不正に仮パスワードを取得する手口を 45 字以内で述べよ。
解答例
取得ページURLを通知するメールを盗聴し,利用者より先に取得ページにアクセスする手口
解説
本文の根拠
図 4
プログラムがパスワード取得ページの URL(以下,取得ページ URL という)を発行し,利用者にメールで通知する。
図 4
一度アクセスされた取得ページ URL は無効にする。
図 4
利用者のブラウザと,申請ページ及びパスワード取得ページとの間の通信には,SSL を用いる。
図 4 の手順では,仮パスワードを得る鍵は,メールで通知される取得ページ URL だけである。URL には十分に長いランダムな文字列が含まれ,推測はできないが,メールで通知される以上,その内容を盗聴されると攻撃者も同じ URL を知ることになる。SSL を用いるのは利用者のブラウザと申請ページ・取得ページとの通信であり,メールの通知経路を保護する記述は図 4 に無い。
図 2 の現行の運用では,ヘルプデスクが利用責任者の電話番号に電話して本人確認を行い,仮パスワードも電話で読み上げて通知する。これに対し,新しい手順にはそうした確認が無い。攻撃者が盗聴した URL に,利用者より先にアクセスすれば,仮パスワードがブラウザに表示される。一度アクセスされた URL は無効になるので,攻撃者が先にアクセスしていれば,その後に利用者がアクセスしても取得できなくなる。
解答例は“取得ページURLを通知するメールを盗聴し,利用者より先に取得ページにアクセスする手口”の 42 字で,45 字以内に収まる。“URL を知る方法”と“先にアクセスする”の二つを書く。
出典:平成23年度 秋期 情報処理安全確保支援士試験 午後Ⅰ 問2(表記を一部改変)
問3 プロキシ経由の Web アクセス
プロキシ経由の Web アクセスに関する次の記述を読んで,設問 1~3 に答えよ。
T 社は従業員数 3,000 名の食品卸売業を営む企業であり,全国 10 都市に支社を展開している。T 社ではデータセンタ(以下,T 社 DC という)内に各種サーバを設置し,本社と各支社間を広域イーサネットで接続している。
T 社の従業員には 1 台ずつ PC が貸与されている。T 社では広域イーサネットとは別にインターネットも利用しており,インターネットへのアクセス管理ルールでは,業務目的に限りインターネット上の Web サイト(以下,インターネットサイトという)へのアクセスを許可すること,並びに各従業員のインターネットサイトへのアクセス状況を記録するために,アクセスログを取得すること及びインターネットサイトに向けて送信された内容をログとして取得することを定めている。
T 社本社及び各支社の LAN に設置した PC からは直接インターネットにアクセスできないように,ルータ及びファイアウォールを設定している。ブラウザからインターネットサイトへのアクセスは,T 社 DC に設置したプロキシを経由して行う。T 社のネットワーク構成の概要を図 1 に示す。
図 1 T 社のネットワーク構成(概要)
プロキシには U 社のプロキシ製品(以下,U プロキシという)が使われている。T 社が U プロキシで利用している機能の利用目的を図 2 に示す。
図 2 T 社が U プロキシで利用している機能の利用目的(抜粋)
〔HTTPS 通信の制限〕
T 社では,①インターネットへのアクセス管理ルールに基づき,インターネットサイトへの HTTPS 通信によるアクセスを原則として禁止している 。業務上,HTTPS 通信が必要なインターネットサイトはホワイトリストに登録し,U プロキシのフィルタリング機能を用いて,アクセスを許可している。
HTTPS 通信を許可するホワイトリストは,定期見直しを情報システム部で四半期ごとに行っている。この見直しにおいて,インターネットで電子ファイルをやり取りできるファイル共有サービスの URL が登録されていたことが判明した。この URL のインターネットサイトにアクセスしていた従業員に確認したところ,顧客との間で電子ファイルをやり取りしていたことが分かった。業務上,同インターネットサイトを利用する必要があるので,アクセスは禁止できないが,同インターネットサイトを利用すれば社外に情報を持出し可能なこと,また,電子ファイルを不正に社外へ持ち出された場合に,当該電子ファイルを特定できないことが懸念として浮上した。そのため,情報システム部の S 部長は,インターネットサイトへのアクセスに対するプロキシでのログ取得方式の改善を検討するよう,情報セキュリティ担当の K 主任に指示した。
〔新たなプロキシ製品導入の検討〕
K 主任は,HTTPS 通信時にプロキシで詳細なログを取得するためには,U プロキシとは異なる仕組みをもつプロキシ製品を導入する必要があると考えた。そこで,U プロキシを,HTTPS 通信を一旦復号する機能をもつ L 社のプロキシ製品(以下,L プロキシという)で置き換えることが可能かどうかを確認することにした。
U プロキシを利用した HTTPS 通信では,暗号化された通信路をブラウザと Web サーバ間で確立する。U プロキシを利用した場合の HTTPS 通信を図 3 に示す。
図 3 U プロキシを利用した場合の HTTPS 通信
一方,L プロキシを利用した HTTPS 通信では,ブラウザと L プロキシ間,及び L プロキシと Web サーバ間において,それぞれ独立の暗号化された通信路を確立する。L プロキシは証明書 1 を受け取ると,ブラウザには転送せずに,自身で証明書 1 の検証を行う。次に,L プロキシは認証局として証明書 1 と同じコモンネームのサーバ証明書(以下,証明書 2 という)を新たに作成し,ブラウザに送る。L プロキシを利用した場合の HTTPS 通信を図 4 に示す。
図 4 L プロキシを利用した場合の HTTPS 通信
ブラウザが L プロキシ経由で Web サーバと HTTPS 通信を行うとき,ブラウザが暗号化して L プロキシに送信したデータは L プロキシで一旦復号される。L プロキシでアクセスログの取得,送信内容の取得及びウイルスチェックが行われた後,送信データは再度暗号化されて,Web サーバに送信される。受信データについても L プロキシで同様の処理が行われる。
〔HTTPS 通信時の安全性の確認〕
K 主任は,確認した L プロキシの仕様を S 部長に説明した。次は,K 主任と S 部長の会話である。
S 部長:HTTPS 通信で Web サーバのサーバ証明書の正当性を確認しないまま,ブラウザがアクセスを継続すると,偽サイトに誘導された場合でなくても,a 攻撃を受けて,通信を盗聴される可能性があるので,アクセスを許可してはいけない。そこで,まず L プロキシを利用した HTTPS 通信時のサーバ証明書の検証について確認したい。L プロキシでは二つのサーバ証明書を利用しているが,②ブラウザは証明書 2 の検証において,証明書 2 の正当性を確認できない のではないか。 K 主任:ご指摘のとおり,事前に何の準備もしなかった場合は,証明書 2 の正当性を確認できません。証明書 2 の正当性を確認できるようにするためには,事前にブラウザで b 必要があります。 S 部長:証明書 1 の正当性はどこで確認するのかね。 K 主任:証明書 1 の正当性は L プロキシで検証します。証明書 1 の正当性を確認できなかった場合の Web サーバへのアクセスの可否は,L プロキシで設定できます。 S 部長:なるほど。サーバ証明書の検証については問題なさそうだね。 情報システム部における検討結果を踏まえ,T 社では L プロキシを採用する方針とし,L プロキシの導入に向けた動作検証を行うことにした。
出題趣旨(IPA)
クラウドサービスの発展によって,企業におけるインターネット上のWebサービスの利用が増加傾向にある。WebサービスにはSSLを用いることが多いが,プロキシでWebアクセス時のログを取得する場合,通信内容が暗号化されているので詳細なログを取得できない。本問では,HTTPS通信時におけるプロキシでのログ取得を題材として,HTTPS通信時の動作及び証明書の検証についての理解を確認する。
採点講評(問全体・IPA)
問3では,HTTPS通信時におけるプロキシでのログ取得を題材として,HTTPS通信時の動作及び証明書の検証について出題した。全体として正答率は低かった。
設問と解答例
設問1(1)
20字以内
本文中の下線①について,T 社が HTTPS 通信によるアクセスを原則として禁止しているのは,どのような理由からか。20 字以内で述べよ。
解答例
解説
本文の根拠
〔本文冒頭〕
インターネットサイトに向けて送信された内容をログとして取得することを定めている。
図 3
暗号化された通信路はブラウザから U プロキシを通り抜けて Web サーバまで一本でつながっている
〔新たなプロキシ製品導入の検討〕
HTTPS 通信時にプロキシで詳細なログを取得するためには,U プロキシとは異なる仕組みをもつプロキシ製品を導入する必要があると考えた。
アクセス管理ルールは,アクセスログと,インターネットサイトに向けて送信された内容のログを取得することを定めている。ところが U プロキシでは,図 3 のとおり,暗号化された通信路がブラウザと Web サーバの間に一本でつながっていて,プロキシは通信の内容を見られない。HTTPS 通信を許すと,このルールが求めるログを記録できなくなる。このため,原則として禁止している。
本文の後半で K 主任が,HTTPS 通信時に詳細なログを取得するには U プロキシとは異なる仕組みをもつプロキシ製品が必要と考えたことも,この点を裏付けている。
解答例は“ログを平文で記録できないから”の 14 字で,20 字以内に収まる。何ができないのかを,ログの取得という観点で書く。
設問1(2)
図 2 について,HTTPS 通信を行うことで利用目的を達成できなくなるものはどれか。図 2 中の項番 (1)~(5) から選び,全て答えよ。
解答例
解説
本文の根拠
図 2
リクエストライン(HTTP メソッド,URL,HTTP プロトコルのバージョン)
図 2
インターネットサイトにデータが送信された場合(POST リクエスト,PUT リクエストの利用時など)に,その送信内容を取得する。
図 2
送受信データ内のウイルスをチェックする。
図 3 のとおり,U プロキシを使った HTTPS 通信では,暗号化された通信路がブラウザと Web サーバの間に確立される。プロキシは暗号化された内容を見られないので,通信の内容を見ることが前提の機能は,目的を達成できない。(2) は,リクエストラインの HTTP メソッド,URL などを取得する機能で,これらは暗号化された通信の中にある。(3) は,POST などで送信された内容そのものを取得する機能で,同じく見られない。(5) は,送受信データの中のウイルスを調べる機能で,暗号化されたデータの中身は検査できない。
(1) は,ブラウザが Proxy-Authorization ヘッダに付与し,U プロキシに送信した認証情報で従業員を識別する機能で,暗号化された通信の内側のデータを必要としない。(4) のフィルタリングは,“ホストの FQDN に基づいた”規制で,HTTPS 通信ではホワイトリスト方式を使っており,HTTPS 通信を許可する前提の機能である。
解答は項番を全て挙げる設問なので,(2),(3),(5) の三つを“(2),(3),(5)”とそろえて書く。ここでは取得する項目の中に URL,送信内容,データのように暗号化の内側にあるものがあるかを見分ける。
設問1(3)
ブラウザの URL 入力欄に次の URL を入力したときに,ブラウザがプロキシに最初に送信する HTTP メッセージのリクエストラインはどれか。解答群の中から選び,記号で答えよ。入力した URL:https://○○.co.jp/index.html 解答群 ア CONNECT ○○.co.jp:443 HTTP/1.1 イ GET ○○.co.jp:443/index.html HTTP/1.1 ウ POST ○○.co.jp:443/index.html HTTP/1.1 エ SSL ○○.co.jp:443 HTTP/1.1
解答例
解説
本文の根拠
〔新たなプロキシ製品導入の検討〕
U プロキシを利用した HTTPS 通信では,暗号化された通信路をブラウザと Web サーバ間で確立する。
図 3
ブラウザと Web サーバ(○○.co.jp)の間に U プロキシがあり
プロキシ経由で HTTPS サイトに接続するとき,ブラウザはまず,プロキシに宛先のホスト名とポート番号を示して,その宛先とのトンネルを作るよう依頼する。RFC 2817 は,この目的の CONNECT メソッドを説明しており,要求の URI は宛先のホスト名とポート番号をコロンでつないだ形で,要求行の例は“CONNECT server.example.com:80 HTTP/1.1”である。プロキシが受け入れると,宛先との接続を確立してトンネルとして通信を中継する。入力した URL が https://○○.co.jp/index.html なので,ブラウザが最初に送る要求行は“CONNECT ○○.co.jp:443 HTTP/1.1”(ア)になる。
この後のブラウザと Web サーバとの間のやり取りは,トンネル内で暗号化される。したがって GET や POST の要求行にパス(/index.html)を付けた形(イ,ウ)は,プロキシに最初に届く要求行ではない。SSL(エ)は HTTP のメソッドではない。
講評は,設問 1 は(3)の正答率が低かったとして,情報セキュリティ技術者も HTTP プロトコルの基本的な仕様は理解しておいてほしいと述べている。
採点講評(IPA)
設問1は(3)の正答率が低かった。昨今のインターネットの利用形態の多くがHTTPプロトコルをベースとしている状況を踏まえ,情報セキュリティ技術者としてもHTTPプロトコルの基本的な仕様は是非理解しておいてほしい。
設問2(1)
解答欄1つ
本文中の a に入れる用語を答えよ。
解説
本文の根拠
〔HTTPS 通信時の安全性の確認〕
HTTPS 通信で Web サーバのサーバ証明書の正当性を確認しないまま,ブラウザがアクセスを継続すると,偽サイトに誘導された場合でなくても,a 攻撃を受けて,通信を盗聴される可能性がある
サーバ証明書の正当性を確認しないまま通信を続けると,ブラウザは,通信相手が本物の Web サーバかどうかを確かめられない。通信の途中に入り込んだ攻撃者が,自分で用意した証明書をブラウザに示してなりすまし,一方で本物のサーバにも接続して中継すれば,両者の通信を盗聴できる。これが中間者攻撃(man-in-the-middle 攻撃)である。
本文の L プロキシも,図 4 のとおりブラウザと Web サーバの間に入って通信を中継し,ブラウザには自分が作った証明書 2 を示す。これは仕組みとして中間者と同じなので,ブラウザが証明書 2 を正当と確認できる準備(設問 3(1))が必要になる。
“偽サイトに誘導された場合でなくても”という書きぶりから,偽サイトへの誘導ではなく,通信路上に入り込む攻撃を答える。解答例は“中間者”。
設問2(2)
35字以内
解答欄2つ
サーバ証明書の検証においてブラウザが確認すべき内容のうち,a 攻撃のような攻撃への対策となるものを二つ挙げ,それぞれ 35 字以内で述べよ。
〔①〕解答例
サーバ証明書のコモンネームとアクセス先のホスト名が一致すること
〔②〕解答例
サーバ証明書がブラウザで信頼する認証局から発行されていること
解説
本文の根拠
〔HTTPS 通信時の安全性の確認〕
HTTPS 通信で Web サーバのサーバ証明書の正当性を確認しないまま,ブラウザがアクセスを継続すると
図 4
L プロキシからブラウザに向けて,SSL のハンドシェイクで証明書 2 が送られ,ブラウザが証明書 2 の検証を行う。
中間者攻撃に対する,サーバ証明書の検証でブラウザが確認すべき内容は,次の二つである。一つは,サーバ証明書のコモンネームが,アクセス先のホスト名と一致することである。RFC 2818 の 3.1 節は,クライアントが,URI のホスト名と証明書に記載された識別名(subjectAltName の dNSName,無ければコモンネーム)を照合しなければならないとしている。中間者が別のサイトの正規の証明書を示したとしても,名前が一致しないので検出できる。もう一つは,サーバ証明書がブラウザで信頼する認証局から発行されていることである。中間者が自分で作った証明書は,ブラウザが信頼する認証局の署名を持たないので,検出できる。
講評は,設問 2(2)の正答率が低かったとして,有効期限や CRL の確認を挙げる受験者が多く見られたが,想定する脅威に対してそれぞれの確認事項がどの程度有効であるのかを意識して解答してほしかったと述べている。ここでの脅威は,通信路上に入り込んで正規のサーバになりすます攻撃なので,“誰の証明書か”と“誰が発行したか”を確かめる二つが対策になる。
各 35 字以内で,解答例は 31 字と 30 字。二つは別の観点として書き,順序はどちらが先でもよい。
採点講評(IPA)
設問2は(2)の正答率が低かった。証明書に関する確認事項として,有効期限やCRLの確認を挙げる受験者が多く見られたが,想定する脅威に対してそれぞれの確認事項がどの程度有効であるのかを意識して解答してほしかった。
設問3(1)
40字以内
解答欄1つ
本文中の b に入れる,事前にブラウザで実施することは何か。40 字以内で述べよ。
〔b〕解答例
Lプロキシのルート証明書を信頼するルート証明書としてインストールする
解説
本文の根拠
〔新たなプロキシ製品導入の検討〕
L プロキシは認証局として証明書 1 と同じコモンネームのサーバ証明書(以下,証明書 2 という)を新たに作成し,ブラウザに送る。
〔HTTPS 通信時の安全性の確認〕
ご指摘のとおり,事前に何の準備もしなかった場合は,証明書 2 の正当性を確認できません。
証明書 2 は,L プロキシが“認証局として”作成する。ブラウザがこれを正当と確認するには,その発行元である L プロキシが,ブラウザにとって信頼できる認証局でなければならない。ブラウザは,信頼するルート証明書をあらかじめ登録しておき,それに連なる証明書を信頼するので,事前に L プロキシのルート証明書をブラウザの信頼するルート証明書としてインストールしておく必要がある。解答例は“Lプロキシのルート証明書を信頼するルート証明書としてインストールする”の 34 字で,40 字以内に収まる。
設問 2(2) で挙げた“ブラウザで信頼する認証局から発行されていること”の確認を,L プロキシの証明書でも満たすための準備である。
講評は,設問 3 は全体的に正答率が低かったとして,暗号化された通信路が二つ存在する応用的な問題ではあるが,HTTPS 通信時の処理の流れを理解していれば解けると述べている。インストールする対象(L プロキシのルート証明書)と,その使い道(信頼するルート証明書)の両方を書く。
採点講評(IPA)
設問3は全体的に正答率が低かった。暗号化された通信路が二つ存在するという応用的な問題ではあったが,HTTPS通信時の処理の流れを理解していれば解ける問題である。重要なところなのでHTTPS通信の基礎を理解してほしい。
設問3(2)
40字以内
本文中の下線②について,上記(1)を実施しないとブラウザが証明書 2 の正当性を確認できないのはなぜか。40 字以内で述べよ。
解答例
証明書2はブラウザが信頼する認証局が発行したものではないから
解説
本文の根拠
〔HTTPS 通信時の安全性の確認〕
ブラウザは証明書 2 の検証において,証明書 2 の正当性を確認できない
〔新たなプロキシ製品導入の検討〕
L プロキシは認証局として証明書 1 と同じコモンネームのサーバ証明書(以下,証明書 2 という)を新たに作成し,ブラウザに送る。
証明書 2 の発行者は,L プロキシが“認証局として”名乗るものである。ブラウザがあらかじめ信頼している認証局の一覧には,L プロキシは入っていない。そのため,事前に何の準備もしなければ,証明書 2 の発行元を信頼できる認証局と確認できず,正当性を確認できない。これは,設問 2(2) の二つ目の確認事項,サーバ証明書がブラウザで信頼する認証局から発行されていること,を満たさないということである。
コモンネームは証明書 1 と同じにしてあるので,名前の面では問題がない。問題になるのは“誰が発行したか”の側であり,設問 3(1) の対策がこれを解消する。
解答例は“証明書2はブラウザが信頼する認証局が発行したものではないから”の 30 字(40 字以内)。“L プロキシ(発行元)がブラウザの信頼する認証局ではない”という点を明記する。
採点講評(IPA)
設問3は全体的に正答率が低かった。暗号化された通信路が二つ存在するという応用的な問題ではあったが,HTTPS通信時の処理の流れを理解していれば解ける問題である。重要なところなのでHTTPS通信の基礎を理解してほしい。
設問3(3)
40字以内
図 4 中の証明書 2 について,L プロキシ自身のサーバ証明書を利用するのではなく,Web サーバのサーバ証明書と同じコモンネームのサーバ証明書を L プロキシが新たに作成する必要があるのはなぜか。40 字以内で述べよ。
解答例
サーバ証明書のコモンネームとアクセス先のホスト名を一致させるため
解説
本文の根拠
図 4
L プロキシからブラウザに向けて,SSL のハンドシェイクで証明書 2 が送られ,ブラウザが証明書 2 の検証を行う。
〔新たなプロキシ製品導入の検討〕
L プロキシは認証局として証明書 1 と同じコモンネームのサーバ証明書(以下,証明書 2 という)を新たに作成し,ブラウザに送る。
ブラウザが検証する証明書 2 は,アクセス先の Web サーバ(○○.co.jp)のものとして示される。設問 2(2) のとおり,ブラウザは,サーバ証明書のコモンネームがアクセス先のホスト名と一致することを確認する。RFC 2818 の 3.1 節も,URI のホスト名と証明書の識別名を照合することを求めている。L プロキシ自身のサーバ証明書は,コモンネームが L プロキシのホスト名なので,アクセス先の○○.co.jp とは一致せず,検証に失敗する。
そのため,L プロキシは証明書 1 と同じコモンネームの証明書 2 を作成する。これにより,ブラウザから見ると,アクセス先の名前と一致するサーバ証明書が示されることになる。
解答例は“サーバ証明書のコモンネームとアクセス先のホスト名を一致させるため”の 32 字(40 字以内)。“コモンネームを一致させる”だけでなく,何と一致させるか(アクセス先のホスト名)まで書く。
採点講評(IPA)
設問3は全体的に正答率が低かった。暗号化された通信路が二つ存在するという応用的な問題ではあったが,HTTPS通信時の処理の流れを理解していれば解ける問題である。重要なところなのでHTTPS通信の基礎を理解してほしい。
出典:平成23年度 秋期 情報処理安全確保支援士試験 午後Ⅰ 問3(表記を一部改変)
問4 財務報告に係る内部統制
財務報告に係る内部統制に関する次の記述を読んで,設問 1~4 に答えよ。
Q 社は,従業員数 500 名の保険業を営む未上場会社であり,上場を目指している。2008 年 4 月 1 日以後に開始する事業年度からは,財務報告の信頼性の確保を目的に,上場会社に対して内部統制報告書の作成が義務付けられた。そこで,Q 社は,本年度から内部統制報告書を作成することにした。Q 社は,内部統制報告書作成に際して,財務報告に係る内部統制のうち,特に情報システムに関する統制が有効であるかを評価するため,コンサルティング会社 Y 社に IT 全般統制に関する状況の確認及び不備の指摘を依頼した。
Q 社の資産運用を行う投資部には,投資部長の他に 50 名が所属しており,うち 20 名が投資システムを用いた業務を行う従業員(以下,投資担当者という)で,残りはその他の業務を行う従業員(以下,事務担当者という)である。投資部は 12 階にある。
現在利用中の投資システムは,証券会社を親会社にもつ情報システム会社の Z 社が ASP サービスとして提供しているものであり,Q 社と専用線で接続されている。また,端末として投資専用 PC が 20 台ある。多額の資金を運用することから,投資専用 PC は,Q 社の投資部 LAN とは分離されており,入室用 IC カードでの入室管理が行われている投資システム専用室内に設置されている。入室及び投資専用 PC の利用は,投資担当者 20 名及び投資部長 1 名だけに許可されている。
経理部は,投資部と同じビルの 5 階にあり,会計専用 PC で会計サーバにアクセスして業務を行っている。投資部では,市場の取引終了後,財務報告のために,投資システムの特定のデータ(以下,会計連携データという)を抽出し,経理部に USB メモリで運搬し会計サーバに入力している。経理部及び投資部関連の情報システムを,図 1 に示す。
図 1 経理部及び投資部関連の情報システム
〔情報セキュリティガイドライン〕
投資部は,投資システム利用のための情報セキュリティガイドライン(以下,情報セキュリティガイドラインという)を作成し,情報セキュリティ上の事故が起こらないようにしている。情報セキュリティガイドラインを図 2 に示す。
図 2 情報セキュリティガイドライン
表 1 投資システムの利用者 ID と入室用 IC カードの発行対象
〔会計連携データの運搬〕
投資部では,情報セキュリティガイドラインに従い,USB 管理者から,投資部用に用意してある 5 個の USB メモリの一つの貸出しを受けて,市場の取引終了後の 16 時頃に,会計連携データの抽出を行い,終業前に経理部へ運搬する。
〔Y 社による IT 全般統制に関する状況の確認〕
Y 社は,Q 社の IT 全般統制に関する状況を確認する一環として,JIS Q 27002:2006 を参考に,情報セキュリティ対策の予備調査用の状況チェックリストを作成した。状況チェックリストの大項目を図 3 に,図 3 中の“7. a ”に関する状況チェックリストを表 2 に示す。
図 3 状況チェックリストの大項目
表 2 状況チェックリスト(抜粋)
Y 社のコンサルタントは,状況チェックリストを基にしたアンケートを使って,投資システム担当者に予備調査を行った。その上で,現場の状況の確認及び投資システム担当者へのヒアリングも行い,他の確認結果と併せて,IT 全般統制の状況についての報告をまとめた。
〔IT 全般統制に関する指摘〕
Y 社から,投資システムの IT 全般統制の状況に関して報告があった。その中で,情報セキュリティ対策について,次の 3 点の指摘があった。
指摘 1:会計連携データを運搬中の USB メモリ内のデータ保護対策がとられておらず,財務情報の正確性確保の観点からみて不十分である。 指摘 2:投資システム利用中の離席時に,不正利用の防止のために行うべき手続が定められておらず,操作者特定の観点からみて不十分である。 指摘 3:投資システムへのアクセス権の付与状況を管理するために必要な,アクセス権付与状況の一覧表が作成されておらず,アクセス権管理の観点からみて不十分である。 〔Z 社の統制状況〕
指摘 3 のアクセス権管理については,情報セキュリティガイドラインに項目を追加し,アクセス権の付与状況を一覧表で管理できるようにした。ただし,投資システムのアクセス権管理については,Z 社の統制状況についても確認の必要な項目が存在する。しかし,Z 社は,データセンタへの取引先の立入りを認めていない。そこで,Q 社は,Z 社に対して,①Q 社としての確認が必要な項目 を含む,Z 社の統制状況に関する報告書を f の立場の専門家に作成してもらい,提出するよう依頼した。
その後,Z 社から報告書が提出され,Q 社は,Y 社のコンサルタントからの指摘に対応して,無事に上場の準備を整えることができた。
出題趣旨(IPA)
財務報告の信頼性確保を目的に内部統制報告書作成が義務付けられ,その中で情報セキュリティを扱う場面も多くなってきている。本問では,内部統制を題材に,JIS Q 27002による情報セキュリティマネジメントの基本知識を確認し,更に情報セキュリティ確保のために技術的及び管理的視点から必要な情報セキュリティに関するマネジメント能力を問う。また,最近では,クラウドサービスやASPサービスのような外部サービスの利用が増加しており,外部サービス利用時における情報セキュリティの確保に対して必要な知識を問う。
採点講評(問全体・IPA)
問4では,内部統制を題材に,情報セキュリティマネジメントの基本知識及び外部サービス利用時の情報セキュリティの確保について出題した。全体として正答率は想定どおりだった。
設問と解答例
設問1
解答欄1つ
本文中及び図 3 中の a に入れる適切な字句を答えよ。
解説
本文の根拠
表 2
7.2.4 利用者のアクセス権のレビュー
表 2
7.3.3 名称:b ・クリアスクリーンポリシ。
図 3
5. 物理的及び環境的セキュリティ 6. 通信及び運用管理 7. a 8. 情報システムの取得,開発及び保守
表 2 の項番 7.2 と 7.3 に並ぶ項目は,利用者登録,特権管理,利用者パスワードの管理,利用者のアクセス権のレビュー,パスワードの利用,無人状態にある利用者装置,クリアデスク・クリアスクリーンポリシである。どれも,情報や情報システムを使える人を誰に,どのように許し,許された利用者に何を守らせるかに関する項目である。これを束ねる大項目が“アクセス制御”である。
図 3 の他の大項目を見ると,5 は物理的な環境,6 は通信と運用の管理,8 は情報システムの取得・開発・保守で,7.2.1~7.3.3 のような利用者登録やアクセス権に関する項目はこれらには入らない。
解答例は“アクセス制御”。講評は,設問 1 及び設問 2 は穴埋め問題であり高い正答率を期待したが,設問 2c 以外は正答率が低かったとして,これらの用語や内容は情報セキュリティに関する基本的な知識なので,しっかりと理解してほしいと述べている。
採点講評(IPA)
設問1及び設問2は穴埋め問題であり,高い正答率を期待したが,設問2c以外は正答率が低かった。これらの用語や内容は,情報セキュリティに関する基本的な知識であり,しっかりと理解してほしい。また,設問2eは,誤って“破棄や管理”と解答した受験者が多かった。クリアデスクの意味を考えてほしい。
設問2
解答欄4つ
表 2 中の b ~e に入れる適切な字句を,b ,c については 10 字以内で,d については 15 字以内で,e については 20 字以内で答えよ。
解説
本文の根拠
表 2
書類及び取外し可能な電子記憶媒体に対する b ポリシ,並びに情報処理設備に対するクリアスクリーンポリシを適用しているか。
表 2
(2) サーバ及び PC は,離席時にはログオフ状態にしておくか,若しくはパスワード,c 又は類似の利用者認証機構を使用した d で保護しているか。
表 2
(3) 重要な業務情報を含む文書は印刷後,e いるか。
b は,“クリアスクリーンポリシ”と並ぶ,書類と取外し可能な電子記憶媒体に対する方針で,名称の欄にも“b ・クリアスクリーンポリシ”とあるので,クリアデスクである。c と d は,離席時に PC を保護する手段で,“パスワード,c 又は類似の利用者認証機構を使用した d”の形になる。パスワードに並ぶ認証の手段は認証トークン,それを使って画面への操作を制限する仕組みはスクリーンロック機構である。
e は,(3) の“重要な業務情報を含む文書は印刷後”に続く,クリアデスクとして求められる行動で,印刷した文書を放置しないよう,プリンタから速やかに取り出すことである。
字数は b・c が 10 字以内,d が 15 字以内,e が 20 字以内。解答例は 6 字,6 字,10 字,15 字。講評は,設問 2c 以外は正答率が低かったとし,e は,誤って“破棄や管理”と解答した受験者が多かった,クリアデスクの意味を考えてほしいと述べている。
採点講評(IPA)
設問1及び設問2は穴埋め問題であり,高い正答率を期待したが,設問2c以外は正答率が低かった。これらの用語や内容は,情報セキュリティに関する基本的な知識であり,しっかりと理解してほしい。また,設問2eは,誤って“破棄や管理”と解答した受験者が多かった。クリアデスクの意味を考えてほしい。
設問3(1)
指摘 1 は,どのようなリスクに対する対策の不備を指摘しているか。解答群の中から一つ選び,記号で答えよ。解答群 ア DDoS イ ウイルス感染 ウ 改ざん エ 盗難 オ 漏えい
解答例
解説
本文の根拠
〔IT 全般統制に関する指摘〕
会計連携データを運搬中の USB メモリ内のデータ保護対策がとられておらず,財務情報の正確性確保の観点からみて不十分である。
指摘 1 は,運搬中の USB メモリ内のデータ保護対策が無いことを,“財務情報の正確性確保の観点”から不十分としている。正確性(データが正しいまま保たれること)が損なわれる事態は,データが書き換えられる改ざん(ウ)である。
会計連携データは,抽出された後に USB メモリで経理部へ運搬され,会計サーバに入力される。途中で内容が書き換わっていても,入力する側には分からない。これが,財務情報の正確性への脅威である。
誤りの選択肢のうち,漏えい(オ)と盗難(エ)は秘密性や持ち出しの問題,ウイルス感染(イ)は USB メモリを介した感染の問題,DDoS(ア)は可用性の問題で,いずれも“正確性”の観点とは合わない。講評は,設問 3 の(1),(2)は正答率が高かったとしている。
採点講評(IPA)
設問3では,(1),(2)は正答率が高かったが,(3)は正答率が低かった。管理的対策としてどのような対策が効果的かを考えて解答してほしかった。
設問3(2)
30字以内
指摘 1 について,どのような技術的対策が効果的か。30 字以内で述べよ。
解答例
解説
本文の根拠
図 2
(1) 会計連携データの抽出担当者(以下,抽出担当者という)は,USB メモリの貸出しを受けて,i-PC から投資システムにアクセスし,その日の会計連携データを抽出し,USB メモリに保存する。
図 2
(4) 経理部の担当者は,経理部にある U-PC を使用して,会計連携データを直ちに会計サーバに入力する。
データの改ざんを防ぐのではなく,改ざんされたことを検知する技術的対策が現実的である。抽出担当者が USB メモリへ保存する時点でハッシュ値を求めて保存し,経理部の担当者が U-PC で会計サーバに入力する直前にハッシュ値を再計算して照合すれば,運搬中の書換えを検知できる。ただし,単純なハッシュ値は,データを書き換えた人が,ハッシュ値も計算し直して置き換えられる。このため,鍵付きハッシュ値(鍵を知らなければ値を作れない MAC。RFC 2104 の HMAC は,共有の秘密鍵と暗号学的ハッシュ関数による,データの完全性・真正性確認の仕組み)を使う。
図 2 の運用では,抽出((1))と入力((4))が別の担当者・別の PC で行われるので,この検知の仕組みを両端に置ける。
解答例は“鍵付きハッシュ値などによる改ざん検知対策”の 20 字で,30 字以内に収まる。
採点講評(IPA)
設問3では,(1),(2)は正答率が高かったが,(3)は正答率が低かった。管理的対策としてどのような対策が効果的かを考えて解答してほしかった。
設問3(3)
30字以内
指摘 1 について,悪意をもった事務担当者による不正行為を防止できない。このためにどのような管理的対策が効果的か。情報セキュリティガイドラインの改定を前提として 30 字以内で述べよ。
解答例
USBメモリに関わる作業の複数人化による相互けん制
解説
本文の根拠
図 2
(3) 事務担当者は,USB メモリと会計連携データ管理簿を経理部まで運搬し,経理部の担当者に手渡す。
表 1
事務担当者:投資システムを用いない業務を担当。なし,なし。
図 2 の運用では,運搬((3))は事務担当者が 1 人で行う。事務担当者は投資システムの利用者 ID も入室用 IC カードも持たないが,運搬の間は USB メモリを単独で保持するので,悪意があれば内容を書き換えられる。管理的対策としては,ガイドラインを改定し,USB メモリに関わる作業,つまり運搬などの作業を複数人で行うようにして,相互にけん制させる。1 人では不正を行いにくくなる。
解答例は“USBメモリに関わる作業の複数人化による相互けん制”の 25 字で,30 字以内に収まる。講評は,(3)の正答率が低かったとして,管理的対策としてどのような対策が効果的かを考えて解答してほしかったと述べている。
採点講評(IPA)
設問3では,(1),(2)は正答率が高かったが,(3)は正答率が低かった。管理的対策としてどのような対策が効果的かを考えて解答してほしかった。
設問4(1)
10字以内
解答欄1つ
本文中の f に入れる適切な字句を 10 字以内で答えよ。
解説
本文の根拠
〔Z 社の統制状況〕
しかし,Z 社は,データセンタへの取引先の立入りを認めていない。
〔Z 社の統制状況〕
Z 社の統制状況に関する報告書を f の立場の専門家に作成してもらい
Z 社は,データセンタへの取引先(Q 社)の立入りを認めていないので,Q 社が自ら Z 社の統制状況を確認することはできない。かといって,Z 社自身の担当者が作った報告書では,Q 社が確認する根拠として独立していない。そこで,Q 社とも Z 社とも利害関係のない第三者の立場の専門家に報告書の作成を依頼する。
本文は,Q 社が確認したい項目を含んだ報告書を作ってもらうとしており,確認が必要な項目を指定できる点でも,専門家が第三者であることが前提になる。
字数は 10 字以内で,解答例は“第三者”(3 字)。講評は,設問 4(1)の正答率は高かったとしている。
採点講評(IPA)
設問4では,(1)は正答率が高かったが,(2)は低かった。統制状況に関する報告書では,利用者IDの登録に関してどのような項目の記述が必要かを理解して解答してほしかったが,不十分な解答が多かった。
設問4(2)
30字以内
本文中の下線①について,図 2 中の 5. (2) に関して確認が必要な,具体的な項目を一つ挙げ,30 字以内で述べよ。
解答例
Q社から依頼された利用者IDの登録に関する承認手続
解説
本文の根拠
図 2
(2) 投資システム担当者は,Z 社に利用者 ID の登録を依頼する(利用者 ID の登録は,Z 社だけが行う)。
図 2
(3) 投資システム担当者は,発行された利用者 ID の情報を Z 社から受け取り,申請した投資担当者に通知する。
〔Z 社の統制状況〕
投資システムのアクセス権管理については,Z 社の統制状況についても確認の必要な項目が存在する。
図 2 の 5. (2) では,Q 社の投資システム担当者が Z 社に利用者 ID の登録を依頼し,登録は Z 社だけが行う。Q 社は,登録が正しく行われたかを自分では確認できない。そこで,Z 社の報告書で,Q 社が依頼した利用者 ID だけが,依頼のとおりに登録されていることを確認する必要がある。その確認の中心になるのが,Q 社から依頼された利用者 ID の登録に関する承認手続である。
同じ 5. の (1) は,投資部長の承認後に提出する Q 社内の手続である。Z 社側については,その依頼を受けた登録が承認された手続のもとで行われているかを,報告書で確かめる。
解答例は“Q社から依頼された利用者IDの登録に関する承認手続”の 25 字(30 字以内)。講評は,(2)は正答率が低く,統制状況に関する報告書では,利用者 ID の登録に関してどのような項目の記述が必要かを理解して解答してほしかったが,不十分な解答が多かったと述べている。
採点講評(IPA)
設問4では,(1)は正答率が高かったが,(2)は低かった。統制状況に関する報告書では,利用者IDの登録に関してどのような項目の記述が必要かを理解して解答してほしかったが,不十分な解答が多かった。
出典:平成23年度 秋期 情報処理安全確保支援士試験 午後Ⅰ 問4(表記を一部改変)
情報処理安全確保支援士試験のほかの年度
科目A-2(午前Ⅱ)
令和7年度 秋期
令和7年度 春期
令和6年度 秋期
令和6年度 春期
令和5年度 秋期
令和5年度 春期
令和4年度 秋期
令和4年度 春期
令和3年度 秋期
令和3年度 春期
令和2年度 10月
令和元年度 秋期
平成31年度 春期
平成30年度 秋期
平成30年度 春期
平成29年度 秋期
平成29年度 春期
平成28年度 秋期
平成28年度 春期
平成27年度 秋期
平成27年度 春期
平成26年度 秋期
平成26年度 春期
平成25年度 秋期
平成25年度 春期
平成24年度 秋期
平成24年度 春期
平成23年度 秋期
平成23年度 特別試験
平成22年度 秋期
平成22年度 春期
平成21年度 秋期
平成21年度 春期
科目B(午後)
令和7年度 秋期
令和7年度 春期
令和6年度 秋期
令和6年度 春期
令和5年度 秋期
午後Ⅰ(旧試験)
令和5年度 春期
令和4年度 秋期
令和4年度 春期
令和3年度 秋期
令和3年度 春期
令和2年度 10月
令和元年度 秋期
平成31年度 春期
平成30年度 秋期
平成30年度 春期
平成29年度 秋期
平成29年度 春期
平成28年度 秋期
平成28年度 春期
平成27年度 秋期
平成27年度 春期
平成26年度 秋期
平成26年度 春期
平成25年度 秋期
平成25年度 春期
平成24年度 秋期
平成24年度 春期
平成23年度 秋期
平成23年度 特別試験
平成22年度 秋期
平成22年度 春期
平成21年度 秋期
平成21年度 春期
午後Ⅱ(旧試験)
令和5年度 春期
令和4年度 秋期
令和4年度 春期
令和3年度 秋期
令和3年度 春期
令和2年度 10月
令和元年度 秋期
平成31年度 春期
平成30年度 秋期
平成30年度 春期
平成29年度 秋期
平成29年度 春期
平成28年度 秋期
平成28年度 春期
平成27年度 秋期
平成27年度 春期
平成26年度 秋期
平成26年度 春期
平成25年度 秋期
平成25年度 春期
平成24年度 秋期
平成24年度 春期
平成23年度 秋期
平成23年度 特別試験
平成22年度 秋期
平成22年度 春期
平成21年度 秋期
平成21年度 春期
この試験について すべての試験区分の一覧