‹ ぱすてく

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

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

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

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

この年度を解いてみる

問1 ソフトウェア開発

ソフトウェア開発に関する次の記述を読んで,設問1~3に答えよ。

U 社は,IoT 機器の開発を行う,従業員数 400 名の企業である。IoT 機器のソフトウェアの開発には C/C++言語を使っている。IoT 機器に搭載する OS には,Linux を利用してきたが,今後は Linux 以外も利用する予定である。これまで製品に大きなトラブルはなかったが,2020 年東京オリンピック・パラリンピックに向けて IoT 機器に関するセキュリティリスクが高まると経営層が判断し,開発におけるセキュリティ対策を強化することになった。そこで,開発部の L 部長と X 主任がセキュリティ対策技術を調査した。

〔メモリ破壊攻撃の概要〕

メモリ破壊脆弱性は,プログラム実行時に,メモリ上にある制御情報を書き換えることによって,実行制御を奪うなどのメモリ破壊攻撃に悪用される。メモリ破壊脆弱性の一種にバッファオーバフロー脆弱性がある。

例えば,図1に示すプログラム Vuln があったとする。Vuln は,スタックバッファオーバフロー脆弱性の学習用に作成した,32 ビット版 Linux で実行可能なプログラムである。図2は Vuln 内の関数 foo が呼び出された後のメモリマップである。プログラム実行時に,変数 b が指し示すデータが不正な場合,そのデータによって,a が [ あ ] に書き換えられると,関数 foo の終了時に shell コードへ処理が遷移する。しかし,①このような遷移があっても,データ実行防止機能(以下,DEP という)が機能していると,攻撃は成功しない。

C 言語のプログラム Vuln(行番号付き)。(省略)の後,1: int main(int argc, char *argv[]) { 2:   char *a, *x; (省略,argv に応じてサイズを確保する。) (省略,ここで a,x がポイントする領域に argv からデータをコピーする。) 3:   foo(a, x); (省略,ここでその他の必要な処理をする。) 4: } 5: int foo(char *b, char *c) { 6:   char d[100]; (省略) 7:   strcpy(d, b); 8:   if (d[0] == 0) { 9:     err_out(c); (省略) 10:   } (省略) 11:   return 0; 12: } 13: int err_out(char *errmsg) { 14:   char s1[100]; 15:   int i=0; (省略) 16:   while ((s1[i++] = *errmsg++) != '¥0'); 17:   fprintf(stderr, "Error : %s ¥n", s1); (省略) 18:   return 0; 19: }
図1 スタックバッファオーバフロー脆弱性のあるプログラム Vuln
メモリマップ(上が高位アドレス)。左側に矢印で示したアドレス:㋐ ffffffff(最上端),㋑ bffff2bc,㋒ bffff29d(以上,スタック領域の最上部付近。bffff2bc と bffff29d の間に“(ここに shell コードが入っている。)”の枠がある),㋓ bffdf000(スタック領域の下端),㋔ 08048350(テキスト領域の先頭,“Vuln”の枠)。上から順に,(ffffffff の下に省略線),“(ここに shell コードが入っている。)”,“リターンアドレス X”,“ベースポインタレジスタ保存値”,“char d[100]”(以上がスタック領域,㋓ bffdf000 が下端),“ライブラリ”,空の枠(ヒープ領域),“データ”(BSS 領域),“データ”(データ領域),“Vuln”(テキスト領域,アドレス 08048350)。各枠の間は省略線で区切られている。注記:メモリアドレスは 4 バイトの 16 進表記である。
図2 関数 foo が呼び出された後のメモリマップ

〔メモリ破壊攻撃に対する対策技術〕

現在,メモリ破壊攻撃に対する対策技術(以下,M 対策技術という)が普及している。X 主任は,DEP を含めた代表的な M 対策技術を調査し,表1にまとめた。

列は技術名,概要,期待される効果,備考。DEP:(省略),(省略),プログラムによっては適用できない。SSP(Stack Smashing Protection):スタック領域で canary と呼ばれる値を利用してスタックバッファオーバフローの有無を確認する技術,スタックバッファオーバフローを検知し,抑制する。,(省略)。ASLR(Address Space Layout Randomization):プログラムの実行時に,データ領域,ヒープ領域,スタック領域及びライブラリを,ランダムにマップする OS の技術,(省略),32 ビット OS の場合,効果が限定的である。PIE(Position Independent Executable):プログラムの実行時に,ASLR が対象とする領域に加えて,テキスト領域もランダムにマップする技術,(省略),プログラムによっては適用できない。Automatic Fortification:バッファオーバフロー脆弱性の原因となりうる脆弱なライブラリ関数を,コンパイル時に境界チェックを行う安全な関数に置換する技術,境界チェックによって,オーバフローを抑制する。,境界チェックにおいて,書込み先のサイズが不明な場合は機能しない。
表1 M 対策技術の概要

攻撃者が,DEP を回避するため,図2中の shell コードへ処理を遷移させる代わりに,b 中の実行可能なコードや c 領域にマップされている Vuln の断片コードを利用するケースがある。例えば,攻撃の際,a を b 関数の先頭アドレスで書き換えて,攻撃者の意図した b 関数を呼び出す d 攻撃もある。

〔M 対策技術の動作概要〕

例えば,Vuln のコンパイル時に SSP が適用されていると,関数 foo を呼び出す際,図2のベースポインタレジスタ保存値より下位に e が挿入される。もしも,e が上書きされた場合は,攻撃と判断し,Vuln の実行を停止する。

なお,Vuln の場合は簡単ではないが,攻撃者が e の値を正確に推測して上書きできてしまうと,a の書換えが可能となり,d 攻撃を防げない。その対策としては,ライブラリ関数のアドレス推定を困難にさせる f が有効である。

しかし,f は c 領域にある実行可能なコードを用いる攻撃に対しては効果がない。そうした攻撃は PIE によって緩和される。さらに,Vuln の場合,Automatic Fortification によって,ライブラリ関数 g を安全な関数に置き換えることで,バッファオーバフローの原因を排除することができる。

〔脆弱性対策強化〕

L 部長と X 主任が表1の技術を確認したところ,表1の備考欄の指摘以外にも②Automatic Fortification ではバッファオーバフローの原因を排除できないケースがあると分かった。

L 部長は次に,表1の技術を適用することによる影響を確認した。その結果,次のことが分かった。例えば,ソースコードに脆弱性があっても,SSP を適用してコンパイルしていると,メモリ破壊攻撃が成立しないが,そのソースコードを③別の開発環境でコンパイルすると問題となる場合があることが分かった。

これらについては,U 社内でコーディングスタンダードを定め,それによって対処することにした。検討の結果,U 社は表1の技術を全て採用することにした。

出題趣旨(IPA)

昨今,多くのアプリケーションで様々な脆弱性情報が報告されるが,開発者のみならず,ユーザ企業のセキュリティ担当者(CSIRTのテクニカル担当)もそのリスクの程度を正確に推定できることが必要であると考える。本問では,ソフトウェア開発における脆弱性の対策技術について問う。特に,バッファオーバフロー脆弱性(メモリ破壊脆弱性)について,ユーザ企業のセキュリティ担当者がその仕組み及びその対策について知っておくべき内容を問う。

採点講評(問全体・IPA)

問1では,ソフトウェア開発の現場で採用されている,メモリ破壊攻撃に対する対策技術について出題した。

設問と解答例

設問1(1) 解答欄4つ

本文中の a ~ d に入れる適切な字句を,解答群の中から選び,記号で答えよ。解答群 ア Return-to-libc イ ROP ウ テキスト エ ヒープ オ ベースポインタレジスタ保存値 カ ライブラリ キ リターンアドレス X

〔a〕解答例

  • キ

〔b〕解答例

  • カ

〔c〕解答例

  • ウ

〔d〕解答例

  • ア
解説

本文の根拠

〔メモリ破壊攻撃の概要〕

プログラム実行時に,変数 b が指し示すデータが不正な場合,そのデータによって,a が [ あ ] に書き換えられると,関数 foo の終了時に shell コードへ処理が遷移する。

〔メモリ破壊攻撃の概要〕

攻撃者が,DEP を回避するため,図2中の shell コードへ処理を遷移させる代わりに,b 中の実行可能なコードや c 領域にマップされている Vuln の断片コードを利用するケースがある。

〔メモリ破壊攻撃の概要〕

攻撃の際,a を b 関数の先頭アドレスで書き換えて,攻撃者の意図した b 関数を呼び出す d 攻撃もある。

図1の関数 foo は,7行目の strcpy(d, b) で,書込み先 d(100 バイトの配列)の大きさを確かめずに b の内容をコピーしている。図2のメモリマップでは,スタックの下位(図の下側)に char d[100],その上位に ベースポインタレジスタ保存値 とリターンアドレス X が並ぶので,長すぎるデータで d を溢れさせると,上位にあるリターンアドレス X が書き換えられる。関数 foo が終了するとき,処理はスタックに保存されたリターンアドレスへ戻るので,ここを shell コードの先頭アドレスにしておけば,shell コードへ処理が遷移する。したがって a にはキ(リターンアドレス X)が入る。

