‹ ぱすてく

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

平成30年度 春期 午後Ⅰ(旧試験)

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

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

この年度を解いてみる

問1 ソフトウェアの脆弱性

ソフトウェアの脆弱性に関する次の記述を読んで,設問1~9に答えよ。

V 社は,従業員数 100 名のソフトウェア開発会社である。V 社では,開発に関わる全員が情報セキュリティを意識した実装を行えるよう,開発経験が浅い従業員にセキュリティ教育を行っている。次は,任意の攻撃コードが実行され得る脆弱性について,開発チームの T 主任が部下の U さんに教えていた時の会話である。

枠内の C++ソースコード(42行)。注記:メモリアドレスが 32 ビットの環境で動作させるものとする。 1: #include <cstdio> 2: (空行) 3: struct Note{ 4:   char *name; 5:   char *msg; 6: }; 7: (空行) 8: class NoteManager{ 9:   Note *m_note; 10: public: 11:   NoteManager(){ m_note = NULL; } 12:   void CreateNote(){ 13:     if(m_note = new Note()){ 14:       m_note->name = NULL; 15:       m_note->msg = NULL; 16:     } 17:   } 18:   void RegisterName(){ 19:     if(m_note && !m_note->name) m_note->name = new char[8]; 20:     if(m_note && m_note->name){ 21:       printf("Input name: "); 22:       scanf("%7s%*[^¥n]%*c", m_note->name); 23:     } 24:   } 25:   void RegisterMsg(){ 26:     if(m_note && !m_note->msg) m_note->msg = new char[100]; 27:     if(m_note && m_note->msg){ 28:       printf("Input message: "); 29:       scanf("%99s%*[^¥n]%*c", m_note->msg); 30:     } 31:   } 32:   void DisplayNote(){ 33:     if(m_note && m_note->name) printf("Name: %s¥n", m_note->name); 34:     if(m_note && m_note->msg) printf("Message: %s¥n", m_note->msg); 35:   } 36:   void DeleteNote(){ 37:     delete[] m_note->name; 38:     delete[] m_note->msg; 39:     delete m_note; 40:   } 41: }; 42: (省略)
図1 脆弱性が存在する C++ソースコード
クライアントと Linux サーバの構成図。クライアントの中に操作メニュー(1.ノートの生成,2.名前の登録,3.メッセージの登録,4.登録内容表示,5.ノートの破棄)がある。Linux サーバの中にフロントサービスと例示プログラムがある。クライアントとフロントサービスの間:メニュー表示(フロントサービスからクライアントへ),メニュー選択(クライアントからフロントサービスへ),利用者からの入力(クライアントからフロントサービスへ),利用者への出力(フロントサービスからクライアントへ)。フロントサービスと例示プログラムの間:選択メニューに応じたメンバ関数の呼出し(フロントサービスから例示プログラムへ),標準入力(フロントサービスから例示プログラムへ。利用者からの入力をリダイレクトする点線の矢印が付く),標準出力(例示プログラムからフロントサービスへ。利用者への出力へリダイレクトする点線の矢印が付く)。
図2 例示プログラムが動作するシステム構成の例
メモリマップ3枚。(1) CreateNote メンバ関数実行後:メモリの上部に m_note があり,そこから矢印が下の方の領域を指す。指された領域は name と msg の2つのフィールドから成る。(2) DeleteNote メンバ関数実行後:m_note は同じ領域を指したままで,その領域は“解放済みメモリ領域”になっている。(3) RegisterName メンバ関数内の new 実行後:m_note は同じ領域を指したままで,その領域は“char[8]用メモリ領域”になっている。
図3 脆弱性を悪用する関数呼出しの過程とメモリマップ
関数テーブル,メイン処理,共有ライブラリの3つの図。関数テーブルは“scanf の実行コードの先頭アドレスの値”と“printf の実行コードの先頭アドレスの値”の2段。メイン処理は“scanf の呼出し処理”。共有ライブラリは上から“printf の実行コード”,“scanf の実行コード”の2段。メイン処理の scanf の呼出し処理から関数テーブルの scanf の欄へ(1)参照の矢印,同じ呼出し処理から共有ライブラリの scanf の実行コードへ(2)遷移の矢印が引かれている。
図4 ライブラリ関数の呼出し時の動き
3列の表(アドレス/値/値の意味)。(ア)0x08049e30 /(キ)0xf7cfcd70 / delete の実行コードの先頭アドレス。(イ)0x08049e38 /(ク)0xf7ce9370 / scanf の実行コードの先頭アドレス。(ウ)0x08049e3c /(ケ)0xf7cd7670 / printf の実行コードの先頭アドレス。(エ)0x08049e40 /(コ)0xf7cff150 / new の実行コードの先頭アドレス。(オ)0x08049e44 /(サ)0xf7cff230 / new[]の実行コードの先頭アドレス。(カ)0x08049e4c /(シ)0xf7cfcdd0 / delete[]の実行コードの先頭アドレス。
表1 関数テーブル
2列の表(アドレス/内容)。(ア)0xf7cc8da0 / system の実行コード。(イ)0xf7cd7670 / printf の実行コード。(ウ)0xf7ce9370 / scanf の実行コード。(エ)0xf7cfcd70 / delete の実行コード。(オ)0xf7cfcdd0 / delete[]の実行コード。(カ)0xf7cff150 / new の実行コード。(キ)0xf7cff230 / new[]の実行コード。(ク)0xf7de99ab / "/bin/sh"の文字列。
表2 共有ライブラリ内のメモリアドレス

U さんは,今回学んだことをコードレビューの観点として生かしていくことにした。

出題趣旨(IPA)

ヒープ領域に関連する脆弱性は,特定の手順でメモリ操作を行った場合だけ発現するものが多いことから,発見しづらく,スタック領域に関連する脆弱性よりも対策漏れが起きやすい。近年では,Webブラウザ製品などで特に多く発見されており,ドライブ・バイ・ダウンロード攻撃に悪用されるものも多い。本問では,Use-After-Free脆弱性を題材に,メモリ上の任意のアドレスに攻撃コードが書き込まれて実行される仕組みを理解し,脆弱性対策が適切に実装されているかを評価する能力を問う。

採点講評(問全体・IPA)

問1では,Use-After-Free脆弱性を題材に,メモリ上の任意のアドレスへの書き込みから攻撃コードが実行される仕組みとその対策方法について出題した。全体として,正答率は低かった。

設問と解答例

設問1 解答欄2つ

本文中の a,b に入れる適切な脆弱性名を,解答群の中から選び,記号で答えよ。解答群 ア CSRF イ SQL インジェクション ウ Use-After-Free エ クロスサイトスクリプティング オ コマンドインジェクション カ バッファオーバフロー キ フォーマットストリングバグ ク レースコンディション

〔a〕解答例

  • カ

〔b〕解答例

  • ウ
解説

本文の根拠

T 主任の最初の発言

確保済みメモリ領域を超えてデータを書き込んでしまう a と呼ばれる脆弱性の報告が以前から多かった。

T 主任の最初の発言

最近は解放したメモリ領域を後から使用してしまう b と呼ばれる脆弱性の報告も多くなってきている。

a は“確保済みメモリ領域を超えてデータを書き込んでしまう”脆弱性なので,バッファオーバフロー(カ)である。b は“解放したメモリ領域を後から使用してしまう”脆弱性なので,Use-After-Free(ウ)である。

本文は,b の具体例として,DeleteNote が m_note の指すメモリ領域を解放したあとに RegisterName が呼ばれる場面を挙げている。解放済みのメモリ領域が,別の用途(char[8]用)で再び確保されても,古いポインタ m_note で触れてしまうのが Use-After-Free である。

誤りの選択肢との違い。CSRF,SQL インジェクション,クロスサイトスクリプティング,コマンドインジェクションは,メモリ操作ではなく Web アプリケーションや OS への入力の扱いに起因する脆弱性である。フォーマットストリングバグは printf などの書式文字列を攻撃者が制御できる脆弱性,レースコンディションは処理の実行順序や競合に起因する脆弱性で,どちらも本文の説明とは別物である。a と b は似ているが,“範囲を超える”のが a,“解放後に使う”のが b と区別する。

設問2 14字以内

本文中の下線②のようになるためには,本文中の下線①で読み込まれる攻撃者からの入力値はどのような値である必要があるか。攻撃者の指定したアドレスを 0x12345678,改行コードを 0x0a とした場合について,入力値の具体的なバイト列を 14 字以内の 16 進数文字列で答えよ。ここで,アドレスは 32 ビットであり,バイトオーダがリトルエンディアンのバイトマシンによって扱われるものとする。

解答例

  • 785634120a
解説

本文の根拠

T 主任の説明(下線②)