b と c は,DEP を回避する攻撃が使う領域である。DEP でも実行が許されるのは,プログラムのコードが置かれたテキスト領域やライブラリである。リターンアドレスをライブラリ関数の先頭アドレスで書き換えて,攻撃者が選んだライブラリ関数を呼び出す攻撃が Return-to-libc で,b はカ(ライブラリ),d はア(Return-to-libc)になる。c はテキスト領域(図2で Vuln が載っている領域)で,ここにあるコードの断片を次々につないで実行する手法が ROP であり,空欄 d にはならない。

解答群の取り違えに注意する。オ(ベースポインタレジスタ保存値)は d[100] とリターンアドレス X の間にあるが,shell コードへ処理を移すために書き換えるのはリターンアドレス X の方である。ウとエでは,ヒープは書込み可能なデータ領域で,攻撃者が使う“実行可能なコード”の置き場所にはならないので,c はウ(テキスト)になる。

採点講評(IPA)

設問1は,メモリ破壊攻撃自体の仕組みについて問う問題であった。これは,バッファオーバーフローなどのメモリ破壊攻撃についての動作の概要を問う問題である。基本については理解されているようだったが,(2)と(3)についての正答率は低かった。受験者は,メモリ破壊攻撃の具体的な動きについての理解を確認されたい。

設問1(2) 解答欄1つ

本文中の [ あ ] に入れる適切なアドレス値を図2中から選び,㋐~㋔の記号で答えよ。

〔あ〕解答例

  • ㋒
解説

本文の根拠

図2

上から順に,(ffffffff の下に省略線),“(ここに shell コードが入っている。)”,“リターンアドレス X”,“ベースポインタレジスタ保存値”,“char d[100]”(以上がスタック領域,㋓ bffdf000 が下端)

図2

㋐ ffffffff(最上端),㋑ bffff2bc,㋒ bffff29d(以上,スタック領域の最上部付近。bffff2bc と bffff29d の間に“(ここに shell コードが入っている。)”の枠がある)

空欄 あ には,リターンアドレス X を書き換える値,つまり shell コードの先頭アドレスが入る。図2は上が高位のアドレス(最上端が ffffffff)で,shell コードの枠は bffff2bc(㋑)と bffff29d(㋒)の間にあり,枠の下端に当たる bffff29d(㋒)が shell コード領域の先頭(最も低いアドレス)である。

㋐ ffffffff は 32 ビット空間の最上端で,コードの置き場所ではない。㋑ bffff2bc は shell コード領域の上端側,㋓ bffdf000 はスタック領域の下端,㋔ 08048350 はテキスト領域(Vuln)の先頭である。処理を shell コードに遷移させるなら,㋔(Vuln の先頭)や㋓(スタックの端)ではなく,shell コードの先頭を指す㋒でなければならない。

解答群のない選択式の設問で,図2の矢印と記号の対応を正確に読み取ることが要点である。数値を比べるときは,図の上下が高位・低位のどちらかを先に確かめる(採点講評も,(2) の正答率は低かったとしている)。

採点講評(IPA)

設問1は,メモリ破壊攻撃自体の仕組みについて問う問題であった。これは,バッファオーバーフローなどのメモリ破壊攻撃についての動作の概要を問う問題である。基本については理解されているようだったが,(2)と(3)についての正答率は低かった。受験者は,メモリ破壊攻撃の具体的な動きについての理解を確認されたい。

設問1(3) 35字以内

本文中の下線①について,攻撃が成功しない理由を 35 字以内で述べよ。

解答例

  • shellコードがDEPで実行禁止にされているスタック領域にあるから
解説

本文の根拠

〔メモリ破壊攻撃の概要〕

しかし,①このような遷移があっても,データ実行防止機能(以下,DEP という)が機能していると,攻撃は成功しない。

図2

(ここに shell コードが入っている。)

DEP(データ実行防止機能)は,データを置く領域でのコードの実行を禁止する機能である。図2では shell コードがスタック領域に置かれており,スタックはデータ(引数・局所変数など)を置く場所なので,DEP が有効だと,リターンアドレスを書き換えて処理を shell コードへ遷移させても,そこで実行しようとした時点で実行が拒否され,攻撃は成功しない。

解答は,“shell コードが置かれている場所”(スタック領域)と“その場所は DEP で実行を禁止されている”の 2 点を入れる。解答例は,“shellコードがDEPで実行禁止にされているスタック領域にあるから”である。

35 字以内なので,“DEP で実行が禁止されたスタック領域に shell コードがあるから”のように,主語(shell コード)・場所(スタック領域)・理由(DEP による実行禁止)の 3 つを残し,“メモリ破壊が起きても”のような前置きを落とす。解答例は 34 字である。採点講評は,(3) の正答率が低かったとしている。

採点講評(IPA)

設問1は,メモリ破壊攻撃自体の仕組みについて問う問題であった。これは,バッファオーバーフローなどのメモリ破壊攻撃についての動作の概要を問う問題である。基本については理解されているようだったが,(2)と(3)についての正答率は低かった。受験者は,メモリ破壊攻撃の具体的な動きについての理解を確認されたい。

設問2(1) 解答欄2つ

本文中の e ,f に入れる適切な字句を,表1中の用語を用いて答えよ。

〔e〕解答例

  • canary

〔f〕解答例

  • ASLR
解説

本文の根拠

表1

SSP(Stack Smashing Protection):スタック領域で canary と呼ばれる値を利用してスタックバッファオーバフローの有無を確認する技術

表1

ASLR(Address Space Layout Randomization):プログラムの実行時に,データ領域,ヒープ領域,スタック領域及びライブラリを,ランダムにマップする OS の技術

〔M 対策技術の動作概要〕

その対策としては,ライブラリ関数のアドレス推定を困難にさせる f が有効である。

e は,SSP が関数呼出しの際にベースポインタレジスタ保存値より下位(図2の下側)に挿入する値で,表1の SSP の概要にある“canary と呼ばれる値”である。スタックバッファオーバフローでリターンアドレス X まで書き換えようとすると,その手前にある canary も上書きされるので,関数の終了時に値の変化を調べて攻撃を検知し,Vuln の実行を停止する。攻撃者が canary の値を正確に推測して同じ値で上書きできれば,検知をすり抜けてリターンアドレス X を書き換えられる。

f は,“ライブラリ関数のアドレス推定を困難にさせる”技術で,表1の中でライブラリを含む領域をランダムにマップするのは ASLR である。続く文の“f は c 領域にある実行可能なコードを用いる攻撃に対しては効果がない。そうした攻撃は PIE によって緩和される”とも合い,PIE は ASLR が対象とする領域に加えてテキスト領域もランダムにする技術と表1に書かれている。

表1の用語で答える指定なので,e は canary,f は ASLR と書く(PIE や DEP は,それぞれ“テキスト領域もランダム化”“実行禁止”の技術で,空欄の説明とは合わない)。

採点講評(IPA)

設問2は,メモリ破壊攻撃に対する対策技術についての問題であった。本文中の説明を理解すれば解ける問題であったので,正答率は高かった。

設問2(2) 解答欄1つ

本文中の g に入れる適切なライブラリ関数名を答えよ。

〔g〕解答例

  • strcpy
解説

本文の根拠

表1

Automatic Fortification:バッファオーバフロー脆弱性の原因となりうる脆弱なライブラリ関数を,コンパイル時に境界チェックを行う安全な関数に置換する技術,境界チェックによって,オーバフローを抑制する。,境界チェックにおいて,書込み先のサイズが不明な場合は機能しない。

図1

6: char d[100]; (省略) 7: strcpy(d, b);

Automatic Fortification が置き換える対象は“脆弱なライブラリ関数”であり,置換後は境界チェックを行う。図1でライブラリ関数の呼出しは 7 行目の strcpy(d, b) と 17 行目の fprintf だが,バッファオーバフローの原因になっているのは,書込み先 d を溢れさせる strcpy である。d は 6 行目で char d[100] と大きさが分かっているので,書込み先のサイズが既知の場合に当たり,境界チェック付きの関数に置換できる。

したがって g は strcpy である。fprintf(17 行目)は標準エラー出力へ書き出す関数で,d や s1 のような配列へ書き込む処理ではないので,バッファオーバフローの原因ではない。

関数名を答えるだけの設問なので,引数まで含めた strcpy(d, b) などと書かず,ライブラリ関数名の strcpy だけを書く。採点講評のとおり,本文の説明を図1に当てはめれば解ける問題である。

採点講評(IPA)

設問2は,メモリ破壊攻撃に対する対策技術についての問題であった。本文中の説明を理解すれば解ける問題であったので,正答率は高かった。

設問3(1) 解答欄2つ

本文中の下線②について,図1のプログラムにおいて,排除できないケースに該当する処理を行番号で答えよ。また,排除できない理由を 30 字以内で述べよ。

〔行番号〕解答例

  • 16行目

〔排除できない理由〕解答例

  • ポインタを使って直接メモリ操作しているから
解説

本文の根拠

図1

16: while ((s1[i++] = *errmsg++) != '¥0');

表1

境界チェックにおいて,書込み先のサイズが不明な場合は機能しない。

〔脆弱性対策強化〕

②Automatic Fortification ではバッファオーバフローの原因を排除できないケース

Automatic Fortification は,ライブラリ関数を安全な関数に置き換える技術である。図1で s1[100] に書き込むのは,13〜19 行目の err_out 関数内の 16 行目 while ((s1[i++] = *errmsg++) != '¥0'); で,ここはライブラリ関数を呼ばずに,ポインタ errmsg を進めながら 1 文字ずつ配列 s1 へ直接コピーしている。置き換えるべきライブラリ関数がないので,Automatic Fortification では境界チェックを加えられず,オーバフローの原因を排除できない。行番号は 16 行目である。

理由は,“ポインタを使って直接メモリ操作しているから”(解答例)である。7 行目の strcpy は,書込み先 d のサイズが分かるので置換できる。一方,16 行目はコピーする長さの上限がコードに現れず,ライブラリ関数でもないので,この技術の対象外になる。採点講評は,なぜ対処できないかを正しく理解していない解答が多かったとしている。

30 字以内なので,“ライブラリ関数を使わず,ポインタで直接メモリに書き込んでいるから”のように,“ライブラリ関数ではない”ことと“ポインタ操作”のどちらかが分かる書き方にする。解答例は 21 字である。

採点講評(IPA)

設問3は,メモリ破壊攻撃に対する対策技術の制約についての問題であった。おおむね正答率は低かった。

(1)はAutomatic Fortificationの仕組みを理解した上で,Automatic Fortificationが対処できない箇所をソースコードから見つける問題であった。なぜ対処できないのかの理由を正しく理解していない解答が多かった。(2)は,SSPはコンパイラに依存するので,脆弱性があるコードにSSPが適用されない場合,脆弱性が防げないことに気付いてほしかった。

設問3(2) 解答欄2つ

本文中の下線③について,どのような問題か。また,どのような開発環境の場合に問題となるか。それぞれ 25 字以内で述べよ。

〔問題〕解答例

  • メモリ破壊攻撃を防げないこと

〔開発環境〕解答例

  • SSPを適用できないコンパイラを利用する開発環境
解説

本文の根拠

〔脆弱性対策強化〕

ソースコードに脆弱性があっても,SSP を適用してコンパイルしていると,メモリ破壊攻撃が成立しないが,そのソースコードを③別の開発環境でコンパイルすると問題となる場合があることが分かった。

〔メモリ破壊攻撃の概要〕

Vuln は,スタックバッファオーバフロー脆弱性の学習用に作成した,32 ビット版 Linux で実行可能なプログラムである。

本文は,ソースコードに脆弱性があっても,SSP を適用してコンパイルすると攻撃が成立しないと述べている。つまり SSP による保護は,コードの修正ではなくコンパイル(コンパイラの機能)に依存している。同じソースコードを別の開発環境でコンパイルし,その環境のコンパイラが SSP を適用できないと,脆弱性が残ったままのプログラムができ,メモリ破壊攻撃を防げなくなる。

したがって,どのような問題かは“メモリ破壊攻撃を防げないこと”,どのような開発環境かは“SSPを適用できないコンパイラを利用する開発環境”である(解答例)。IoT 機器に搭載する OS は今後 Linux 以外も使う予定とされており,OS やコンパイラが変わる場面が現実にある。採点講評も,SSP はコンパイラに依存することに気付いてほしかったと述べている。

どちらも 25 字以内なので,問題は“攻撃を防げず脆弱性が残ること”,環境は“SSP が使えないコンパイラの環境”のように,要点(防げない/SSP が使えない)だけを書く。解答例は 14 字と 24 字である。

採点講評(IPA)

設問3は,メモリ破壊攻撃に対する対策技術の制約についての問題であった。おおむね正答率は低かった。

(1)はAutomatic Fortificationの仕組みを理解した上で,Automatic Fortificationが対処できない箇所をソースコードから見つける問題であった。なぜ対処できないのかの理由を正しく理解していない解答が多かった。(2)は,SSPはコンパイラに依存するので,脆弱性があるコードにSSPが適用されない場合,脆弱性が防げないことに気付いてほしかった。

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

問2 セキュリティインシデント対応

セキュリティインシデント対応に関する次の記述を読んで,設問1~4に答えよ。

G 社は,従業員数 1,200 名の製造業者であり,本社と四つの工場がある。工場には,無線 LAN アクセスポイント(以下,AP という)を導入している。本社及び各工場には,レイヤ 3 スイッチ(以下,L3SW という)及び,ネットワークセキュリティモニタリング(以下,NSM という)のセンサが設置されている。NSM センサには,シグネチャ型の IDS 機能に加えて,ネットワークフロー情報(以下,NF 情報という)を記録する機能がある。NF 情報は,流れている全てのパケットについて,ヘッダ情報を参照し,“コネクション開始日時,送信元 IP アドレス,宛先 IP アドレス,送信元ポート,宛先ポート,プロトコル,コネクションステータス,コネクション時間,送信バイト数,受信バイト数”をコネクション単位でレコード化したものである。NF 情報は,NSM センサから管理ネットワークを通じて NSM 管理サーバに送信され,統合管理されている。G 社のネットワーク構成を図1に示す。

凡例:FW:ファイアウォール,L2SW:レイヤ2スイッチ。インターネットに本社の FW が接続し,FW に本社の L3SW 2台(図中の左側の L3SW と中央の L3SW)と工場の L3SW が接続する。本社(左):L3SW に NSM センサが接続し,L3SW の下に 10.10.0.0/16 のセグメントの L2SW があり,L2SW にファイルサーバ,Web サーバ,メールサーバ,NSM 管理サーバ,ログ管理サーバ(ほか省略)が接続する。本社(中央):L3SW に NSM センサが接続し,L3SW の下に 10.100.1.0/24 のセグメント(L2SW に PC 複数)から 10.100.50.0/24 のセグメント(L2SW に PC 複数)まで複数のセグメントがある。工場(右,ほかの工場も同様に複数):L3SW に NSM センサが接続し,L3SW の下に 10.100.90.0/24 のセグメント(L2SW に PC 複数)と,10.100.130.0/24 のセグメントがある。10.100.130.0/24 のセグメントには L2SW があり,PC と AP が接続し,AP には無線で複数の PC が接続している。注記:管理ネットワークの記載は省略している。
図1 G 社のネットワーク構成

L3SW には,スイッチの特定の物理ポートを流れるパケットを,ミラーポートという別の物理ポートにミラーリングする機能があり,ネットワーク障害発生時にパケットを取得する用途でも使われている。L3SW では,FW に接続している 1G ビット/秒(以下,ビット/秒を bps という)の物理ポートを流れるインとアウトのパケットを,NSM センサに接続している 10Gbps のミラーポートにミラーリングしている。ミラーポートに流れる通信量は,全二重 1Gbps の 1 ポートの送受信をミラーリングする場合,最大 a bps となる。L3SW 及び L2SW は,VLAN をサポートしている機器であるが,G 社では VLAN の設定はしていない。VLAN を設定する場合,L3SW では,IEEE 802.1Q の b を付与した状態でミラーリングできるので,障害が発生している VLAN を識別できる。ミラーポートを使用せずにパケットを取得する方法として,ネットワーク c を使用する方法もある。

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

ある日,セキュリティ管理部の J 主任に NSM 管理サーバからアラートメールが届いた。J 主任は,部下の M 君とともに調査を開始した。NSM 管理サーバのダッシュボード画面を確認したところ,IDS 機能のアラートは発生していなかったが,通信量が普段よりも 2 倍以上増えていたのでアラートメールが送られたことが分かった。そこで,NSM 管理サーバを使って,通信量が増えている原因を調べることにした。まず,直近 1 時間のコネクション件数を表示してみた。表示内容を図2に示す。

4つの表。送信元 IP アドレス別の件数(Top10):10.100.130.1 40,435,457,10.100.1.2 1,545,454,10.100.3.2 1,435,094,10.100.5.10 1,420,195,10.100.90.121 1,417,872,10.100.100.2 1,401,370,(以下省略)。宛先 IP アドレス別の件数(Top10):10.10.10.10 5,684,129,10.10.10.20 4,396,545,10.10.10.50 3,834,903,10.10.20.30 3,112,935,10.10.20.20 2,487,456,10.10.10.90 1,843,623,(以下省略)。宛先ポート別の件数(Top10):445/TCP 46,862,012,80/TCP 8,540,743,443/TCP 3,541,089,587/TCP 442,530,53/UDP 423,668,123/UDP 405,759,(以下省略)。TCP ステータス別の件数(Top10):SYN に対して応答なし 40,873,561,SYN/FIN で正常終了 11,353,579,SYN なし ACK だけ 845,396,宛先からの RST で終了 34,675,送信元からの RST で終了 13,961,(以下省略)。
図2 NSM 管理サーバのダッシュボード画面(直近 1 時間のコネクション件数)

宛先ポート別の件数で,445/TCP のコネクション件数が普段と比べて非常に多かった。J 主任は,セキュリティ機関から,ワーム V に関する注意喚起を受け取っていたことを思い出した。ワーム V に関する注意喚起を図3に示す。