次に RegisterName メンバ関数が呼ばれた際,その際に読み込まれる攻撃者からの入力値が,攻撃者の指定したアドレスに書き込まれる

図1 4~5行目

char *name; 5: char *msg;

図1 22行目

scanf("%7s%*[^¥n]%*c", m_note->name);

図1 注記

メモリアドレスが 32 ビットの環境で動作させるものとする。

下線②は,次の RegisterName で読み込まれる入力値が“攻撃者の指定したアドレス”に書き込まれる,という状態である。図1 の 19 行目は m_note->name が NULL でなければ new を実行せず,20~22 行目でその name が指す先に入力値を書き込む。したがって,下線①の入力で Note 構造体の name(構造体の先頭のメンバ)に攻撃者の指定したアドレス 0x12345678 を入れておけば,次の入力値がそのアドレスに書き込まれる。

32 ビット環境ではアドレスは 4 バイトで,リトルエンディアンでは下位バイトから順に並ぶので,0x12345678 は 78 56 34 12 の順になる。その後ろに改行コード 0x0a を付けるので,バイト列は 78 56 34 12 0a で,16 進数文字列は“785634120a”である。scanf の %7s は空白類(改行を含む)の手前までを最大 7 文字読む書式なので,この 5 バイトが name の領域(char[8]用のメモリ領域)に書き込まれる。

字数は 14 字以内(7 バイトぶん)で,解答例は 10 字。“12345678”と順番どおりに書く誤りに注意する。バイトオーダの指定(リトルエンディアン)を落とさないこと。なお,scanf の %s が空白類を区切りに読み取ることは,C 言語規格(ISO/IEC 9899,N1570 の 7.21.6.2)の fscanf の記述による。

設問3 解答欄1つ

本文中の c に入れる適切なアドレスを表1中の(ア)~(シ)から選び,記号で答えよ。

〔c〕解答例

  • (エ)
解説

本文の根拠

T 主任の発言(c,d)

次に CreateNote メンバ関数が呼び出された際,攻撃コードに処理が遷移することになる。

図1 13行目