枠の中に次の文章。・ワーム V は,Windows の脆弱性を悪用し,ファイル共有で使われる 445/TCP のポートを経由して感染を広めるものであり,複数の組織でネットワークに障害が発生している。・ワーム V は,次の 2 種類の IP アドレス範囲に対して,並行して 445/TCP のポートをスキャンし,(この箇所の“正常な応答がある場合”に下線①が付いている)正常な応答がある場合に,脆弱性を悪用して感染を試みる。(a) 感染した PC と同一セグメントの範囲 (b) 1.1.1.1 から 223.255.255.255 の範囲。スキャンでは,各 IP アドレスに 1 パケットずつ接続要求を送信する。(a)のスキャンでは,IP アドレス範囲の最後までスキャンが完了した場合,5 分間待機した後,IP アドレス範囲の先頭からスキャンを繰り返す。(b)のスキャンは,IP アドレス範囲の最後までスキャンが完了した場合,スキャンを終了する。
図3 ワーム V に関する注意喚起

J 主任はワーム V が原因であると仮定して分析を進めた。送信元 IP アドレス別の件数では,10.100.130.1 の件数が普段と比較して非常に多かった。宛先 IP アドレス別の件数では,ファイルサーバや Web サーバなどが件数の上位になっており,普段と比べて大きな違いはなかった。②ワーム V が行うスキャンは,宛先 IP アドレス別の件数の上位に登場していない。TCP ステータス別の件数では,“SYN に対して応答なし”が多くなっているが,これはワーム V のスキャンに対して,宛先 IP アドレスから応答がないことを示していると考えた。ここまでの調査結果から,10.100.130.1 の IP アドレスをもつ機器がワーム V に感染している可能性があると判断し,ネットワークの停止をアナウンスして,L2SW で,10.100.130.1 の機器がつながっている物理ポートをシャットダウンした。

〔無線 LAN セグメントの調査〕

10.100.130.1 は,ルータとして動作している AP に割り当てた IP アドレスであることが分かった。AP では NAPT で IP アドレスの変換をして PC と接続していることから,AP に接続している PC がワーム V に感染している可能性があると判断した。これらの PC の IP アドレスは AP の DHCP サーバ機能で設定していることから,AP の通信ログ及び DHCP サーバ機能のログ(以下,DHCP サーバログという)を調査することにした。

DHCP サーバ機能では,IP アドレスのリース期間を 1 時間に設定しており,プールしている IP アドレス範囲から適宜リースする。AP での通信ログのうち宛先 IP アドレスが G 社の利用していない IP アドレスであり,かつ,宛先ポートが 445/TCP のものを表1に示す。表2に 10 月 28 日の AP の DHCP サーバログを示す。M 君は,表1と表2を基に,445/TCP のポートをスキャンしている PC を特定した。

列は日時,NAPT 変換前 IP アドレス,NAPT 変換後 IP アドレス,宛先 IP アドレス,宛先ポート。10/28 14:25:02(注 1)),192.168.0.32,10.100.130.1,1.1.1.1,445。(省略)。10/28 14:26:45(注 1)),192.168.0.8,10.100.130.1,1.1.1.1,445。(省略)。10/28 14:27:18(注 1)),192.168.0.44,10.100.130.1,1.1.1.1,445。(省略)。10/28 16:51:50(注 1)),192.168.0.12,10.100.130.1,1.1.1.1,445。(省略)。10/28 17:31:22,192.168.0.44,10.100.130.1,1.100.2.45,445。10/28 17:31:23,192.168.0.32,10.100.130.1,1.100.1.37,445。10/28 17:31:25,192.168.0.12,10.100.130.1,1.50.2.30,445。10/28 17:31:25,192.168.0.8,10.100.130.1,1.100.1.201,445。注記:省略された期間のログにおいて,NAPT 変換前 IP アドレスは,本表に記載されている IP アドレスだけが記録されている。注 1)それぞれの NAPT 変換前 IP アドレスが最初に記録された日時である。
表1 AP の通信ログ
列は日時,IP アドレス,MAC アドレス,ホスト名。10/28 10:45:38,192.168.0.8,X,PC101。10/28 10:46:12,192.168.0.12,J,PC204。10/28 10:46:49,192.168.0.32,P,PC301。10/28 10:46:53,192.168.0.21,U,PC145。10/28 10:47:11,192.168.0.44,T,PC277。10/28 10:48:20,192.168.0.4,H,PC132。10/28 10:49:03,192.168.0.112,S,PC105。10/28 10:49:47,192.168.0.55,R,PC298。10/28 14:24:50,192.168.0.32,M,PC321。10/28 16:51:13,192.168.0.44,G,PC133。10/28 16:51:42,192.168.0.12,X,PC101。10/28 16:52:37,192.168.0.32,N,PC340。10/28 16:54:29,192.168.0.8,P,PC301。10/28 22:53:45,192.168.0.8,Z,PC333。10/28 22:55:04,192.168.0.21,U,PC145。10/28 22:55:32,192.168.0.55,R,PC298。10/28 22:56:33,192.168.0.4,H,PC132。10/28 22:57:58,192.168.0.44,T,PC277。10/28 22:58:17,192.168.0.12,K,PC104。注記 1:IP アドレスのリースは記録されているが,IP アドレスのリリースは記録されていない。注記 2:本表では MAC アドレスを英字 1 字で表記している。
表2 AP の DHCP サーバログ

〔セキュリティインシデントの再発防止策〕

M 君は,無線 LAN のパケットをキャプチャしたところ,6 台の PC が,d リクエストをブロードキャストで送信して,同一セグメント内の PC を探索していることを確認した。

M 君は,無線 LAN に接続している PC のうち 6 台がワーム V に感染している可能性を J 主任に報告した。J 主任は,感染有無を確認するよう指示した。セキュリティ機関からは,ワーム V のインディケータ情報が e 形式で提供されていた。そこで M 君がそのインディケータ情報を使ってファイルを検索して,感染の有無を確認したところ,6 台ともワーム V に感染していることが分かった。

通信ログ及びワーム V のファイルの作成日時から,最初に感染したのは,IP アドレスが 192.168.0.32 の PC であり,この PC から他の PC へ感染が広がったことが分かった。この PC は,社外に持ち出して公衆無線 LAN に接続した際,セキュリティ修正プログラムが未適用で,かつ,マルウェア対策ソフトのマルウェア定義ファイルが更新されていない状態だったので,ワーム V に感染したと考えられた。G 社では,PC を社外に持ち出した際の情報漏えい対策を行っていたが,社外でワームに感染した PC を持ち帰るリスクは想定していなかった。

J 主任は,セキュリティインシデントの初動対応として,必要な措置を実施した。また,ワーム V に感染した PC が G 社のネットワーク内に新たに持ち込まれる可能性があるので,NSM センサの IDS 機能のシグネチャを更新して,ワーム V による感染活動のパケットを監視することにした。

次に,再発防止策として,無線 LAN には,社外に持ち出した PC を接続することが多いので,③PC を持ち帰った際に接続可否を判断するためにチェックを行うことにした。さらに,有線 LAN では,④同じ L2SW に接続された PC 同士のワーム感染を防ぐ対策を実施することにした。

J 主任は,調査結果を上司に報告し,再発防止策を実施して,セキュリティインシデントの対応を完了した。

出題趣旨(IPA)

2017年にWannaCryワームによる世界規模でのシステム障害が発生した。ネットワークワームによる大規模な被害は,2008年のConfickerワーム以来であり,短時間でネットワーク内の多数の端末に感染するようなワームに対し,迅速に対応できる人材の必要性が再認識された。本問では,自律的に自らの複製を拡散させ感染を拡大するという特徴をもつマルウェアへの感染を題材に,ネットワークの状態を把握し,インシデント発生時には迅速に対応できる能力を問う。

採点講評(問全体・IPA)

問2では,セキュリティインシデント対応について出題した。

設問と解答例

設問1 解答欄5つ

本文中の a ~ e に入る語句を解答群から選び,記号で答えよ。解答群 ア 10G イ 1G ウ 2G エ ARP オ CVE カ ECHO キ HTTP ク NOC ケ RF タグ コ STIX サ TAXII シ TLP ス VLAN タグ セ タップ ソ ロードバランサ

〔a〕解答例

  • ウ

〔b〕解答例

  • ス

〔c〕解答例

  • セ

〔d〕解答例

  • エ

〔e〕解答例

  • コ
解説

本文の根拠

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

L3SW では,FW に接続している 1G ビット/秒(以下,ビット/秒を bps という)の物理ポートを流れるインとアウトのパケットを,NSM センサに接続している 10Gbps のミラーポートにミラーリングしている。

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

VLAN を設定する場合,L3SW では,IEEE 802.1Q の b を付与した状態でミラーリングできるので,障害が発生している VLAN を識別できる。

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

ミラーポートを使用せずにパケットを取得する方法として,ネットワーク c を使用する方法もある。

〔セキュリティインシデントの再発防止策〕

6 台の PC が,d リクエストをブロードキャストで送信して,同一セグメント内の PC を探索していることを確認した。

〔セキュリティインシデントの再発防止策〕

セキュリティ機関からは,ワーム V のインディケータ情報が e 形式で提供されていた。

a は,全二重 1Gbps の 1 ポートの送受信をミラーリングする場合の最大の通信量である。全二重では送信(アウト)と受信(イン)が同時に 1Gbps ずつ流れるので,ミラーポートには最大でその合計の 2Gbps が流れる。10Gbps のミラーポートに収まるので問題はない。a はウ(2G)である。b は,IEEE 802.1Q が定める VLAN の識別情報で,フレームに付与するのは VLAN タグであり,ミラーリングでもこれが付いたまま出力されるので,障害が起きている VLAN を識別できる。b はス(VLAN タグ)。c は,ミラーポートを使わずにネットワークの途中でパケットを取り出す機器のネットワークタップで,セ(タップ)である。

d は,同一セグメント内の PC を探索するためにブロードキャストで送るリクエストである。同一セグメントの機器の MAC アドレスを調べる ARP リクエストが該当し,エ(ARP)になる。e は,セキュリティ機関が提供するワーム V のインディケータ情報の形式で,脅威情報を記述する仕様の STIX が該当する。

取り違えやすいのは,a のイ・ウの選択(片方向なら 1G でも,全二重の送受信をまとめて見るので 2G)と,e の STIX・TAXII・TLP の区別である。STIX は脅威情報の記述形式,TAXII はそれを交換するための通信の仕組み,TLP は共有する情報の取扱い範囲を示す区分で,“形式”を問う e には STIX が合う。採点講評も,STIX を答える問題の正答率が低かったとしている。

採点講評(IPA)

設問1は,ミラーポートを使ったネットワークのパケット取得について問う問題であった。正答率は高かったが,STIXを答える問題については,正答率が低かった。

設問2(1) 8字以内

図3中の下線①について,どのような TCP フラグの組合せの応答か。8 字以内で答えよ。

解答例

  • SYN+ACK
解説

本文の根拠

図3

正常な応答がある場合に,脆弱性を悪用して感染を試みる。

図2

TCP ステータス別の件数(Top10):SYN に対して応答なし 40,873,561,SYN/FIN で正常終了 11,353,579

図3の下線①は,445/TCP へのスキャンに“正常な応答がある場合”である。TCP のコネクション確立は,クライアントが SYN を送り,サーバがポートの開いている場合に SYN と ACK のフラグを立てた応答(SYN+ACK)を返し,クライアントが ACK を返す 3 ウェイハンドシェークで進む。ワーム V は SYN を送るスキャンで,SYN+ACK が返ってきたポートに対して脆弱性を悪用する。

図2の TCP ステータス別の件数に“SYN に対して応答なし”が多いのは,スキャン先に機器がない(又は 445/TCP が閉じている)ので,SYN に対して SYN+ACK が返らない場合である。逆に応答がある場合が,この設問の“正常な応答”である。

8 字以内なので,“SYN+ACK”(7 字)と書けばよい(解答例も同じ)。“SYN,ACK”のように 2 つに分けても意味は通じるが,組合せなので“+”でつなぐ。ACK だけ(図2の“SYN なし ACK だけ”)や RST と取り違えない。

設問2(2) 解答欄2つ

本文中の下線②について,ワーム V が行うスキャンの特徴を踏まえて,図3中の(a)及び(b)のスキャンが宛先 IP アドレス別の件数の上位に登場しない理由を,それぞれ 25 字以内で述べよ。

〔(a)〕解答例

  • パケットがNSMセンサの監視対象外であるため

〔(b)〕解答例

  • 同一IPアドレスへのスキャン回数は少ないから
解説

本文の根拠

図3

スキャンでは,各 IP アドレスに 1 パケットずつ接続要求を送信する。(a)のスキャンでは,IP アドレス範囲の最後までスキャンが完了した場合,5 分間待機した後,IP アドレス範囲の先頭からスキャンを繰り返す。

図1

AP には無線で複数の PC が接続している。

〔無線 LAN セグメントの調査〕

AP では NAPT で IP アドレスの変換をして PC と接続していることから,AP に接続している PC がワーム V に感染している可能性があると判断した。

宛先 IP アドレス別の件数は,NSM センサが L3SW のミラーポート経由で取得したパケットから作られる。(a)は“感染した PC と同一セグメントの範囲”へのスキャンで,同一セグメント内の PC 同士の通信は L2SW(や AP)の内部で転送され,L3SW や FW に接続するポートを通らない。そのため NSM センサはパケットを取得できず,宛先 IP アドレス別の件数に現れない。これが解答例の“パケットがNSMセンサの監視対象外であるため”である。採点講評も,(a)のスキャンは同一セグメントの範囲をスキャンするため,ネットワーク構成上 NSM ではパケットを取得できないことを理解していない解答が多かったとしている。

(b)は 1.1.1.1 から 223.255.255.255 の範囲で,各 IP アドレスに 1 パケットずつ送り,最後までスキャンが完了したら終了する。同じ宛先に何度も送るのではなく,宛先が非常に多くて 1 つの宛先 IP アドレスあたりの件数が少ないので,件数の上位(宛先 IP アドレス別 Top10)には入らない。解答例は“同一IPアドレスへのスキャン回数は少ないから”である。

25 字以内なので,(a)は“同一セグメントの通信は NSM センサが取得できないから”,(b)は“宛先ごとに 1 回しか送らないので件数が少ないから”のように,(a)は取得できない理由,(b)は件数が少ない理由をそれぞれ書く。解答例は 22 字ずつである。

採点講評(IPA)

設問2(2)は,本問で扱ったワームのスキャンの特徴の場合,IPアドレス別件数の上位に登場しない理由を問う問題であった。(a)のスキャンの場合,感染したPCと同一セグメントの範囲をスキャンするため,ネットワークの構成上,NSMではパケットを取得できないということを正しく理解していない解答が多かった。

設問3(1)

AP の通信ログと DHCP サーバログを調査して,ワーム V に感染したと判断すべき PC を全て答えよ。なお,解答に当たっては,答案用紙に記載した表2中の各 PC のホスト名を○印で囲んで示せ。

解答例

  • PC101,PC133,PC277,PC301,PC321,PC340
解説

本文の根拠

〔無線 LAN セグメントの調査〕

AP での通信ログのうち宛先 IP アドレスが G 社の利用していない IP アドレスであり,かつ,宛先ポートが 445/TCP のものを表1に示す。

表1

10/28 14:25:02(注 1)),192.168.0.32,10.100.130.1,1.1.1.1,445。

表2

注記 1:IP アドレスのリースは記録されているが,IP アドレスのリリースは記録されていない。

表1は,各 NAPT 変換前 IP アドレスがスキャンを始めた(その IP アドレスが最初に記録された)日時と,17:31 台のスキャンを示す。表2の DHCP サーバログで,その時刻にその IP アドレスをリースされていた PC を探す。リースは記録されるがリリースは記録されないので,ある IP アドレスは次に別の PC へリースされるまで同じ PC のものとみなす。

192.168.0.32 は 14:25:02 のスキャン開始時に,14:24:50 にリースされた M(PC321)が使い,17:31:23 の時点では 16:52:37 にリースされた N(PC340)が使う。192.168.0.8 は 14:26:45 に 10:45:38 リースの X(PC101),17:31:25 に 16:54:29 リースの P(PC301)。192.168.0.44 は 14:27:18 に 10:47:11 リースの T(PC277),17:31:22 に 16:51:13 リースの G(PC133)。192.168.0.12 は 16:51:50 に 16:51:42 リースの X(PC101),17:31:25 も同じ X(PC101)で,PC101 は 192.168.0.8 でも感染している。以上から PC101,PC133,PC277,PC301,PC321,PC340 の 6 台になり,本文の“6 台の PC”とも一致する。

間違えやすいのは,192.168.0.12 を 10:46:12 にリースされた J(PC204)としてしまうことである。16:51:42 に X に切り替わっているので,スキャンを開始した時刻の持ち主は PC101 である。また,22:5x のログは調査対象のスキャン(17:31 台まで)より後のものなので使わない。解答用紙の表2のホスト名を○印で囲む形で答える。

設問3(2)

感染した PC による通信を調べてみると,DHCP によって IP アドレスが変わったので,感染した複数の PC が同じ送信元 IP アドレスを使っている場合がある。感染した複数の PC によって使われた送信元 IP アドレスを解答群から全て選び,記号で答えよ。解答群 ア 192.168.0.4 イ 192.168.0.8 ウ 192.168.0.12 エ 192.168.0.21 オ 192.168.0.32 カ 192.168.0.44 キ 192.168.0.55 ク 192.168.0.112

解答例

  • イ,オ,カ
解説

本文の根拠

表1

10/28 17:31:22,192.168.0.44,10.100.130.1,1.100.2.45,445。10/28 17:31:23,192.168.0.32,10.100.130.1,1.100.1.37,445。10/28 17:31:25,192.168.0.12,10.100.130.1,1.50.2.30,445。10/28 17:31:25,192.168.0.8,10.100.130.1,1.100.1.201,445。

表2

10/28 22:57:58,192.168.0.44,T,PC277。

(1)で求めた感染 PC を,使っていた送信元 IP アドレスごとに整理する。192.168.0.8 は PC101 と PC301,192.168.0.32 は PC321 と PC340,192.168.0.44 は PC277 と PC133 の,それぞれ 2 台の感染 PC が使っている。192.168.0.12 は,感染が確認できるのは PC101 だけで,同じ IP アドレスを使った別の PC(J の PC204,K の PC104)は感染と判断していない。したがって答えはイ(192.168.0.8),オ(192.168.0.32),カ(192.168.0.44)である。