if(m_note = new Note()){

表1 (エ)

(エ)0x08049e40 /(コ)0xf7cff150 / new の実行コードの先頭アドレス。

CreateNote の 13 行目は new Note() を実行する。new を呼び出すときは,関数テーブルの new の項目(表1 の(エ))が参照される。ここに攻撃コードの先頭アドレスを書き込んでおけば,次に CreateNote が呼ばれた際に攻撃コードへ処理が遷移する。c にはこのテーブルの項目の“アドレス”列の値,つまり(エ)の 0x08049e40 が入る。

表1 は,“アドレス”列が関数テーブルの項目の置かれた場所,“値”列がその項目に記録されている実行コードの先頭アドレスである。書き込む先が c(アドレス)で,書き込む内容が次の設問の d(値)という関係なので,この二つを取り違えない。

誤りの選択肢は,(コ)が new の“値”の列なので“アドレス”の列とは別で,(キ)(ク)(ケ)(サ)(シ)の値は delete,scanf,printf,new[],delete[] の実行コードである。CreateNote で使われるのは new だけで,scanf や printf は別のメンバ関数で呼ばれる。

設問4 解答欄1つ

本文中の d に入れる適切な値を 16 進数で答えよ。

〔d〕解答例

  • 0x0b123400
解説

本文の根拠

T 主任の発言(c,d)

その先頭アドレスが 0x0b123400 と分かっていたとする。

T 主任の発言(c,d)

アドレス c 番地に値 d を書き込むことによって,次に CreateNote メンバ関数が呼び出された際,攻撃コードに処理が遷移することになる。

関数テーブルの項目には“実行コードの先頭アドレス”が記録され,呼出し時にその値を参照して処理が遷移する。攻撃コードに処理を遷移させるには,項目の値を攻撃コードの先頭アドレスに書き換えればよい。攻撃コードは m_note->msg が指す領域にあり,その先頭アドレスは 0x0b123400 と本文が示しているので,d は 0x0b123400 である。

設問3 で選んだ new の項目(アドレス 0x08049e40)に,0x0b123400 を書き込むことになる。値 0xf7cff150 は現在の new の実行コードの先頭アドレスなので,元の値のまま書いても攻撃コードには遷移しない。

問われているのは 16 進数の値で,字数制限は無い。本文のとおり 0x を付けて 0x0b123400 と書く。0 の数を数え違えないこと。

設問5 解答欄1つ

本文中の e に入れるメモリ領域の名称を答えよ。

〔e〕解答例

  • ヒープ
解説

本文の根拠

T 主任の発言

RegisterMsg メンバ関数の呼出しによって m_note->msg が指し示すメモリ領域に攻撃コードが書き込まれていて

図1 26行目

m_note->msg = new char[100];

攻撃コードが書き込まれるのは,RegisterMsg が new char[100] で確保した m_note->msg の指す領域である。C++ の new で動的に確保したメモリ領域はヒープ領域なので,e はヒープである。データ実行防止(DEP)は,実行コードが置かれることを想定していないデータ用のメモリ領域でコードを実行させない機能で,ヒープ領域にある攻撃コードは実行されない,と U さんは述べている。

ヒープ領域は new(malloc)で動的に確保される領域で,関数の引数や局所変数が置かれるスタック領域とは別である。ここで“解放したメモリ領域”という Use-After-Free の話も,ヒープ領域の話である。

字数制限は無く,メモリ領域の名称を答える設問である。“スタック”や“データ領域”と答えない。

設問6 45字以内

本文中の下線③の理由を,45 字以内で述べよ。

解答例

  • ライブラリ関数はデータ実行防止の対象ではないメモリ領域に配置されているから
解説

本文の根拠

T 主任の発言(下線③)

関数テーブルに書き込むアドレスとして,例えば,共有ライブラリ内のメモリアドレスを選べば,データ実行防止が有効化されていた場合でも,攻撃者が任意の処理を実行できる可能性がある。

T 主任の説明

ライブラリ関数の呼出し時には,図4に示すように関数テーブルに記録された実行コードの先頭アドレスの値を参照してライブラリ関数の実行コードに処理が遷移する。

データ実行防止は,実行コードが置かれることを想定していないメモリ領域(ヒープ領域など)でのコードの実行を防ぐ。一方,共有ライブラリは実行コードを置く領域に読み込まれているので,その中のコード(system など)の実行は防止の対象にならない。関数テーブルに共有ライブラリ内のアドレスを書き込めば,データ実行防止が有効でも,そのコードに処理を遷移させられる。

本文は,ライブラリ関数の呼出しが関数テーブルを参照して実行コードへ遷移すると説明しているので,遷移先を共有ライブラリ内の正規の実行コードにすれば,攻撃コードを実行させなくても任意の処理ができる。

字数は 45 字以内で,解答例は 37 字。“データ実行防止の対象ではない領域に実行コードがある”という内容を入れる。“共有ライブラリは安全だから”のように,実行コードが置かれる領域であることに触れない書き方は避ける。

採点講評(IPA)

設問6は,正答率が低かった。実行コードが置かれることを想定していないメモリ領域であれば,全てデータ実行防止機能の保護対象にできる。一方,実行コードが置かれることを想定しているメモリ領域は,実行を防止するわけにはいかないので,通常は保護対象にできないことを理解しておいてほしい。

設問7 解答欄1つ

本文中の f に入れる適切なアドレスを表2中の(ア)~(ク)から選び,記号で答えよ。

〔f〕解答例

  • (ア)
解説

本文の根拠

T 主任の発言(f)

関数テーブルに書き込むアドレスを f 番地にすることによって,データ実行防止が有効化されていた場合でも,/bin/sh を起動して任意のシェルコマンドを実行できる可能性がある。

表2 (ア)

(ア)0xf7cc8da0 / system の実行コード。

/bin/sh を起動してシェルコマンドを実行する処理を行うには,共有ライブラリの中にある system 関数の実行コードに処理を遷移させればよい。表2 で system の実行コードの先頭アドレスは(ア)の 0xf7cc8da0 なので,f は(ア)である。講評も“シェルコマンドの実行に使われる system 関数について知っておいてほしい”と述べている。

関数テーブルに書き込む値は,処理の遷移先となる“実行コードの先頭アドレス”である。表2 の(ク)は“/bin/sh”の文字列の置かれたアドレスで,コードではないので遷移先にはできない。

誤りの選択肢は,(イ)printf,(ウ)scanf,(エ)delete,(オ)delete[],(カ)new,(キ)new[] の実行コードで,どれもシェルを起動しない。表のアドレスは“アドレス”列の値を答える。

採点講評(IPA)

設問7は,正答率が低かった。シェルコマンドの実行に使われるsystem関数について知っておいてほしい。

設問8 解答欄1つ

本文中の g に入れるメンバ関数の名前を答えよ。

〔g〕解答例

  • DisplayNote
解説

本文の根拠

T 主任の発言(g)

RegisterName メンバ関数と g メンバ関数を利用することによって,ASLR が有効化されていた場合でも,共有ライブラリ内のメモリアドレスを特定できる可能性がある。

図1 32~34行目

void DisplayNote(){

図1 33行目

if(m_note && m_note->name) printf(

ASLR が有効でも共有ライブラリ内のアドレスを特定するには,関数テーブルの項目の値(ライブラリ関数の実行コードの先頭アドレス)を読み出せばよい。そのためには,メモリの内容を出力させる必要がある。図1 の中でメモリの内容を出力するのは,printf で m_note->name を文字列として出力する DisplayNote である。

手順は,まず RegisterName で下線①・②のとおり m_note->name を関数テーブルの項目のアドレスに書き換える。次に DisplayNote を呼ぶと,printf が name の指す先(関数テーブルの項目)の内容を出力するので,共有ライブラリ内のアドレスが分かる。講評も,メンバ関数一つ一つについてメモリの内容を出力させられるかどうかを読み取る問題としている。

誤りの選択肢の考え方。CreateNote は new,RegisterMsg は scanf で書き込み,DeleteNote は delete を行うだけで,どれもメモリの内容を出力しない。メンバ関数の名前を,図1 のとおりのつづりで書く。

採点講評(IPA)

設問8は,正答率が低かった。メモリアドレスを特定するためには,何らかの手段でメモリアドレスを出力させる必要がある。メンバ関数一つ一つについて,メモリの内容を出力させられるかどうかを読み取れていれば,解答できる問題であった。

設問9 解答欄1つ

本文中の h に入れる適切なソースコードを答えよ。

〔h〕解答例

  • m_note = NULL;
解説

本文の根拠

図1 39行目

delete m_note;

図1 19~20行目

if(m_note && !m_note->name) m_note->name = new char[8];

T 主任の説明

仮に DeleteNote メンバ関数が呼び出された直後に RegisterName メンバ関数が呼び出されると,解放した m_note の指すメモリ領域にアクセスできてしまう。

Use-After-Free の原因は,delete m_note で解放したあとも m_note に古いアドレスが残り,RegisterName などが“m_note が NULL でない”と判断して解放済みの領域を使うことである。そこで,39 行目の直後に m_note = NULL; を加え,解放後は m_note を NULL にしておけば,RegisterName の 19~20 行目の if(m_note && …) の条件が成り立たず,解放済みの領域には触れなくなる。

11 行目のコンストラクタが m_note = NULL; としているのと同じ形で,このポインタが NULL のときは“ノートが無い”状態という約束になっている。解放したら NULL に戻す,というのが基本的な対処である。

解答例は“m_note = NULL;”(14 字)。ソースコードとして答えるので,末尾のセミコロンを付ける。代入の = と比較の == を取り違えない。

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

問2 情報セキュリティ対策の強化

情報セキュリティ対策の強化に関する次の記述を読んで,設問1~3に答えよ。

T 社は,従業員数 300 名の小売業者である。

T 社のネットワーク構成を図1に示す。

データセンタと T 社の構成図。データセンタの中に,DMZ(迷惑メール対策サーバ,DNS サーバ,外部メールサーバ,プロキシサーバ。四つとも L2SW1 に接続),FW,L3SW1,内部システム LAN(Web メールサーバ,営業情報サーバ,業務サーバ。三つとも L2SW2 に接続)がある。インターネットは FW に接続し,FW は L2SW1 と L3SW1 に接続している。L3SW1 は L2SW2 に接続している。T 社の PC-LAN の中に L3SW2 があり,L3SW1 と L3SW2 が接続されている。L3SW2 には営業部 LAN,業務部 LAN,システム部 LAN が接続されている。FW:ファイアウォール,L2SW:レイヤ2スイッチ,L3SW:レイヤ3スイッチ。注記 PC の記載は省略している。
図1 T 社のネットワーク構成

T 社は,全ての従業員に PC を 1 台ずつ貸与している。PC は全て,営業部 LAN,業務部 LAN 及びシステム部 LAN のいずれかに接続されている。PC 及び内部システム LAN のサーバには,固定のプライベート IP アドレスを割り当てている。

T 社では,電子メール(以下,メールという)の送受信及び Web 閲覧にインターネットを利用している。T 社のドメイン名は,t-sha.co.jp(以下,T 社ドメイン名という)である。また,全ての従業員は,T 社ドメイン名のメールアカウントをもつ。

T 社では,PC 及びサーバを導入する際,システム部がアプリケーションソフトウェア,L 社製マルウェア対策ソフト及び OS(以下,これらを併せて T 社標準ソフトという)のインストール,脆弱性修正プログラムの適用,並びにマルウェア定義ファイルの最新化を行う。導入後の PC 及びサーバは,プロキシサーバ経由で T 社標準ソフトの各ベンダのサイトに毎月 1 回自動で接続し,それぞれの脆弱性修正プログラムを適用している。マルウェア定義ファイルは,1 時間おきに最新化している。

〔内部システム LAN 上のサーバの概要〕

T 社の内部システム LAN とその LAN 上のサーバは,システム部の K さんが運用業務を担当している。内部システム LAN 上のサーバの機能の概要を表1に示す。表1に示す機能は全て有効にしている。

3列の表(サーバ名/IP アドレス/機能の概要)。行は1つ。サーバ名:Web メールサーバ。IP アドレス:192.168.1.11。機能の概要:・SMTP で,迷惑メール対策サーバからのメールを受信するメール受信機能がある。・外部メールサーバに,SMTP でメールを転送するメール転送機能がある。・PC から Web ブラウザによってメールを送受信できるようにする Web メール機能,及びメールボックス機能がある。Web ブラウザとの通信プロトコルとして HTTP を用いる。・SMTP 通信及び HTTP 通信のマルウェアスキャンを行うマルウェアスキャン機能がある。・IP アドレス単位に,HTTP による接続を拒否することができる HTTP 接続拒否機能がある。その機能を用いて,内部システム LAN 上の他のサーバからの接続を拒否している。・送信メールについて,送信者メールアドレスをメールアカウントに対応付ける送信者メールアドレス詐称防止機能がある。・インターネットへの送信メールについて,送信者メールアドレスごとにインターネットへの送信の可否を設定できるインターネットメール送信制限機能がある。業務上,インターネットへの送信の必要がある者の送信者メールアドレスに対してインターネットへの送信を許可している。・DNS 機能がある。社内専用のドメイン名を管理する。インターネット上のドメイン名の名前解決は行わない。
表1 内部システム LAN 上のサーバの機能の概要(抜粋)

運用業務において,内部システム LAN 上のサーバへのログインには,SSH を利用している。

〔DMZ 上のサーバ及び FW の概要〕

DMZ 上のサーバには,固定のグローバル IP アドレスを割り当てている。DMZ 上のサーバで,プログラムが異常停止するなどのエラーが発生した場合,迷惑メール対策サーバを経由してシステム部の運用担当者のメールアドレス宛てに通知している。

DMZ 上のサーバの機能の概要を表2に示す。表2に示す機能は全て有効にしている。

3列の表(サーバ名/IP アドレス/機能の概要)。迷惑メール対策サーバ/x1.y1.z1.2/・受信したメールを Web メールサーバに SMTP で転送する機能がある。・インターネットからのメールの受信において,SPF(Sender Policy Framework)を用いてメールの転送を許可又は拒否する機能がある。・インターネットからのメールの受信において,メールの件名及び本文の内容によって迷惑メールと判定したメールを破棄する機能がある。DNS サーバ/x1.y1.z1.3/・インターネット向けの T 社ドメイン名を管理する機能がある。・インターネット上のドメイン名の名前解決を行う機能がある。・オープンリゾルバ防止機能がある。外部メールサーバ/x1.y1.z1.4/・転送されてきたメールをインターネットに SMTP で転送する機能がある。プロキシサーバ/x1.y1.z1.5/・PC 及びサーバからインターネットへの HTTP 及び HTTP over TLS(以下,HTTPS という)通信を中継するプロキシ機能がある。HTTPS 通信の中継には,CONNECT メソッドを利用する。・送信元 IP アドレスごとにプロキシサーバへの接続可否を設定できる接続元制限機能がある。現在の設定は,T 社のネットワーク内の IP アドレスからの接続だけを許可している。・送信元 IP アドレスごとに接続可能な URL を制限するアクセス制限機能がある。現在は,全ての URL への接続を許可している。・プロキシサーバからの接続を許可する宛先ポート番号を設定するポート制限機能がある。現在は,1023 以下の宛先ポート番号だけを許可している。
表2 DMZ 上のサーバの機能の概要

運用業務において,DMZ 上のサーバへのログインには,SSH を利用している。

DNS サーバに登録されている,T 社ドメイン名に対する TXT レコードの設定内容を図2に示す。

枠内の1行:t-sha.co.jp. IN TXT "v=spf1 +ip4: [ a ] -all" (a は空欄)
図2 T 社ドメイン名に対する TXT レコードの設定内容

FW は,ステートフルパケットインスペクション型である。そのフィルタリングルールを表3に示す。

6列の表(項番/送信元/宛先/サービス/動作/ログ取得)。項番1:インターネット/[ b ]/SMTP/許可/する。項番2:[ b ]/[ c ]/SMTP/許可/する。項番3:[ c ]/[ d ]/SMTP/許可/する。項番4:[ d ]/インターネット/SMTP/許可/する。(項番5~24は省略され,… で示されている。)項番25:全て/全て/全て/拒否/する。注記1 項番が小さいルールから順に,最初に合致したルールが適用される。注記2 項番 5~24 は SMTP 以外のサービスに関するルールであり,PC 及び内部システム LAN 上のサーバと,インターネットの間の通信を許可するものはない。
表3 FW のフィルタリングルール

〔セキュリティ対策の見直し〕

同業他社で,運用担当者の PC がマルウェアに感染し,サーバに格納されていた個人情報が大量に漏えいする事故が発生した。T 社の経営陣は事態を重く見て,現状の対策の点検と見直しをシステム部の J 部長に指示した。J 部長は,サーバの設定の点検及び見直し並びに運用担当者の PC の利用方法の見直しを行うように K さんに指示した。さらに,セキュリティ専門業者に助言を求めることにし,情報処理安全確保支援士(登録セキスペ)の W 氏が担当することになった。

〔サーバの設定の点検及び見直し〕

K さんは W 氏の支援を受けて,表4に示すサーバの設定のチェックリストを作成した。

3列の表(サーバ名/機能名/チェック内容)。DNS サーバ/オープンリゾルバ防止機能/DNS サーバが [ e ] を許可するのは,DMZ 上の他のサーバからだけであること。プロキシサーバ/接続元制限機能/DMZ 上のサーバ,内部システム LAN 上のサーバ及び PC-LAN 上の PC だけが,プロキシサーバに接続可能であること。プロキシサーバ/ポート制限機能/接続を許可すべき宛先ポート番号を設定していること。
表4 サーバの設定のチェックリスト(抜粋)

表4に基づいて点検していたところ,プロキシサーバのポート制限機能に問題があることが分かった。次は,プロキシサーバのポート制限機能の利用方法に関する,W 氏と K さんの会話である。

枠内の1行:CONNECT x1.y1.z1.4:25 HTTP/1.1
図3 CONNECT メソッドを悪用したリクエスト

K さんと W 氏は,サーバの点検を続け,他に問題がないことを確認した。

〔運用担当者の PC の利用方法の見直し〕

引き続き K さんと W 氏は,運用担当者の PC の利用方法の見直しを行った。

運用担当者は,運用担当者の PC からサーバに特権 ID でログインしているので,PC がマルウェアに感染した場合,サーバの重要な情報が窃取されるおそれがある。また,メールの送受信やインターネットの Web 閲覧は,マルウェア感染のリスクが高い。そこで,次の対策を実施することにした。

その上で,次の設定を変更することにした。

K さんは,運用 PC の利用方法案並びにサーバ及び L3SW の設定変更案を作成して,J 部長に説明し,了承を得た。K さんは,運用 PC の導入に着手し,サーバ及び L3SW の設定変更を行った。

出題趣旨(IPA)

サーバの運用管理に利用するPCは,特権IDを用いたサーバへのログインに用いられることが多い。そのため,当該PCにログインできるアカウント情報が窃取されると重大な被害につながることから,一般の業務に利用されるPCより強固な情報セキュリティ対策が求められる。本問では,サーバの情報セキュリティ対策強化を題材に,運用管理に利用するPC,ネットワーク及びサーバの情報セキュリティ対策に関する設計能力を問う。

採点講評(問全体・IPA)

問2では,サーバの情報セキュリティ対策強化を題材に,サーバ及びファイアウォールの設定,並びに運用業務用PCのセキュリティ対策強化について出題した。全体として,正答率は低かった。

設問と解答例

設問1(1) 解答欄1つ

図2中の a に入れる適切な字句を答えよ。

〔a〕解答例

  • x1.y1.z1.4
解説

本文の根拠

図2

v=spf1 +ip4: a -all

表2 外部メールサーバ

外部メールサーバ/x1.y1.z1.4/・転送されてきたメールをインターネットに SMTP で転送する機能がある。

表1 Web メールサーバ

外部メールサーバに,SMTP でメールを転送するメール転送機能がある。

図2 は,T 社ドメイン名に対する SPF レコードである。SPF は,ドメインの管理者が,そのドメイン名の差出人でメールを送ってよいサーバの IP アドレスを DNS に公開し,受信側がそれと照らし合わせる仕組みである。“+ip4:”の後ろに許可する送信元の IPv4 アドレスを書き,最後の“-all”は,それまでに合致しなかった送信元を認めない(fail)という意味である(RFC 7208 の 4.6.2 項と 5 章)。つまり a には,T 社からインターネットへメールを送るサーバの IP アドレスが入る。

T 社でインターネットにメールを送信するのは,表2 のとおり,転送されてきたメールをインターネットに SMTP で転送する外部メールサーバである。表1 も,Web メールサーバが送信メールを外部メールサーバに転送するとしている。外部メールサーバの IP アドレスは x1.y1.z1.4 なので,a は x1.y1.z1.4 である。

間違えやすいのは,メールを最初に受け付ける Web メールサーバ(192.168.1.11)や,受信を担当する迷惑メール対策サーバ(x1.y1.z1.2)を書くことである。Web メールサーバはプライベート IP アドレスで,インターネットからは見えない。講評も,インターネットへのメール転送経路を理解した上で解答するよう求めている。字数制限は無い。

採点講評(IPA)

設問1(1)は,正答率が低かった。T社におけるインターネットへのメール転送経路を理解した上で解答してほしかった。迷惑メール対策において,SPF(Sender Policy Framework)は重要であるので,よく理解しておいてほしい。

設問1(2) 解答欄3つ

表3中の b,c 及び d に入れる適切なサーバ名を図1中の字句を用いて答えよ。

〔b〕解答例

  • 迷惑メール対策サーバ

〔c〕解答例

  • Webメールサーバ

〔d〕解答例

  • 外部メールサーバ
解説

本文の根拠

表1 Web メールサーバ

SMTP で,迷惑メール対策サーバからのメールを受信するメール受信機能がある。

表2 迷惑メール対策サーバ

受信したメールを Web メールサーバに SMTP で転送する機能がある。

表2 外部メールサーバ

転送されてきたメールをインターネットに SMTP で転送する機能がある。

表3

項番1:インターネット/b/SMTP/許可/する。項番2:b/c/SMTP/許可/する。

表3 の項番 1~4 は,メールの送信と受信の経路を順に並べたものである。項番1 は“インターネット→b”で,インターネットからのメールを最初に受けるのは迷惑メール対策サーバなので b は迷惑メール対策サーバ。項番2 は“b→c”で,表2 のとおり迷惑メール対策サーバは受信メールを Web メールサーバに SMTP で転送するので c は Web メールサーバ。項番3 は“c→d”で,表1 のとおり Web メールサーバは外部メールサーバに SMTP でメールを転送するので d は外部メールサーバ。項番4 の“d→インターネット”も,表2 の外部メールサーバの機能(インターネットへの SMTP 転送)と合う。

項番の並びに注意する。b は項番1 の宛先と項番2 の送信元,c は項番2 の宛先と項番3 の送信元,d は項番3 の宛先と項番4 の送信元で,同じ記号が前の行の宛先と次の行の送信元に現れる。

図1 中の字句(機器名)で答える。解答例は,b 迷惑メール対策サーバ,c Web メールサーバ,d 外部メールサーバ。“DMZ”や“内部システム LAN”のような区画の名前や,“メールサーバ”のような曖昧な名前ではなく,機器名を書く。

設問2(1) 30字以内 解答欄1つ

表4中の e に入れる適切な通信の内容を 30 字以内で述べよ。

〔e〕解答例

  • インターネット上のドメイン名についての名前解決
解説

本文の根拠

表4 DNS サーバ

DNS サーバが e を許可するのは,DMZ 上の他のサーバからだけであること。

表2 DNS サーバ

インターネット向けの T 社ドメイン名を管理する機能がある。

表2 DNS サーバ

インターネット上のドメイン名の名前解決を行う機能がある。

表2 のとおり,DNS サーバには,インターネット向けに T 社ドメイン名を管理する機能(権威サーバとしての応答)と,インターネット上のドメイン名の名前解決を行う機能の二つがある。前者はインターネットから誰でも照会できなければならないが,後者を誰にでも許すと,DNS サーバがインターネットの第三者の名前解決要求に応じる状態(オープンリゾルバ)になってしまう。表4 の項目はオープンリゾルバ防止機能のチェックなので,許可を DMZ 上の他のサーバだけに限るのは,“インターネット上のドメイン名についての名前解決”である。

ここで“DNS 通信”のように広く書くと,T 社ドメイン名の問合せまで DMZ 内に限ることになり,表2 の前者の機能が成り立たない。限定すべきなのは,インターネット上のドメイン名の名前解決のほうである。

字数は 30 字以内で,解答例は 23 字。“再帰的な問合せ”などの用語で書くより,本文の言い方(名前解決)に合わせると,本文との対応が明確になる。

設問2(2) 40字以内 解答欄2つ

本文中の下線①について,回避によって生じる問題を二つ挙げ,それぞれ 40 字以内で具体的に述べよ。

〔①〕解答例

  • インターネットへのメールの送信を許可されていない従業員が,送信できるという問題
  • 送信者メールアドレスを詐称したメールを送信できるという問題
  • マルウェアのスキャンを行わずにメールを送信できるという問題

〔②〕解答例

  • インターネットへのメールの送信を許可されていない従業員が,送信できるという問題
  • 送信者メールアドレスを詐称したメールを送信できるという問題
  • マルウェアのスキャンを行わずにメールを送信できるという問題

〔備考〕このうち異なる二つを答える(順不同)

解説

本文の根拠

図3

CONNECT x1.y1.z1.4:25 HTTP/1.1

表2 プロキシサーバ

現在は,1023 以下の宛先ポート番号だけを許可している。

表1 Web メールサーバ

送信メールについて,送信者メールアドレスをメールアカウントに対応付ける送信者メールアドレス詐称防止機能がある。

表1 Web メールサーバ

インターネットへの送信メールについて,送信者メールアドレスごとにインターネットへの送信の可否を設定できるインターネットメール送信制限機能がある。

表1 Web メールサーバ

SMTP 通信及び HTTP 通信のマルウェアスキャンを行うマルウェアスキャン機能がある。

図3 の CONNECT x1.y1.z1.4:25 は,プロキシサーバに,宛先 x1.y1.z1.4(外部メールサーバ)のポート 25(SMTP)へのトンネルを張らせる要求である。CONNECT メソッドは,受け手に宛先サーバへのトンネルの確立を要求するもので,プロキシはこれを使って HTTPS を中継する(RFC 7231 の 4.3.6 項)。同項は,CONNECT に対応するプロキシが利用を限られた既知のポートに制限することを求めている。T 社の設定は,宛先ポートを 1023 以下の全てに許可しているため,25 番も通る。PC やサーバがこのトンネルで外部メールサーバに直接 SMTP を話すと,Web メールサーバを経由しないで済み,表1 の Web メールサーバの機能が働かない。

その結果,次の三つのうち二つを答えればよい。①インターネットへの送信が許可されていない従業員でも,インターネットにメールを送信できる(インターネットメール送信制限機能の回避)。②送信者メールアドレスを詐称したメールを送信できる(送信者メールアドレス詐称防止機能の回避)。③マルウェアのスキャンを行わずにメールを送信できる(マルウェアスキャン機能の回避)。講評は,図3 の通信がプロキシサーバから外部メールサーバへの SMTP 通信であることを理解していない解答が散見されたとしている。

字数は各 40 字以内で,解答例は 39 字・29 字・29 字。“メールを送信できる”だけでなく,どの機能が働かないことで何ができるのかを具体的に書く。二つは異なる機能にする。

採点講評(IPA)

設問2(2)は,図3に示した通信がプロキシサーバから外部メールサーバへのSMTP通信であることを理解していない解答が散見された。インターネットとの通信でよく使用されるポート番号は,知っておいてほしい。

設問3(1) 30字以内

本文中の下線②について,設定内容の変更点を 30 字以内で具体的に述べよ。

解答例

  • 運用PCからの接続も拒否するように変更する。
解説

本文の根拠

表1 Web メールサーバ

IP アドレス単位に,HTTP による接続を拒否することができる HTTP 接続拒否機能がある。その機能を用いて,内部システム LAN 上の他のサーバからの接続を拒否している。

運用担当者の PC の利用方法の見直し

運用 PC では,メールの送受信及びインターネットの Web 閲覧を技術的に制限する。

表1 Web メールサーバ

PC から Web ブラウザによってメールを送受信できるようにする Web メール機能,及びメールボックス機能がある。

Web メールサーバは,PC の Web ブラウザからの HTTP 接続でメールの送受信を受け付ける。運用 PC は,メールの送受信を技術的に制限する対策の対象なので,Web メールサーバの Web メール機能も使えないようにする必要がある。HTTP 接続拒否機能は IP アドレス単位に接続を拒否でき,現在は内部システム LAN 上の他のサーバだけを拒否しているので,運用 PC(IP アドレスは固定)からの接続も拒否するように変更する。

運用 PC は L3SW2 に接続する運用 PC-LAN に置かれ,その IP アドレスは固定のプライベート IP アドレスである。そのため,IP アドレスを指定して拒否の対象に加えればよい。L3SW のフィルタリングは別の変更項目なので,この設問の“Web メールサーバの設定”の変更点は HTTP 接続拒否の対象の追加である。

字数は 30 字以内で,解答例は 22 字。“運用 PC”を対象にすること,“拒否”に変更することの二点を書く。“運用 PC からの接続を許可する”のような逆の変更にしない。

設問3(2) 55字以内

本文中の下線③について,設定内容の変更点を 55 字以内で具体的に述べよ。

解答例

  • 運用PCから接続できるURLは,T社標準ソフトのベンダのサイトのものだけに制限するように変更する。
解説

本文の根拠

プロキシサーバの機能(表2)

送信元 IP アドレスごとに接続可能な URL を制限するアクセス制限機能がある。現在は,全ての URL への接続を許可している。

T 社標準ソフト

導入後の PC 及びサーバは,プロキシサーバ経由で T 社標準ソフトの各ベンダのサイトに毎月 1 回自動で接続し,それぞれの脆弱性修正プログラムを適用している。

運用担当者の PC の利用方法の見直し

運用 PC では,メールの送受信及びインターネットの Web 閲覧を技術的に制限する。

運用 PC では,インターネットの Web 閲覧を技術的に制限する。一方で,運用 PC も PC なので,T 社標準ソフトの脆弱性修正プログラムの適用(毎月 1 回)やマルウェア定義ファイルの最新化(1 時間おき)のために,プロキシサーバ経由でベンダのサイトに接続する必要がある。プロキシサーバのアクセス制限機能は,送信元 IP アドレスごとに接続可能な URL を制限できるので,運用 PC の IP アドレスからは,T 社標準ソフトのベンダのサイトの URL だけに接続できるように変更すればよい。現在は全ての URL を許可している。

ここで運用 PC からの接続を全て禁止すると,パッチの適用とマルウェア定義ファイルの更新ができなくなる。講評も,運用 PC であっても,これらの更新のために各ベンダのサイトとの通信が必要になることを理解しておいてほしい,としている。

字数は 55 字以内で,解答例は 49 字。“運用 PC の送信元 IP アドレス”,“T 社標準ソフトのベンダのサイトの URL だけ”,“制限する”の三つを入れる。“全ての URL を拒否”と書くと更新ができなくなる。

採点講評(IPA)

設問3(2)は,正答率が低かった。運用業務用PCであっても,脆弱性修正プログラムの適用やマルウェア定義ファイルの更新のためには,インターネット上の各ベンダのサイトとの通信が必要となることを理解しておいてほしい。

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

問3 LAN 分離

LAN 分離に関する次の記述を読んで,設問1~4に答えよ。

N 社は,新薬創出を事業内容とする,いわゆる創薬ベンチャ企業である。従業員は 10 名で,研究開発員が 5 名,その他の事務員が 5 名である。N 社のネットワーク構成を図1に示す。図1中の全ての機器には固定の IP アドレスを割り当てている。また,インターネット経由で N 社が利用しているクラウドサービスを表1に示す。

L2SW を中心とした構成図。L2SW に研究開発用ファイルサーバ,一般事務用ファイルサーバ,内部 DNS サーバ,社内 PC(複数台,点線で複数を示す),FW1 が接続され,FW1 はインターネットに接続されている。FW:ファイアウォール,L2SW:レイヤ2スイッチ。
図1 N 社のネットワーク構成
2列の表(サービス名称/内容)。電子メールサービス:社内 PC にインストールされた電子メールソフトからのアクセスに応じて,電子メールの送受信を行う。Web プロキシサービス:社内 PC と社内のサーバからインターネット上の Web サイトへのアクセスを中継する。FW1 では,社内 PC と社内のサーバから,Web プロキシサービスを経由しないでインターネット上の Web サイトへアクセスすることを禁止している。更新ファイル提供サービス:社内 PC と社内のサーバに,脆弱性修正プログラム(以下,パッチという)とマルウェア定義ファイル(以下,パッチとマルウェア定義ファイルを併せて更新ファイルという)を提供する。更新ファイルは,社内 PC 又は社内のサーバが,HTTP 通信を利用し,Web プロキシサービスを経由してこのサービスへアクセスし,取得する。
表1 利用しているクラウドサービス

〔リスクアセスメント〕

N 社は,事業拡大のために,研究開発員を 30 名程度に増員する計画を立てた。これまで,情報管理を従業員の裁量に任せていたが,増員に伴い,社内の情報管理方法,特にファイルの漏えい防止対策を強化することになり,B 取締役がその責任者に,ネットワーク管理に最も詳しい R さんが担当者に,それぞれ指名された。社外の情報処理安全確保支援士(登録セキスペ)である A 氏の支援を受けることにし,漏えい防止対策の強化について検討を開始した。

次は,その時の会話である。

B 取締役と R さんは,A 氏の支援の下で a のプロセスを完了した。その結果,新薬ファイルに影響を及ぼすリスクの一覧として表2が得られた。

3列の表(項番/リスク/内容)。リスク1/インターネットからの不正侵入による新薬ファイルの漏えい/インターネット経由で,ファイルサーバに侵入されることによって,新薬ファイルがインターネットに流出する。リスク2/標的型攻撃による新薬ファイルの漏えい/電子メールによって N 社を標的としたマルウェアが送り込まれ,社内 PC 又は社内のサーバがマルウェアに感染することによって,新薬ファイルがインターネットに流出する。リスク3/従業員の故意又は過失によるインターネット経由の新薬ファイルの漏えい/従業員の故意又は過失によって,新薬ファイルが不適切な宛先に電子メールで送信される又は SNS に書き込まれることによって,インターネットに流出する。
表2 リスク一覧(抜粋)

続いて,リスク分析のプロセスとして,JIS Q 31000:2010 及び JIS Q 31010:2012 に沿って,c と,d を組み合わせてリスクのレベルを決定した。最後に,b のプロセスとして各リスクへの対応の要否を検討した。その結果,B 取締役は,表2のリスク2への対応が必要と判断した。

〔LAN 分離案の検討〕

B 取締役と R さんは,表2のリスク2への対応として,新薬ファイルを保管している機器を収容する LAN(以下,研究開発 LAN という)と,それ以外の機器を収容する LAN(以下,事務 LAN という)に分離する LAN 分離案を検討することにした。事務 LAN はインターネットとの通信を許可するが,研究開発 LAN はインターネットとの通信を一切許可しない。この LAN 分離に伴い,社内 PC は,研究開発 LAN だけに接続する研究開発用の研究開発 PC と,事務 LAN だけに接続する一般事務用の事務 PC に分かれる。研究開発員は,事務 PC と研究開発 PC の 2 台を利用する。

R さんは,業務遂行のために必要な要件を研究開発員から聞き,図2にまとめ,ファイル転送のための中間 LAN を加えた図3の LAN 分離案を作成した。

枠内に3項目。1. 社外から届いた電子メールの添付ファイルを,研究開発 PC に転送できること。2. 社外の共同研究者とデータを共有するために,社外のファイル交換用 Web サイトから事務 PC にダウンロードしたファイルを,研究開発 PC に転送できること。3. 研究開発用ファイルサーバ内の新薬ファイルのうち,社外の共同研究者と共有するために承認を受けた新薬ファイルを研究開発 PC 上で編集した後,編集結果を事務 PC に転送し,事務 PC からインターネット上のファイル交換用 Web サイトにアップロードできること。
図2 業務遂行のために必要な要件
LAN 分離案の構成図。左の研究開発 LAN(点線枠):L2SW に研究開発用ファイルサーバと研究開発 PC(複数台)が接続され,L2SW の左側に接続点(あ)(矢印)がある。右の事務 LAN(点線枠):L2SW に内部 DNS サーバ,一般事務用ファイルサーバ,事務 PC(複数台)が接続されている。中央の中間 LAN(点線枠):L2SW にファイル転送サーバ(製品 Z)が接続され,L2SW に接続点(い)(矢印)がある。インターネットは FW1 に接続している。研究開発 LAN の L2SW は FW2 に接続し,FW2 は中間 LAN の L2SW に接続している。事務 LAN の L2SW は FW1 に接続し,FW1 は中間 LAN の L2SW にも接続している。注記 (あ),(い)は,新たに機器を設置する接続点を示す。
図3 LAN 分離案

この案では,研究開発 LAN と事務 LAN の間のファイル転送を行うために,ファイル転送サーバとして広く利用されている U 社製の製品 Z を導入する。図3中の FW1 と FW2 の設定内容を表3に示す。また,ファイルを転送する際の操作手順を図4に示す。

3列の表(機器名/許可する通信/禁止する通信)。FW1/・事務 LAN 上の機器から N 社が利用しているクラウドサービスへの必要な通信 ・事務 PC からファイル転送サーバへの必要な通信/・他の全ての通信。FW2/・研究開発 PC からファイル転送サーバへの必要な通信/・他の全ての通信。注記1 研究開発 LAN 上の機器は,内部 DNS サーバを利用していない。注記2 FW1 及び FW2 は,ステートフルパケットインスペクション型である。
表3 FW1 と FW2 の設定内容
枠内:研究開発 PC から事務 PC へのファイル転送時の操作手順。1. 研究開発 PC の Web ブラウザからファイル転送サーバのアップロード用 URL にアクセスし,表示される画面で利用者ごとに異なる利用者 ID 及びパスワードを入力してログインする。2. ログイン後に表示されるアップロード画面で,研究開発 PC 内のファイルを一つ選択して,アップロードする。アップロードが正常に完了すると,完了メッセージとともにアップロード画面が再度表示される。ここで次のファイルを続けてアップロードすることも,ログアウトボタンをクリックして,ログアウトすることもできる。3. 事務 PC の Web ブラウザからファイル転送サーバのダウンロード用 URL にアクセスし,表示される画面で利用者ごとに異なる利用者 ID 及びパスワードを入力してログインする。4. ログイン後に表示されるダウンロード画面では,その利用者 ID でアップロードされたファイルの一覧が表示されるので,ファイルを一つ選択してダウンロードする。ダウンロードが完了すると,サーバ内のダウンロードされたファイルが削除された後,完了メッセージとともにダウンロード画面が再度表示される。ここで次のファイルを続けてダウンロードすることも,ログアウトボタンをクリックして,ログアウトすることもできる。ダウンロードされなくてもアップロードしてから 4 時間たつとファイルは削除される。注記 事務 PC から研究開発 PC へのファイル転送時の操作手順は,図中の研究開発 PC を事務 PC に,事務 PC を研究開発 PC に,それぞれ置き換えて読むものとする。
図4 ファイルを転送する際の操作手順

LAN 分離を進めると,研究開発 PC 及び研究開発用ファイルサーバは更新ファイルの提供を受けられなくなるので,新しい仕組みが必要になる。R さんは,更新ファイル提供サービスと同じ動作をするパッチ配信兼マルウェア対策管理サーバ(以下,配信サーバという)を用意することにした。

図3,表3及び図4を見た A 氏は,幾つかのシナリオを仮定して図3の LAN 構成で想定されるマルウェア感染被害について表4のとおり評価した。表5に,各 OS を利用している機器を示す。

3列の表(項番/仮定したシナリオ/想定される被害)。項番1/・HTTP 通信を悪用して管理者権限を奪取できる脆弱性 v が発見されたが,パッチはリリースされていない。・事務 PC,研究開発 PC 及びファイル転送サーバには,脆弱性 v が存在している。・事務 PC が,脆弱性 v を利用して能動的に感染を広げるマルウェア α に感染した。/・事務 PC からファイル転送サーバが感染する。・脆弱性 v を利用して,ファイル転送サーバから研究開発 PC が感染する可能性は低い。(この文に下線①が付いている)・配信サーバの設置位置によっては,配信サーバが感染する可能性がある。項番2/・攻撃者が,N 社が製品 Z を使用していることを知っており,製品 Z のアクセス手順を組み込んだマルウェア β を作成し,電子メールを利用して N 社に送り込んだ。・事務 PC が,マルウェア β に感染した。・マルウェア β が,[ e ],[ f ],[ g ] の情報を窃取して,ファイル転送サーバにアクセスした。/・ファイル転送サーバに不正なファイルがアップロードされる。・その不正なファイルが原因となって研究開発 PC が感染する可能性は低い。(この文に下線②が付いている)項番3/・ファイル共有プロトコルを悪用して管理者権限を奪取できる脆弱性 w が,OS-P で発見される。・OS-Q には,脆弱性 w は存在しない。・事務 PC,研究開発 PC 又は配信サーバのいずれかが,脆弱性 w を利用して能動的に感染を広げるマルウェア γ に感染した。・更新ファイルの提供に使用するプロトコルは,ファイル共有プロトコルではない。/・配信サーバの設置位置によっては,脆弱性 w を利用して,事務 PC,研究開発 PC 及び配信サーバの間で感染が拡大する可能性がある。
表4 マルウェア感染被害の評価(抜粋)
2列の表(OS の名称/その OS を利用している機器)。OS-P/事務 PC,研究開発 PC,配信サーバ,内部 DNS サーバ。OS-Q/研究開発用ファイルサーバ,一般事務用ファイルサーバ,ファイル転送サーバ。
表5 各 OS を利用している機器

この結果から,図3の LAN 分離案は研究開発 LAN 内の新薬ファイルの漏えい防止に有効だとの結論を得て,B 取締役は社内ネットワークの変更を進めることにした。

さらに,表4の項番3について,マルウェアの感染が広がることを防ぐために,R さんは配信サーバの設置位置を,表6を用いて検討した。検討の際に,FW1 と FW2 の設定は必要最小限の通信だけを許可するものとした。

3列の表(感染経路/図3中の(あ)に設置した場合/図3中の(い)に設置した場合)。事務 PC から配信サーバへ/(省略)/結論:感染する可能性が低い。理由:FW1 によって感染活動を遮断できるから。研究開発 PC から配信サーバへ/結論:感染する可能性が [ h ]。理由:[ i ]/結論:感染する可能性が [ j ]。理由:[ k ]。配信サーバから事務 PC へ/(省略)/(省略)。配信サーバから研究開発 PC へ/(省略)/(省略)。
表6 配信サーバの設置位置の検討内容

検討の結果,R さんは B 取締役に配信サーバの適切な設置位置を提案して,社内ネットワークを変更した。

〔不審な操作ログ〕

社内ネットワークの変更から半年ほどたったある日,ファイル転送サーバのログを調べていた R さんが,研究開発員の S さんの研究開発 PC がファイル転送サーバへ頻繁にアクセスしていたことを発見した。S さんの研究開発 PC を調査したところ,規程で利用を禁止しているリムーバブルメディアを利用した形跡があった。そのリムーバブルメディア経由で研究開発 PC がマルウェアに感染し,S さんが研究開発 PC を操作していない時に,マルウェアが研究開発 PC 内のファイルをファイル転送サーバにアップロードしていたことが分かった。ただし,ファイル転送サーバからダウンロードされてはいなかった。

このマルウェアの情報を調べたところ,次の機能をもっていることが分かった。

今回,インターネットへのファイルの流出には至らなかったが,S さんの事務 PC もマルウェアに感染していた場合は直ちにインターネットへのファイルの流出に至るので,R さんはファイル転送サーバに何らかの対策が必要だと考えた。

R さんが A 氏に,この対策について相談したところ,“製品 Z には,正当なファイル転送であることを確認するために,図4の手順2の後に l の手順を追加し,その手順の完了をもってダウンロードが可能となる拡張機能が用意されているので,それを利用してはどうか”との回答を得た。R さんは,この拡張機能は効果があると考え,B 取締役の承認の下,導入した。

その後,N 社では情報管理上の大きな事故もなく,順調に事業を拡大している。

出題趣旨(IPA)

情報システムのセキュリティ対策として,ネットワーク分離の仕組みを導入する例が増えている。しかし,ファイル転送や脆弱性対策,マルウェア対策などのために何らかの接続が必要である場合が多い。ここで接続の仕組みが不適切であると有効なセキュリティ対策にならないおそれがある。本問では,創薬ベンチャ企業のネットワーク分離を題材に,機密性の高い情報を保護しながらも,分離したネットワーク間で安全にファイル転送ができる仕組みを設計する能力を問う。

採点講評(問全体・IPA)

問3では,ネットワーク分離の設計について出題した。

設問と解答例

設問1(1) 解答欄2つ

本文中の a,b に入れる適切な字句を,解答群の中から選び,記号で答えよ。解答群 ア リスク回避 イ リスク対応 ウ リスク特定 エ リスク評価 オ リスク保有 カ リスクモニタリング

〔a〕解答例

  • ウ

〔b〕解答例

  • エ
解説

本文の根拠

A 氏の発言

JIS Q 31000:2010 及び JIS Q 31010:2012 では,リスクアセスメントは,a,リスク分析,b の三つのプロセスの順に進めると定義されています。

〔リスクアセスメント〕

その結果,新薬ファイルに影響を及ぼすリスクの一覧として表2が得られた。

〔リスクアセスメント〕

最後に,b のプロセスとして各リスクへの対応の要否を検討した。

リスクアセスメントは,リスク特定,リスク分析及びリスク評価のプロセス全体を指す(JIS Q 0073:2010 の 3.4.1,JIS Q 31000:2010 の 6.4.1)。この順に進めるので,a はリスク特定(ウ),b はリスク評価(エ)である。

本文では,a のプロセスで“影響を及ぼす一般的なリスクの一覧”を基にリスクを洗い出し,表2 のリスク一覧が得られているので,リスクを見つけて一覧にする a はリスク特定。最後の b は,“各リスクへの対応の要否を検討した”とあり,リスク分析の結果をリスク基準と比較して,リスクやその大きさが受容可能かどうかを決めるリスク評価に当たる(同規格の 3.7.1)。

誤りの選択肢は,リスク回避,リスク保有(どちらもリスク対応の選択肢),リスク対応(リスクアセスメントの後に行う別のプロセス),リスクモニタリング(対応後に監視するプロセス)で,どれもリスクアセスメントの三つのプロセスではない。講評では,リスクアセスメントのプロセスは一定の理解がされていると述べている。記号で答える。

採点講評(IPA)

設問1は,全体的に正答率が高かった。リスクアセスメントのプロセスについて,一定の理解がされていることがうかがわれる。

設問1(2) 解答欄2つ

本文中の c,d に入れる適切な字句を,解答群の中から選び,記号で答えよ。解答群 ア リスクが顕在化したときの結果 イ リスク対応の実践の優先度 ウ リスクの起こりやすさ エ リスク保有の利点

〔c〕解答例

  • ア

〔d〕解答例

  • ウ

〔備考〕順不同

解説

本文の根拠

〔リスクアセスメント〕

リスク分析のプロセスとして,JIS Q 31000:2010 及び JIS Q 31010:2012 に沿って,c と,d を組み合わせてリスクのレベルを決定した。

リスクレベルは,結果とその起こりやすさの組合せとして表現される,リスクの大きさである(JIS Q 0073:2010 の 3.6.1.8)。したがって,c と d には“リスクが顕在化したときの結果”(ア)と“リスクの起こりやすさ”(ウ)が入り,二つの順序は問われない(解答例の備考は“順不同”)。

本文は,リスク分析のプロセスで二つの要素を組み合わせてリスクのレベルを決定したと述べている。リスクの影響の大きさ(結果)と,そのリスクが起こる可能性(起こりやすさ)を見積もり,掛け合わせて評価する,というのが一般的なリスク分析の考え方である。

誤りの選択肢は,“リスク対応の実践の優先度”(イ)と“リスク保有の利点”(エ)で,どちらもリスクレベルを決める要素ではない。優先度は,リスクレベルを基準と比較したあとの対応の段階で決める事柄である。講評は,設問1 全体で正答率が高かったとしている。

採点講評(IPA)

設問1は,全体的に正答率が高かった。リスクアセスメントのプロセスについて,一定の理解がされていることがうかがわれる。

設問2(1) 40字以内

表4中の下線①で,A 氏が低いと判断した理由は何か。40 字以内で述べよ。

解答例

  • ファイル転送サーバから研究開発PCへの通信はFW2で禁止されているから
解説

本文の根拠

表4 項番1

脆弱性 v を利用して,ファイル転送サーバから研究開発 PC が感染する可能性は低い。

表3 FW2

FW2/・研究開発 PC からファイル転送サーバへの必要な通信/・他の全ての通信。

表3 注記2

FW1 及び FW2 は,ステートフルパケットインスペクション型である。

表4 項番1 の脆弱性 v は,HTTP 通信を悪用して管理者権限を奪取するものである。ファイル転送サーバから研究開発 PC に感染を広げるには,サーバが研究開発 PC に向けて通信を始める必要がある。表3 のとおり,FW2 が許可するのは“研究開発 PC からファイル転送サーバへの必要な通信”だけで,他の全ての通信は禁止なので,ファイル転送サーバから研究開発 PC への通信は FW2 で禁止されている。ステートフルパケットインスペクション型は,許可した通信に対する応答を通すが,反対向きに始まる通信は通さない。

研究開発 LAN は,インターネットとも事務 LAN とも直接つながらず,FW2 の許可する通信だけで中間 LAN と結ばれる。感染の経路となる通信が FW2 で止まることが,可能性が低い理由である。

字数は 40 字以内で,解答例は 35 字。“FW2 で禁止されている”の主語(ファイル転送サーバから研究開発 PC への通信)と,止める機器(FW2)の両方を書く。“事務 PC から感染しない”のように,事務 PC を理由にしない。

設問2(2) 解答欄4つ

表4中の e~g に入れる適切な字句をそれぞれ 15 字以内で答えよ。また,これら全ての情報をまとめて窃取する方法を,30 字以内で具体的に述べよ。

〔e〕解答例

  • 利用者ID

〔f〕解答例

  • パスワード

〔g〕解答例

  • アップロード用URL

〔方法〕解答例

  • 事務PCのHTTPリクエストを監視する。

〔備考〕e~g は順不同

解説

本文の根拠

図4 手順1

研究開発 PC の Web ブラウザからファイル転送サーバのアップロード用 URL にアクセスし,表示される画面で利用者ごとに異なる利用者 ID 及びパスワードを入力してログインする。

表4 項番2

製品 Z のアクセス手順を組み込んだマルウェア β を作成し,電子メールを利用して N 社に送り込んだ。

表4 項番2

マルウェア β が,e,f,g の情報を窃取して,ファイル転送サーバにアクセスした。

ファイル転送サーバにアクセスする手順(図4)は,アップロード用 URL にアクセスし,利用者ごとに異なる利用者 ID とパスワードを入力してログインするものである。マルウェア β はこの手順を組み込んであるので,アクセスするには,これを実行するための“利用者ID”,“パスワード”,“アップロード用URL”の三つの情報が要る。e~g はこの三つで,順不同である。

これら全てをまとめて窃取する方法は,事務 PC 上で動作するマルウェアが,事務 PC の Web ブラウザの HTTP リクエストを監視することである。利用者がファイル転送サーバにアクセスして,URL を開き,ログインするときのリクエストに,この三つの情報が全て含まれている。

字数は,e~g が各 15 字以内(解答例は 5 字,5 字,10 字),方法が 30 字以内(同 20 字)。方法は,“キーボード入力を記録する”のように ID やパスワードだけに限った書き方では,URL を取得できず“まとめて”に合わない。三つの情報が通る通信(HTTP リクエスト)を監視する,と書く。

設問2(3) 50字以内

表4中の下線②で,A 氏が低いと判断した理由は何か。50 字以内で述べよ。

解答例

  • 研究開発PCからファイル転送サーバにアクセスして,ファイルをダウンロードする必要があるから
解説

本文の根拠

表4 項番2

その不正なファイルが原因となって研究開発 PC が感染する可能性は低い。

図4 手順4

ログイン後に表示されるダウンロード画面では,その利用者 ID でアップロードされたファイルの一覧が表示されるので,ファイルを一つ選択してダウンロードする。

図4 注記

事務 PC から研究開発 PC へのファイル転送時の操作手順は,図中の研究開発 PC を事務 PC に,事務 PC を研究開発 PC に,それぞれ置き換えて読むものとする。

表3 FW2

FW2/・研究開発 PC からファイル転送サーバへの必要な通信/・他の全ての通信。

不正なファイルは,ファイル転送サーバにアップロードされるだけでは,研究開発 PC には届かない。事務 PC から研究開発 PC への転送では,図4 を置き換えて読む,つまり研究開発 PC の Web ブラウザがファイル転送サーバのダウンロード画面にアクセスしてログインし,ファイルを選択してダウンロードする手順になる。FW2 は研究開発 PC からファイル転送サーバへの通信だけを許可しているので,サーバから研究開発 PC へファイルを送り込むことはできない。研究開発 PC からファイル転送サーバにアクセスして,ファイルをダウンロードする必要がある。

感染するのは,不正なファイルが研究開発 PC にダウンロードされ,実行されたときである。ダウンロードされなければ,不正なファイルは時間がたつと削除される(図4 の“アップロードしてから 4 時間たつとファイルは削除される”)。

字数は 50 字以内で,解答例は 45 字。“FW2 で通信が禁止されているから”だけでは,設問2(1) の答えと同じになる。この設問では,“ダウンロードされる必要がある”という点を書く。

設問3 解答欄4つ

表6中の h~k に入れる適切な内容を,h 及び j については“低い”又は“高い”のいずれかで答え,i 及び k についてはそれぞれ 30 字以内で述べよ。

〔h〕解答例

  • 高い

〔i〕解答例

  • 通信経路上に感染活動を遮断する機器が存在しないから

〔j〕解答例

  • 低い

〔k〕解答例

  • FW2によって感染活動を遮断できるから
解説

本文の根拠

表6 (い)の事務 PC から配信サーバへ

結論:感染する可能性が低い。理由:FW1 によって感染活動を遮断できるから

表4 項番3

更新ファイルの提供に使用するプロトコルは,ファイル共有プロトコルではない。

表6 の前文

検討の際に,FW1 と FW2 の設定は必要最小限の通信だけを許可するものとした。

図3 注記

(あ),(い)は,新たに機器を設置する接続点を示す。

図3 の(あ)は研究開発 LAN の L2SW,(い)は中間 LAN の L2SW への接続点である。(あ)に配信サーバを置くと,研究開発 PC と配信サーバは同じ LAN にあり,間に FW などの機器が無い。脆弱性 w を利用して感染を広げるマルウェア γ(ファイル共有プロトコルを悪用)は,LAN 内を通って感染できるので,感染する可能性は高い(h)。理由は,通信経路上に感染活動を遮断する機器が存在しないから(i)。

(い)に置くと,研究開発 PC から配信サーバへの通信は FW2 を通る。FW2 は必要最小限の通信だけを許可していて,更新ファイルの提供はファイル共有プロトコルではないので,ファイル共有プロトコルを悪用する感染活動は FW2 で遮断できる。したがって感染する可能性は低い(j)。理由は,FW2 によって感染活動を遮断できるから(k)。

字数は i と k が各 30 字以内で,解答例は 25 字と 19 字。h と j は“低い”又は“高い”で答える。講評は,i で“研究開発 PC はマルウェアに感染しないから”という解答が一部に見られたとし,分離されたネットワークでも感染は起き得ることを前提に対策を検討する必要がある,と述べている。

採点講評(IPA)

設問3は,全体的に正答率が高かったが,iでは“研究開発PCはマルウェアに感染しないから”という解答が一部に見られた。分離されたネットワークであっても,マルウェア感染は起き得ることを前提にセキュリティ対策を検討する必要があることを理解しておいてほしい。

設問4 15字以内 解答欄1つ

本文中の l に入れる適切な手順を,15 字以内で答えよ。

〔l〕解答例

  • 上長による承認
解説

本文の根拠

〔不審な操作ログ〕

このマルウェアの情報を調べたところ,次の機能をもっていることが分かった。

〔不審な操作ログ〕

図4の操作手順による,ファイル転送サーバへのファイルのアップロード

〔不審な操作ログ〕

図4の操作手順による,ファイル転送サーバからのファイルのダウンロード

図2 要件3

社外の共同研究者と共有するために承認を受けた新薬ファイル

このマルウェアは,図4 の操作手順(ログインとアップロード,ダウンロード)を自動で実行できる。ID とパスワードも既に窃取している(講評も“マルウェアが既にパスワードを窃取していることを読み取れていない”解答を指摘している)ので,再度パスワードを入力させても防げない。追加する手順は,マルウェアが代行できない,人が行う確認でなければならない。

図2 の要件3 は,社外の共同研究者と共有するために“承認を受けた”新薬ファイルを転送する,としている。正当なファイル転送であることを確認するには,アップロード後(手順2 の後)に,上長がそのファイルの転送を承認する手順を入れ,その完了をもってダウンロードを可能にすればよい。マルウェアが勝手にアップロードしたファイルは,承認されないのでダウンロードできない。

字数は 15 字以内で,解答例は“上長による承認”の 7 字。“パスワードの再入力”,“ログアウト”など,マルウェアが実行できる手順は答えにならない。

採点講評(IPA)

設問4は,正答率が低かった。マルウェアが既にパスワードを窃取していることを読み取れていない,“再度パスワードを入力する”という解答が散見された。秘密情報を窃取するマルウェアは実際に存在するので,その仕組みを理解した上で対策を検討してほしい。

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