192.168.0.12 の PC101 は 192.168.0.8 とも重なるが,この設問は“同じ IP アドレスを複数の感染 PC が使っている”アドレスを問うているので,ウは選べない。ア(192.168.0.4),エ(192.168.0.21),キ(192.168.0.55),ク(192.168.0.112)は,表1のスキャンのログに現れないので感染 PC の送信元ではない。

解答群から全て選ぶ形式なので,(1)の結果を IP アドレスごとの表にしてから選ぶと漏れにくい。

設問4(1) 解答欄2つ

本文中の下線③について,チェックすべき内容を二つ挙げ,それぞれ 30 字以内で述べよ。

〔①〕解答例

  • セキュリティ修正プログラムが適用されていること
  • マルウェア定義ファイルが更新されていること
  • PCがマルウェアに感染していないこと

〔②〕解答例

  • セキュリティ修正プログラムが適用されていること
  • マルウェア定義ファイルが更新されていること
  • PCがマルウェアに感染していないこと

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

解説

本文の根拠

〔セキュリティインシデントの再発防止策〕

この PC は,社外に持ち出して公衆無線 LAN に接続した際,セキュリティ修正プログラムが未適用で,かつ,マルウェア対策ソフトのマルウェア定義ファイルが更新されていない状態だったので,ワーム V に感染したと考えられた。

〔セキュリティインシデントの再発防止策〕

③PC を持ち帰った際に接続可否を判断するためにチェックを行う

感染の原因は,社外に持ち出した PC が,セキュリティ修正プログラム未適用で,マルウェア定義ファイルも更新されていない状態で公衆無線 LAN に接続したことである。再発防止策では,持ち帰った PC を G 社の無線 LAN に接続してよいかを,同じ観点で確かめる。チェックする内容は,セキュリティ修正プログラムが適用されていること,マルウェア定義ファイルが更新されていること,そして社外で既にマルウェアに感染していないこと(解答例はこの 3 つのうち異なる 2 つ)である。

本文の感染要因に沿った 2 つ(修正プログラムの適用,定義ファイルの更新)に,“感染していないこと”を加えた 3 つから 2 つを書けばよい。“社外に持ち出した際の情報漏えい対策”は既に実施済みなので,ここでは持ち帰った PC を接続させる条件を答える。

30 字以内なので,“セキュリティ修正プログラムが適用されていること”(23 字),“マルウェア定義ファイルが更新されていること”(21 字),“PCがマルウェアに感染していないこと”(18 字)のように,チェックの対象と状態を短く書く。

設問4(2) 25字以内

本文中の下線④を実現するために行う設定を 25 字以内で述べよ。

解答例

  • VLANを使い,PC間の通信を禁止する。
解説

本文の根拠

〔セキュリティインシデントの再発防止策〕

有線 LAN では,④同じ L2SW に接続された PC 同士のワーム感染を防ぐ対策を実施することにした。

〔無線 LAN セグメントの調査〕

L3SW 及び L2SW は,VLAN をサポートしている機器であるが,G 社では VLAN の設定はしていない。

ワーム V は,感染した PC と同一セグメントの IP アドレス範囲にスキャンをかけて感染を広げる。同じ L2SW に接続された PC 同士は L3SW を介さず直接通信できるので,このスキャンと感染を止めるには,L2SW のレベルで PC 間の通信を分ける必要がある。本文は,L3SW・L2SW が VLAN をサポートしているが G 社では VLAN を設定していないと述べており,VLAN を設定して PC ごとに通信を分離し,PC 間の直接通信を禁止すればよい。

解答例は“VLANを使い,PC間の通信を禁止する。”である。採点講評は,L2SW に接続された PC 同士が直接通信するというワームの特性を踏まえ,VLAN によるセグメントの分離といったネットワーク層(レイヤ)での対策が立案できるようになることを期待するとしている。

25 字以内なので,“VLAN で PC ごとにセグメントを分離する”のように,手段(VLAN)と効果(PC 間の通信の分離・禁止)の 2 つを入れる。“ワームに感染した PC を隔離する”だけでは,感染前の予防にならない。解答例は 20 字である。

採点講評(IPA)

設問4(2)は,有線LANのL2SWに接続されたPC同士のワーム感染を防ぐ対策について問う問題であったが,正答率は低かった。L2SWに接続されたPC同士が直接通信を行うというワームの特性を踏まえて,VLANによるセグメントの分離といったネットワークのレイヤでの対策が立案できるようになることを期待したい。

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

問3 ソフトウェアの脆弱性対策

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

B 社は,従業員数 500 名の食品販売会社であり,インターネットを介して消費者向けに食品を通信販売している。

通信販売で使用するシステム(以下,通販システムという)の運用,保守は,B 社の K リーダを中心に,S 君ほか 3 名と協力会社の従業員 5 名の計 10 名で行っている。通販システムを含む B 社情報システムのサーバの概要を表1に,構成を図1に示す。

列はサーバ名,概要。E サーバ:・通販システムの購入受付処理を行う Web サーバである。また,通販システムのバッチ処理として購入集計処理も行っている。待機サーバ:・E サーバの購入受付処理が停止するなど通販システムの利用者にサービスが提供できなくなった場合に,サービス停止を告知するための Web サーバである。コールドスタンバイしており,E サーバがサービス提供できなくなった場合に E サーバの代わりにレイヤ 2 スイッチ(以下,L2SW という)に接続される。ログ管理サーバ:・B 社情報システム中の全ファイアウォール(以下,ファイアウォールを FW という)及び全サーバのログを syslog で受信し保存する。・FW1 及び FW2 のログには,通信の通過や遮断に関する記録がある。・各サーバのログには,OS 上で実行される SSH などのコマンド履歴,アプリケーションやミドルウェアのイベント記録がある。・Web サーバ及びプロキシサーバのログには,送信元及び宛先の IP アドレス,HTTP リクエストの内容,データ転送量などが含まれている。・ログ保全機能があり,それによって,保存したログが改ざんされていないことを証明できる。
表1 B 社情報システムのサーバの概要(抜粋)
凡例:L3SW:レイヤ 3 スイッチ,DB サーバ:データベースサーバ。インターネットにルータが接続し,ルータに FW1 が接続する。FW1 の下に L3SW がある。FW1 は DMZ 内の L2SW に接続する。DMZ の L2SW には NTP サーバ,外部メールサーバ,プロキシサーバ,外部 DNS サーバが接続し,E サーバも接続する。待機サーバは L2SW に破線で接続されている(コールドスタンバイ)。E サーバは FW2 を介して DB サーバに接続する。L3SW の下にサーバセグメントと PC セグメントがある。サーバセグメントの L2SW には内部メールサーバ,ログ管理サーバ,内部 DNS サーバが接続する。PC セグメントの L2SW には PC が接続する。注記:各機器からログ管理サーバへのログの送信は管理ネットワークを使って行われる。管理ネットワークの記載は省略している。
図1 B 社情報システムの構成

通販システムは,E サーバ,待機サーバ,FW2 及び DB サーバから構成される。E サーバの購入受付処理は,インターネットから HTTP over TLS(以下,HTTPS という)でアクセスされる。購入集計処理は,バッチプログラムで実行される。毎日午前 2 時開始の日次,毎週土曜日の午前 3 時開始の週次,毎月 1 日午前 4 時開始の月次のバッチプログラムがあり,それぞれ 1 時間以内で処理が完了する。

ログ管理サーバに保存されたログからイベントの発生順序を正しく追跡できるように,①ログに書かれる各 FW 及び各サーバの時刻を整合させている。

FW1 はステートフルパケットインスペクション型で,インターネットと通販システム間の通信は,インターネットから E サーバ及び待機サーバへの HTTPS アクセスとその応答が許可されている。そのほかのインターネットと DMZ 内のサーバ間の通信は,各サーバのサービスに必要なものだけ許可している。

プロキシサーバが中継するのは PC セグメントからインターネットへの通信だけである。

〔脆弱性情報の公開と対応〕

ある日,S 君は,アプリケーションフレームワーク(以下,AF という)のうち,E サーバで使用しているもの(以下,E-AF という)の脆弱性(以下,脆弱性 T という)の情報が,前日に公開されていることを発見し,K リーダに報告した。脆弱性 T の情報を図2に示す。

枠の中に次の文章。・悪用されるとリモートから任意の OS コマンドを実行されるおそれがある。具体的には,リモートから HTTP リクエストの Content-Type ヘッダフィールドに攻撃コードが挿入されることによって任意の OS コマンドを実行される。・既に攻撃コードやリモート操作用のツールが流通しており,[ a ] 1)による深刻度が高い。枠の下の注記:注 1)[ a ] は,基本評価基準,現状評価基準,環境評価基準の三つの基準で脆弱性の深刻さを評価するシステムである。
図2 脆弱性 T の情報(概要)

脆弱性 T の情報が公開されると同時に,E-AF の脆弱性修正プログラム(以下,パッチという)が公開されていたが,K リーダは,パッチを適用するには,通販システムの動作に影響がないことの確認が必要な上,もし何らかの影響がある場合,通販システムを修正するなど時間が掛かることになり,営業上大きな機会損失となることを懸念した。K リーダは,パッチを適用するために通販システムを直ちに停止させるよりも,当面は稼働を継続させつつ,半月後の定期メンテナンス作業時に,影響の確認と必要な修正をできるだけ短時間に実施する方が望ましいと考えた。

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

脆弱性 T の情報を S 君が発見してから 2 日後,E サーバの日次バッチ処理が異常終了するという事象が発生した。S 君が確認したところ,日次バッチプログラムの内容が,見覚えのないスクリプト(以下,スクリプト U という)に書き換えられていた。スクリプト U は,B 社と関係のないサイト Z からプログラムをダウンロードして起動したり,コマンド履歴を参照したりするなどの内容であった。

S 君は,スクリプト U を外部記憶媒体に証拠保全した後,日次バッチプログラムをリカバリした。リカバリ後,日次バッチプログラムを実行し,正常に処理されたことを確認した。さらに,E サーバのほかのバッチプログラムを調査して,改ざんされていないことを確認し,K リーダに状況を報告した。

K リーダは,顧客データが大量に漏えいするなどの重大なセキュリティインシデント(以下,セキュリティインシデントをインシデントという)の可能性もあると考え,専門家による調査を緊急に行うことを経営陣に提案した。K リーダは経営陣の承認を得て,②被害拡大を防止するために必要な措置を S 君に指示するとともに,セキュリティ専門会社にインシデントの調査を依頼した。

〔インシデントの調査〕

依頼を受けたセキュリティ専門会社は,インシデントを調査し,3 日後に調査結果を B 社に報告した。セキュリティ専門会社による調査結果を図3に示す。

枠の中に次の文章。調査によって,次が判明した。(1) 脆弱性 T を悪用した攻撃の痕跡が見つかった。(2) スクリプト U は,次の二つを並列で実行するものであったことから,今回の攻撃の主たる目的は,仮想通貨採掘用プログラム(以下,AP1 という)を実行することであったと考えられる。a) AP1,及び AP1 を動作させるのに必要な複数のライブラリをサイト Z から HTTP を使ってダウンロードし,AP1 を実行する。b) コマンド履歴から,SSH コマンドの接続先 IP アドレスを全て抽出する。IP アドレスが抽出された場合は,IP アドレスで示される各機器に対し,SSH コマンドで接続を試行し,成功するとその機器上でスクリプト U を実行する。IP アドレスが抽出されなかった場合は,何もしない。(3) FW1 のログを調査した結果,上記(2)a)でのダウンロードは,FW1 でブロックされていた。また,B 社情報システムのどの機器にも AP1 は見つからなかった。(4) E サーバのコマンド履歴には,SSH コマンドの接続先 IP アドレスが含まれておらず,スクリプト U によるほかの機器への接続はなかったと考えられる。(この文に下線③が付いている)このことを確認するために,ほかの機器へのアクセス記録を調査したところ不審なものはなかった。(5) 顧客データが大量に漏えいした可能性は低い。
図3 セキュリティ専門会社による調査結果(抜粋)

重大な被害は認められなかったものの,脆弱性 T が悪用されて改ざんが行われていたことが明らかになったことから,パッチを適用することにした。パッチを適用し,サービスを再稼働できたのは,インシデント発生から 10 日後だった。

〔リスク軽減策の検討〕

セキュリティ専門会社からは,脆弱性情報が公開されると,その後間もなく攻撃が急増することが多いことから,脆弱性情報が公開された際に迅速に対応できるようにあらかじめ対応を検討しておくべきであるとアドバイスを受けた。そこで,今回のインシデントも踏まえて,K リーダと S 君は AF などを利用しているシステムの脆弱性が公開された際の対応について検討した。次は,このときの S 君と K リーダの会話である。

調査の後,B 社では,WAF を選定し,導入した。以降,攻撃を数多く受けたが,WAF が遮断し,E サーバへの侵入は起きていない。

出題趣旨(IPA)

インターネット公開サイトにおいて,OSやミドルウェアの脆弱性を突いた攻撃が頻発しており,情報漏えいなど,甚大な被害を受ける例が後を絶たない。それに対して,セキュリティ担当者は,業務継続を意識した対策を見出すことが求められている。本問では,アプリケーションフレームワークについてのインシデント対応とWAFの導入を題材に脆弱性を悪用する攻撃に対する対応と,与えられた条件下でセキュリティ上の課題を特定し改善する能力を問う。

採点講評(問全体・IPA)

問3では,ソフトウェアの脆弱性対策について出題した。全体として,正答率は高かった。

設問と解答例

設問1 15字以内

本文中の下線①を実現するための手段を 15 字以内で述べよ。

解答例

  • NTPによる時刻同期
解説

本文の根拠

本文

ログ管理サーバに保存されたログからイベントの発生順序を正しく追跡できるように,①ログに書かれる各 FW 及び各サーバの時刻を整合させている。

図1

DMZ の L2SW には NTP サーバ,外部メールサーバ,プロキシサーバ,外部 DNS サーバが接続し

ログからイベントの順序を追跡するには,FW と各サーバの時計が合っていなければならない。機器ごとの時計はずれていくので,時刻を同期する手段として一般に使われる NTP(ネットワークタイムプロトコル)で,各機器を時刻の基準となるサーバに合わせる。図1の DMZ にも NTP サーバがあり,これが本文の“時刻を整合させている”手段である。

解答例は“NTPによる時刻同期”である。ログ保全機能(表1の“保存したログが改ざんされていないことを証明できる”)はログの改ざん検知で,時刻の整合とは別の話なので,この設問の答えにはならない。

15 字以内なので,“NTP で時刻を同期する”のように,手段(NTP)と“時刻の同期”の 2 つを書く。解答例は 10 字である。

設問2 解答欄1つ

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

〔a〕解答例

  • CVSS
解説

本文の根拠

図2の注

注 1)a は,基本評価基準,現状評価基準,環境評価基準の三つの基準で脆弱性の深刻さを評価するシステムである。

図2

既に攻撃コードやリモート操作用のツールが流通しており,a 1)による深刻度が高い。

基本評価基準・現状評価基準・環境評価基準の三つの基準で脆弱性の深刻さを評価する仕組みは,共通脆弱性評価システム CVSS(Common Vulnerability Scoring System)である。基本評価基準は脆弱性そのものの特性,現状評価基準は攻撃コードの流通など時間とともに変わる状況,環境評価基準は利用者の環境に応じた評価を表す。図2の“既に攻撃コードやリモート操作用のツールが流通している”は,現状評価基準に当たる状況である。

英字 4 字の指定なので,答えは CVSS である。類似の略語(CVE は脆弱性の識別番号,CWE は脆弱性の種類の分類)と取り違えない。採点講評は,基礎的な知識であり正確に覚えてほしいが,正答率は低かったとしている。

字数制限のない穴埋めだが,英字 4 字という指定と,本文の“三つの基準で評価する”という説明の両方を満たすかを確かめる。

採点講評(IPA)

設問2は,基本評価基準,現状評価基準,環境評価基準の三つの基準で脆弱性の深刻さを評価するCVSSの名称を問う問題であったが,正答率は低かった。基礎的な知識であり,正確に覚えてほしい。

設問3 30字以内

本文中の下線②について,K リーダが S 君に指示した措置を,30 字以内で述べよ。

解答例

  • Eサーバをネットワークから切り離して,待機サーバを公開する。
解説

本文の根拠

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

K リーダは経営陣の承認を得て,②被害拡大を防止するために必要な措置を S 君に指示するとともに,セキュリティ専門会社にインシデントの調査を依頼した。

表1

待機サーバ:・E サーバの購入受付処理が停止するなど通販システムの利用者にサービスが提供できなくなった場合に,サービス停止を告知するための Web サーバである。コールドスタンバイしており,E サーバがサービス提供できなくなった場合に E サーバの代わりにレイヤ 2 スイッチ(以下,L2SW という)に接続される。

インシデントの原因は,E サーバで脆弱性 T が悪用され,日次バッチプログラムがスクリプト U に書き換えられたことで,パッチはまだ適用されていない。調査を依頼している間も E サーバをネットワークにつないだままにすると,攻撃が続いて被害が拡大するおそれがある。そこで,E サーバをネットワークから切り離す。ただし通販システムの利用者へのサービス提供ができなくなるので,表1の待機サーバに差し替えて,サービス停止を告知する。待機サーバはコールドスタンバイで,E サーバが提供できなくなったときに E サーバの代わりに L2SW に接続される構成である。

解答例は“Eサーバをネットワークから切り離して,待機サーバを公開する。”である。“パッチを適用する”ことは,調査で痕跡を残す必要があり,時間も掛かる(本文では適用に 7 日掛かった)ので,この時点の“被害拡大を防止するための措置”ではない。

30 字以内なので,“E サーバを切り離し,待機サーバに切り替える”のように,切り離す対象(E サーバ)と,待機サーバへの切替えの 2 点を残す。解答例は 30 字ちょうどである。採点講評は,この設問の正答率は高かったとしている。

採点講評(IPA)

設問3は,セキュリティインシデント発生後の被害拡大防止のために必要な措置を問う問題であったが,正答率は高かった。

設問4 解答欄2つ

図3中の下線③について,コマンド履歴に SSH コマンドの接続先 IP アドレスが含まれていた場合,スクリプト U の内容を考慮すると更に調査が必要となる。仮に接続先 IP アドレスとして外部メールサーバが履歴に含まれていた場合,どの機器のログで,何を調査すべきか。調査すべき機器の名称を図1中から選び答えよ。また,調査すべき内容を 30 字以内で,具体的に述べよ。

〔調査すべき機器〕解答例

  • 外部メールサーバ
  • ログ管理サーバ
  • Eサーバ
  • FW1

〔調査すべき内容〕解答例

  • 外部メールサーバからサイトZへの接続の有無を確認する。
  • 外部メールサーバへのSSHコマンドの接続の有無を確認する。
  • サイトZとHTTPを使用した通信を確認する。

〔備考〕①,②又は③の組合せとする(①機器:外部メールサーバ又はログ管理サーバ,内容:外部メールサーバからサイトZへの接続の有無を確認する。②機器:Eサーバ又はログ管理サーバ,内容:外部メールサーバへのSSHコマンドの接続の有無を確認する。③機器:FW1又はログ管理サーバ,内容:サイトZとHTTPを使用した通信を確認する。)

解説

本文の根拠

図3

b) コマンド履歴から,SSH コマンドの接続先 IP アドレスを全て抽出する。IP アドレスが抽出された場合は,IP アドレスで示される各機器に対し,SSH コマンドで接続を試行し,成功するとその機器上でスクリプト U を実行する。

図3

a) AP1,及び AP1 を動作させるのに必要な複数のライブラリをサイト Z から HTTP を使ってダウンロードし,AP1 を実行する。

表1

FW1 及び FW2 のログには,通信の通過や遮断に関する記録がある。

表1

各サーバのログには,OS 上で実行される SSH などのコマンド履歴,アプリケーションやミドルウェアのイベント記録がある。

スクリプト U は,(a)でサイト Z から AP1 などを HTTP でダウンロードして実行し,(b)でコマンド履歴にある接続先へ SSH で接続できればその機器上でスクリプト U を実行する。E サーバのコマンド履歴に外部メールサーバが含まれていた場合は,E サーバから外部メールサーバへ SSH 接続され,外部メールサーバ上でスクリプト U が動いた可能性がある。感染が拡散したかを調べるには,このスクリプト U の動作の痕跡を調べる。

痕跡の調べ方は 3 通りあり(解答例は①,②又は③の組合せ)。①外部メールサーバ(又はログ管理サーバ)のログで,外部メールサーバからサイト Z への接続の有無を確認する。外部メールサーバ上でスクリプト U が動けば(a)のダウンロードを試みるからである。②E サーバ(又はログ管理サーバ)のログで,外部メールサーバへの SSH コマンドの接続の有無を確認する。③FW1(又はログ管理サーバ)のログで,サイト Z との HTTP の通信を確認する。FW1 のログには通信の通過や遮断の記録があり,ログ管理サーバは全 FW・全サーバのログを保存している。機器の名称と調査内容は,同じ番号どうしの組合せで答える。

30 字以内なので,“対象の機器(外部メールサーバ,サイト Z,E サーバ)”と“確認する行為(接続の有無,通信の有無)”の 2 つを入れる。解答例は 27 字,29 字,22 字である。採点講評は,攻撃内容とかけ離れた解答も散見されたとしており,図3(2)のスクリプト U の動作から何を調べるべきかを読み取って書く。

採点講評(IPA)

設問4は,攻撃が拡散したかを調査する方法を問う問題であったが,正答率は高かった。ただし,攻撃内容とかけ離れた解答も散見された。攻撃内容から,何を調査すべきかをよく見極めて解答してほしい。

設問5(1) 解答欄1つ

本文中の b に入れる適切な字句を 5 字以内で答えよ。

〔b〕解答例

  • 攻撃
解説

本文の根拠

会話

S 君:影響があるので,導入時には遮断はせずにアラートを通知するだけのモニタリングモードを用いて検証します。

会話

もし,b であった場合は,場合によっては E サーバの停止が必要となります。また,b ではなかった場合は,WAF のシグネチャの見直しが必要となります。

モニタリングモードは遮断せずにアラートを通知するだけなので,アラートが出た通信が本当に攻撃かどうかを確認する必要がある。攻撃であれば,既にその通信が E サーバに届いて被害が出ている(又は出るおそれがある)ので,場合によっては E サーバの停止が必要になる。攻撃ではなかった場合は,WAF が正常な通信を誤検知したことなので,シグネチャの見直しが必要になる。したがって b は“攻撃”である。

解答例も“攻撃”である。字数は 5 字以内なので,“攻撃”(2 字)で足りる。“不正アクセス”(6 字)は字数を超え,“侵入”では,シグネチャの誤検知(攻撃ではなかった場合)との対比が弱い。

5 字以内という指定から,会話の前後(“であった場合”と“ではなかった場合”)が対になる語を探す。採点講評は,設問5 のうち(3)の正答率が低かったとしているので,(1)は比較的取り組みやすい設問である。

設問5(2) 30字以内

B 社で,ハードウェア型 WAF を導入する場合,通販システム利用者の通信プロトコルを考慮すると本文中の下線④の機能が必要である。その機能を 30 字以内で具体的に述べよ。

解答例

  • インターネットからのHTTPS通信を復号する機能
解説

本文の根拠

〔通販システムの説明〕

E サーバの購入受付処理は,インターネットから HTTP over TLS(以下,HTTPS という)でアクセスされる。

会話

ハードウェア型 WAF の場合は,図1中の DMZ 内の L2SW と E サーバとの間に設置します。

会話

さらに,④暗号通信に関する機能が用意されているものがあります。

WAF は HTTP リクエストの中身(図2の脆弱性 T なら Content-Type ヘッダフィールド)を調べて攻撃を判定する。E サーバの購入受付は HTTPS でアクセスされ,通信は TLS で暗号化されている。ソフトウェア型 WAF は E サーバ上で動作して,TLS が終端した後の平文の HTTP を扱えるが,ハードウェア型 WAF は DMZ の L2SW と E サーバの間に置くので,暗号化された通信のままでは中身を調べられない。そこでハードウェア型 WAF には,HTTPS 通信を復号して検査する機能(暗号通信に関する機能)が必要になる。

解答例は“インターネットからのHTTPS通信を復号する機能”である。HTTPS を復号するには,E サーバのサーバ証明書と秘密鍵を WAF に登録するなどの設定が要るが,設問は“機能”を問うており,設定の手順までは書かなくてよい。

30 字以内なので,“HTTPS(暗号化された通信)を復号して検査する機能”のように,“通信プロトコル(HTTPS)”と“復号”の 2 つを入れる。解答例は 24 字である。

設問5(3) 解答欄2つ

本文中の c に入れる適切なサーバ名を図1中から選び答えよ。また,本文中の d に入れる適切なレコードの名称を答えよ。

〔c〕解答例

  • 外部DNSサーバ

〔d〕解答例

  • CNAME
解説

本文の根拠

会話

例えば,図1中の c の設定を変更して,E サーバへのアクセス経路をクラウド型 WAF 経由に変える必要があります。

会話

クラウド型 WAF の IP アドレスが変更された場合でも c の設定に影響が出ないように,d レコードを定義して,そのレコードに E サーバの別名としてクラウド型 WAF サービスの事業者が指定する FQDN を記述することが推奨されています。

図1

DMZ の L2SW には NTP サーバ,外部メールサーバ,プロキシサーバ,外部 DNS サーバが接続し

クラウド型 WAF は,利用者のアクセスを一度 WAF が受けて検査してから E サーバへ転送する構成なので,E サーバの FQDN の名前解決の結果を,E サーバの IP アドレスからクラウド型 WAF 側へ変える必要がある。インターネットから E サーバ名を引く問合せに答えるのは,図1の DMZ にある外部 DNS サーバである。したがって c は外部 DNS サーバで,その設定を変更して,アクセス経路をクラウド型 WAF 経由にする。

d は,E サーバの別名としてクラウド型 WAF サービスの事業者が指定する FQDN を記述するレコードで,別名を定義する CNAME レコードである。A レコードのように IP アドレスを直接書くと,クラウド型 WAF の IP アドレスが変わったときに外部 DNS サーバの設定を直す必要が生じるが,CNAME なら事業者の指定する FQDN を指しているだけなので,IP アドレスの変更の影響を受けない。

内部 DNS サーバ(サーバセグメント)は社内向けの名前解決を行うので,インターネットからのアクセス経路は変えられない。d で MX や NS を選ぶ誤りも,“別名”という説明から除ける。採点講評も,クラウド型 WAF を使う上での留意点をよく理解してほしかったとしている。

採点講評(IPA)

設問5は,WAFに関する対策を問う問題であったが,(3)は正答率が低かった。クラウド型WAFサービスを使用する上での留意点をよく理解してほしかった。WAFの理解を手助けする資料として,IPAが“Web Application Firewall読本”を公開しているので,学習の参考にしてほしい。

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