‹ ぱすてく

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

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

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

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

この年度を解いてみる

問1 Web アプリケーション

Web アプリケーションに関する次の記述を読んで,設問1~3に答えよ。

B 社は,従業員数 50 名のインターネットサービス企業であり,インターネット上で各種の情報サービスを提供している。これらのサービスの実現に当たり,必要なアプリケーションを自社開発してきた。このたび B 社では,画像ファイルを対象としたオンライン共有ストレージサービス(以下,S サービスという)を立ち上げることにし,R 部長を責任者としてアプリケーション開発に着手した。S サービスの画面には広告主のサイトへのリンクを含んだバナー広告を掲載し,利用者からの利用料収入に加えて広告料収入の獲得も目指す。

〔S サービスの要件定義〕

B 社では,P 主任を中心として S サービスの要件を検討した。検討の結果,P 主任は S サービスの要件案を図1に示すとおりまとめた。

S サービスの要件案。(1) クライアント側は Web ブラウザだけとし,専用アプリケーションは使用しない。プロトコルは,HTTP と HTTP over TLS(以下,HTTPS という)のどちらも使用できる。(2) 利用者は,S サービスの利用に先立ち,英字 4 文字に数字 4 文字を付加した全 8 文字の利用者 ID の割当てを受ける。利用者種別は,契約者と閲覧者の 2 種類とする。(3) 契約者になるためには利用料を支払う必要がある。閲覧者になるための料金は不要である。(4) 利用者が S サービスにアクセスする際は,最初に利用者 ID とパスワードによる認証が行われる。(5) 契約者は,共有フォルダを作成でき,書込・削除・読取権限をもつ。さらに,任意の閲覧者に対して,その共有フォルダへの読取権限を付与することができる。(6) 契約者が保存できる画像ファイルのサイズの合計は,契約条件で定める最大値を超えないように制限される。(7) 画像ファイルのアップロード時には,画像ファイルに,注釈文を添付することができる。(8) 利用者は,読取権限をもつ共有フォルダ内の画像ファイルを,小さな画像として一覧表示(以下,サムネイル表示という)でき,必要に応じてオリジナルの画像ファイルをダウンロードできる。(以下,省略)
図1 S サービスの要件案

この要件案は,レビューされた後,R 部長によって承認された。

〔システム・ソフトウェア要件定義〕

その後,Q 主任を中心としてシステム・ソフトウェア要件定義を実施した。その結果,S サービスは Java サーブレットを利用した Web アプリケーションで構成することにした。画像処理プログラムについては C++で記述し,プログラム内では C ベースの画像処理ライブラリである V-lib を利用することにした。Java から C++プログラムを呼び出す際には,JNI(Java Native Interface)を利用することにした。

〔ソフトウェアの基本設計〕

システム・ソフトウェア要件定義が完了し,ソフトウェアの基本設計を開始した。その中で,V 君は Web アプリケーションのセッション管理の方式について検討した。次は,検討に際しての Q 主任と V 君との会話である。

更に基本設計が進む中で,実行形式ファイルがアップロードされるとウイルスの温床になりかねないという指摘があった。議論した結果,この指摘への対策の一つとして,アップロードするファイルの拡張子を画像ファイルのものに制限することとした。制限する方式として,V 君は,Web ブラウザにおいてスクリプトによって判定することを考えた。この方式を実装したスクリプトを含む HTML ファイル例を図2に示す。この方式案について相談を受けた Q 主任は,②契約者の操作によっては,拡張子が画像ファイルのものでないファイルがアップロードできてしまうという問題点を指摘し,制限する方式には③スクリプトによらない方式を検討するよう指示した。V 君はその後,異なる方式を提案し,採用に至った。

HTML ファイルの例(抜粋)。<form action="/sservice/UploadFile" method="POST" id="form_upload" enctype="multipart/form-data"> の中に <input type="file" name="upload" size="128"> と <input type="submit" name="button_submit" value="送信"> があり,</form> で閉じる。続けて <script type="text/javascript"> の中で,var input = document.getElementById("form_upload"); input.onsubmit = function () { (省略)/* アップロードするファイルの拡張子を調べて,画像ファイルかどうか判定し,画像でないファイルの送信を停止する。*/ } を実行し,</script> で閉じる(スクリプトは HTML コメント <!-- と // --> で囲まれている)。
図2 HTML ファイル例(抜粋)

〔画像処理プログラムでの不具合〕

基本設計及び詳細設計が無事完了し,U 主任を中心としたグループでプログラムの作成を開始した。U 主任は,サムネイル表示の際に使用するために,様々なファイル形式の画像ファイルを縦横とも 128 ピクセルに変換する画像処理プログラム(以下,ピクセル数変換プログラムという)の作成を T 君に指示した。T 君は,最初に,複数のファイル形式の中からファイル形式 Z を選択して,ピクセル数変換プログラムの作成に取り掛かった。

このプログラムで取り扱う,ファイル形式 Z を図3に示す。ピクセル数変換そのものには,V-lib 内の vlibResize 関数を使用することにした。V-lib 内で定義され,vlibResize 関数の引数として使用する vlibMat 構造体の説明を図4に示す。また,vlibResize 関数の外部仕様を図5に示す。

ファイル形式 Z の構成。ヘッダ部は,ファイル形式識別子 2 バイト(固定文字列),ファイル形式バージョン番号 2 バイト(整数),列数 2 バイト(整数),行数 2 バイト(整数),各ピクセルのバイト数 2 バイト(整数)の順。その後にピクセルデータ(1 行目のピクセルデータが RGB の順に並び,続いて 2 行目以降のピクセルデータが並ぶ。行と行の間には区切り記号はない。)が続く。注記 整数はいずれも符号なしとする。
図3 ファイル形式 Z
vlibMat 構造体の定義。typedef struct { char* data; /* ピクセルデータへのポインタ,各ピクセルのサイズは 3 バイト(RGB)とする */ int cols; /* 画像の列数 */ int rows; /* 画像の行数 */ } vlibMat; data が指す領域は,1 行目のピクセルデータが RGB の順に並び,続いて 2 行目以降のピクセルデータが並ぶ。なお,各行の先頭を 256 バイト境界に配置するために,必要に応じてパディングをする。data 領域のパディング例:1 行当たり 128 ピクセル,384 バイトの場合。1 行目データは 512 バイトで,その内訳はピクセルデータ 384 バイト(R G B の繰返し)とパディング 128 バイト(128 バイト空き領域)であり,その後ろに 2 行目データが続く。
図4 vlibMat 構造体の説明
int vlibResize(const vlibMat* src, vlibMat* dst) 機能:src を基に,縦横ピクセル数を変換して dst に書き込む。引数:src:入力画像,dst:出力画像(変換後の横ピクセル数を dst->cols に,変換後の縦ピクセル数を dst->rows にセットして,dst->data が指す領域は,書込み可能領域として確保してから呼び出す。)返却値:正常に完了すれば 0,正常に完了しなかった場合は-1 とする。
図5 vlibResize 関数の外部仕様

T 君は,図6のピクセル数変換プログラムを作成し,U 主任によるソースコードレビューを受けた。そのソースコードレビューで,U 主任は,入力する画像ファイルの内容によっては 38 行目において a が発生し,その結果として 50 行目において b が発生することを指摘した。

なお,この処理系において,int 型は 4 バイト,short int 型は 2 バイト,char 型は 1 バイトである。また,char 型は特に記述がなければ符号なしである。

C++ のプログラム(行番号付き,1〜46 行目)。1: #include <cstdlib>,2: #include <iostream>,3: #include <exception>,4: #include "vlib.h" /* 画像処理ライブラリ V-lib 用ヘッダファイル */,5: (省略)/* その他,必要なヘッダファイルを読み込む。 */,6: using namespace std;,7: (空行),8: const int kIndexCols = 128; /* サムネイル表示用列数 */,9: const int kIndexRows = 128; /* サムネイル表示用行数 */,10: const int kMaxMatData = 104857600; /* 100M バイト */,11: const int kMaxInteger = 0x7fffffff;,12: const int kColors = 3;,13: (空行),14: typedef struct {,15: char ident0, ident1;,16: unsigned short int f_version, cols, rows, colors;,17: } zHeader; /* ファイル形式 Z のヘッダ部 */,18: (空行),19: int resize_fileZ(FILE *fp, vlibMat* matBuf) throw(std::out_of_range, std::bad_alloc),20: {,21: /* fp はファイル形式 Z の画像ファイルへのファイルポインタ */,22: /* matBuf はピクセル数変換後の画像を保存する構造体へのポインタ */,23: /* matBuf->data が指す領域はこの関数内で確保し,呼出し側で解放する。 */,24: int bytesOfRow, bytesOfBuff;,25: zHeader fhBuf;,26: char * pixBuf;,27: vlibMat inBuf;,28: (空行),29: fseek(fp, 0L, SEEK_SET); /* ファイル読込位置をファイルの先頭に移動 */,30: /* ファイル fp から,zHeader のバイト数だけデータを読み込み,fhBuf に書き込む。 */,31: /* 読込の結果,ファイル読込位置は読込バイト数だけ移動する。 */,32: fread(&fhBuf, sizeof(zHeader), 1, fp);,33: (省略)/* ファイル形式識別子とファイル形式バージョン番号をチェックする。 */,34: if (fhBuf.colors != kColors) throw out_of_range("Illegal header");,35: if (fhBuf.cols == 0 || fhBuf.rows == 0) throw out_of_range("Illegal header");,36: bytesOfRow = fhBuf.cols * fhBuf.colors;,37: bytesOfRow += 255 - ((bytesOfRow + 255) % 256); /* 256 バイト境界に調整 */,38: bytesOfBuff = bytesOfRow * fhBuf.rows;,39: if (bytesOfBuff > kMaxMatData) throw out_of_range("Image too large");,40: (空行),41: pixBuf = (char *)malloc(bytesOfBuff);,42: if (pixBuf == NULL) throw bad_alloc();,43: inBuf.data = pixBuf;,44: inBuf.cols = fhBuf.cols;,45: inBuf.rows = fhBuf.rows;,46: (空行)
図6 ピクセル数変換プログラム
C++ のプログラム(行番号付き,47〜67 行目)。47: for (int i = 0; i < fhBuf.rows; i ++) {,48: /* ファイル fp から,(fhBuf.cols * kColors) バイトだけデータを読み込み,*/,49: /* pixBuf に書き込む。ファイル読込位置は読込バイト数だけ移動する。 */,50: fread(pixBuf, kColors, fhBuf.cols, fp);,51: pixBuf += fhBuf.cols * kColors;,52: pixBuf += 255 - ((fhBuf.cols * kColors + 255) % 256); /* 256 バイト境界に調整 */,53: },54: matBuf->data = (char *)malloc(((kIndexCols * kColors + 255) / 256) * 256 * kIndexRows);,55: if (matBuf->data == NULL) {,56: free(inBuf.data);,57: throw bad_alloc();,58: },59: matBuf->cols = kIndexCols;,60: matBuf->rows = kIndexRows;,61: if (vlibResize(&inBuf, matBuf) == -1) {,62: free(inBuf.data);,63: throw bad_alloc();,64: },65: free(inBuf.data);,66: return 0;,67: }
図6 ピクセル数変換プログラム(続き)

T 君はこの指摘を受けて,図6の 37 行と 38 行の間に図7に示す行を追加し,再度 U 主任のソースコードレビューを受けた。ソースコードレビューの結果,指摘された問題点が修正されていること,他の部分に同種の問題点が存在しないことが確認された。

if ( [ c ] < [ d ] ) throw out_of_range("Image too large");
図7 ピクセル数変換プログラムへの追加行

その後,全てのプログラムの作成とテストが完了して,B 社は S サービスの運用を開始することができた。

出題趣旨(IPA)

ソフトウェア開発での脆弱性対策では,特にプログラム作成プロセスにおいて,不用意なコーディングによって脆弱性を作り込んでしまう可能性が高く,細心の注意が必要である。そのため,脆弱性の作り込みを予防したり,脆弱性を発見したりするためには,ツールによる対処に加えて,プログラム作成者及びレビュアのセキュアプログラミングに関する知識と能力が重要なポイントとなっている。本問では,Webアプリケーションでのファイルアップロードを題材に,脆弱性についての知識及びソースコードレビュー(静的解析)によって脆弱性を発見する能力を問う。

採点講評(問全体・IPA)

問1では,プログラム作成プロセスでの脆弱性の排除について出題した。全体として正答率が低く,理解が不足しているようであった。

設問と解答例

設問1(1) 10字以内

本文中の下線①の HTTP ヘッダ内のフィールド名は何か。英字 10 字以内で答えよ。

解答例

  • Referer
解説

本文の根拠

〔ソフトウェアの基本設計〕

セッション管理には,ログオン時にランダム文字列をセッション ID として割り当てた上で,クエリパラメタの中にセッション ID を格納する方式を採用するつもりです。

〔ソフトウェアの基本設計〕

GET メソッドではなく POST メソッドを使用しておかないと,①HTTP ヘッダ内のフィールドが原因で,バナー広告に設定されたリンク先の Web サーバへセッション ID が漏えいする

V 君の方式は,セッション ID をクエリパラメタ,つまり URL の一部に入れる。URL にセッション ID が載ったページから広告主のサイトへのリンクをたどると,ブラウザは“どのページからたどってきたか”を HTTP ヘッダの Referer フィールドに入れて送る。この中にセッション ID を含む URL がそのまま入るので,リンク先の Web サーバにセッション ID が漏れる。RFC 9110 の 17.9 も,Referer がユーザの閲覧履歴を明かしうると注意している。

Q 主任が POST メソッドを勧めているのは,POST ならセッション ID が URL ではなくメッセージボディに入り,Referer に載らないからである。本文が“HTTP ヘッダ内のフィールド”と限定しているので,答えはヘッダのフィールド名になる。

英字 10 字以内の制限に対し,解答例は“Referer”の7字。綴りは Referer で,間違えやすいので書き取れるようにしておく。

採点講評(IPA)

設問1は,全体として正答率が高かった。Webアプリケーションにおけるクライアントサイドスクリプトの役割とセキュリティ上の限界については,脆弱性を排除するために確実に理解しておく必要がある。

設問1(2) 30字以内

本文中の下線②の契約者の操作とは何か。30 字以内で述べよ。

解答例

  • ブラウザの設定でスクリプトを無効化する。
解説

本文の根拠

図2

アップロードするファイルの拡張子を調べて,画像ファイルかどうか判定し,画像でないファイルの送信を停止する。

〔ソフトウェアの基本設計〕

制限する方式として,V 君は,Web ブラウザにおいてスクリプトによって判定することを考えた。

図2のスクリプトは,利用者の Web ブラウザの中で動き,拡張子を調べて画像でなければ送信を止める。つまり判定はブラウザの機能に頼っており,ブラウザを操作する契約者の側で止められる。契約者がブラウザの設定でスクリプトの実行を無効にすれば,この判定は動かず,画像でないファイルもそのまま送信できる。

どのファイルをアップロードできるかを決める役目が,利用者側のブラウザに置かれていることが問題点である。次の設問(3)の“スクリプトによらない方式”は,この問題点をなくすための対策になっている。

30字以内の制限。解答例は“ブラウザの設定でスクリプトを無効化する。”(20字)。“ブラウザの設定”と“スクリプトを無効化”の二つの要素を入れる。

採点講評(IPA)

設問1は,全体として正答率が高かった。Webアプリケーションにおけるクライアントサイドスクリプトの役割とセキュリティ上の限界については,脆弱性を排除するために確実に理解しておく必要がある。

設問1(3) 30字以内

本文中の下線③の方式とはどのようなものか。30 字以内で述べよ。

解答例

  • Webアプリケーションで拡張子判定を行う。
解説

本文の根拠

〔システム・ソフトウェア要件定義〕

S サービスは Java サーブレットを利用した Web アプリケーションで構成することにした。

図1

クライアント側は Web ブラウザだけとし,専用アプリケーションは使用しない。

下線②の問題は,拡張子の判定が利用者のブラウザで行われ,契約者が止められる点にあった。スクリプトによらない方式とは,判定をブラウザの外,つまりサーバ側に置く方式である。S サービスは Java サーブレットを使った Web アプリケーションで構成されるので,ファイルを受け取った Web アプリケーション側で拡張子を判定し,画像ファイルのものでなければ受け付けない。

要件案はクライアント側を Web ブラウザだけとし,専用アプリケーションを使わないと決めているため,クライアント側に別の判定の仕組みを足すという答えにはならず,サーバ側(Web アプリケーション)で行う,という方向になる。

30字以内の制限。解答例は“Webアプリケーションで拡張子判定を行う。”(21字)。判定する場所(Web アプリケーション)と判定の中身(拡張子判定)の二つを入れる。

採点講評(IPA)

設問1は,全体として正答率が高かった。Webアプリケーションにおけるクライアントサイドスクリプトの役割とセキュリティ上の限界については,脆弱性を排除するために確実に理解しておく必要がある。

設問2(1) 解答欄2つ

本文中の a,b に入れる適切な字句を,それぞれ 15 字以内で答えよ。

〔a〕解答例

  • 整数オーバフロー

〔b〕解答例

  • バッファオーバフロー
解説

本文の根拠

図6

16: unsigned short int f_version, cols, rows, colors;

図6

38: bytesOfBuff = bytesOfRow * fhBuf.rows;

図6

50: fread(pixBuf, kColors, fhBuf.cols, fp);

〔画像処理プログラムでの不具合〕

この処理系において,int 型は 4 バイト,short int 型は 2 バイト,char 型は 1 バイトである。

ヘッダ部の cols と rows は,2バイトの符号なし整数(unsigned short int)なので,それぞれ 65535 まで取れる。36〜37 行で bytesOfRow は,cols×3 を 256 の倍数に切り上げた値になり,最大で 196608 である。38 行はこれに rows を掛けて int 型(4バイト)の bytesOfBuff に入れるので,最大で 196608×65535=12,884,705,280 となり,int 型で表せる範囲(kMaxInteger=0x7fffffff=2,147,483,647 まで)を超える。この桁あふれが 38 行で起きる“整数オーバフロー”で,a が入る。

桁あふれして小さな値(又は負の値)になった bytesOfBuff は,39 行の“kMaxMatData より大きいか”の検査をすり抜け,41 行の malloc では小さな領域しか確保されない。ところが 47〜53 行のループは,rows 行ぶんの本来の大きさのデータを 50 行の fread で pixBuf へ書き込むので,確保した領域を超えて書き込まれる。これが“バッファオーバフロー”で,b が入る。

字数はどちらも 15 字以内。解答例は“整数オーバフロー”(8字)と“バッファオーバフロー”(10字)。a は“桁あふれ”といった意味の言い換えでなく,用語で書く。

採点講評(IPA)

設問2は,全体として正答率が低かった。

設問2(2) 60字以内

U 主任が指摘した a が発生する入力ファイルに関する条件を,kMaxInteger という字句を用いて 60 字以内で述べよ。

解答例

  • ヘッダ部の列数と各ピクセルのバイト数の積にパディングを加えたものと,行数の積がkMaxIntegerを超える。
解説

本文の根拠

図6

36: bytesOfRow = fhBuf.cols * fhBuf.colors;

図6

37: bytesOfRow += 255 - ((bytesOfRow + 255) % 256);

図6

38: bytesOfBuff = bytesOfRow * fhBuf.rows;

図6

11: const int kMaxInteger = 0x7fffffff;

整数オーバフローが起きるのは,38 行の掛け算 bytesOfRow × fhBuf.rows の結果が int 型の最大値 kMaxInteger を超えるときである。bytesOfRow は,36 行でヘッダ部の列数(cols)と各ピクセルのバイト数(colors)の積にし,37 行でその値を 256 バイト境界に合わせるパディングを加えたものである。したがって条件は“(列数×各ピクセルのバイト数+パディング)×行数が kMaxInteger を超える”となる。

図3のとおり,列数・行数・各ピクセルのバイト数は,どれも画像ファイルのヘッダ部に書かれた値で,ファイルの作り手が決められる。ファイルのサイズが小さくても,ヘッダ部の値が大きければこの条件を満たせる。“ファイルサイズが大きい”と答えると,実際のファイルの大きさとヘッダ部の値が一致しない,攻撃者が作った画像を考慮していないことになる。

60字以内の制限。解答例は“ヘッダ部の列数と各ピクセルのバイト数の積にパディングを加えたものと,行数の積がkMaxIntegerを超える。”(55字)。設問が kMaxInteger という字句を使うよう指定しているので,必ず入れる。

採点講評(IPA)

設問2は,全体として正答率が低かった。設問2(2)において,単にファイルサイズに着目した解答が多かったが,攻撃用にヘッダ部を改ざんするなどの特別な作り込みがされたファイルについても考慮することが必要である。

設問3 解答欄2つ

図7中の c,d に入れる適切な式又は変数を答えよ。なお,c,d のどちらか一方は,kMaxInteger を含むこと。

〔c〕解答例

  • kMaxInteger / fhBuf.rows
  • kMaxInteger / bytesOfRow

〔d〕解答例

  • bytesOfRow
  • fhBuf.rows

〔備考〕同じ群中の組合せとする(c が kMaxInteger / fhBuf.rows なら d は bytesOfRow,c が kMaxInteger / bytesOfRow なら d は fhBuf.rows)

解説

本文の根拠

図7

if ( c < d ) throw out_of_range("Image too large");

図6

11: const int kMaxInteger = 0x7fffffff;

図6

35: if (fhBuf.cols == 0 || fhBuf.rows == 0) throw out_of_range("Illegal header");

図6

38: bytesOfBuff = bytesOfRow * fhBuf.rows;

追加する行は,37 行(bytesOfRow が決まった後)と 38 行(掛け算)の間に置き,掛け算が kMaxInteger を超えるときに例外にする。“bytesOfRow * fhBuf.rows > kMaxInteger”と書くと,この比較の左辺の掛け算で,すでに整数オーバフローが起きてしまう。そこで,掛け算を割り算に直して,オーバフローの起きない式で比べる。図7は“c < d”の形で,どちらか一方に kMaxInteger を含む必要があるので,“kMaxInteger / bytesOfRow < fhBuf.rows”(イ群)か,“kMaxInteger / fhBuf.rows < bytesOfRow”(ア群)になる。整数の割り算は切り捨てだが,どちらも“bytesOfRow × fhBuf.rows が kMaxInteger を超える”ことと同じ意味になる。

割る数は 0 でない必要があるが,35 行で cols と rows がどちらも 0 でないことを確かめており,34 行で colors が kColors(3)と確認されるので bytesOfRow も 0 にならない。どちらの割り算でも 0 除算にはならない。解答例は,同じ群の組合せで答えればどちらも正解としている(c が kMaxInteger / fhBuf.rows なら d は bytesOfRow,c が kMaxInteger / bytesOfRow なら d は fhBuf.rows)。

この設問は字数制限のない式の穴埋めで,間違えやすいのは次の点である。掛け算のまま“bytesOfRow * fhBuf.rows < kMaxInteger”と書くと,比べる前にオーバフローして意味が無い。また,c と d を別の群から取って“kMaxInteger / fhBuf.rows < fhBuf.rows”のように組み合わせると,条件が成り立たない。

採点講評(IPA)

設問3は,全体として正答率が低かった。設問に挙げた不等式において,左辺及び右辺それぞれの演算で整数オーバフローが発生する可能性についての考慮が不足した解答が目立った。

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

問2 インターネット接続システムにおける迷惑メール対策

インターネット接続システムにおける迷惑メール対策に関する次の記述を読んで,設問1~4に答えよ。

A 社は,従業員数 2,000 名のスポーツ用品製造会社である。東京に本社,国内 8 か所に営業所,国内 1 か所に工場がある。A 社では,本社にインターネット接続システムを導入し,電子メール(以下,メールという)や Web 閲覧などに利用している。本社,営業所及び工場の LAN は,IP-VPN で接続されている。

〔インターネット接続システムの概要〕

インターネット接続システムの運用は,責任者である情報システム部の D 部長の下で,E 主任と F さんが担当している。インターネット接続システムの各サーバでは,サーバへのアクセス及びサーバ上でのプログラムの動作のログをログサーバに保存している。ログを収集,転送する方式には,UNIX で一般的に使われている a というプロトコルを利用している。ファイアウォール(以下,FW という)では,拒否した通信のログを保存している。

A 社では,ドメイン名 a-sha.co.jp(以下,A 社ドメイン名という)を取得している。メールアドレスのドメイン名には A 社ドメイン名を使用している。

A 社のネットワーク構成を図1に,インターネット接続システムの主な機器と機能概要を表1に示す。

A 社のネットワーク構成図。本社の中に,破線で囲んだインターネット接続システムがある。インターネットは FW に接続され,FW は L2SW(網掛け)に接続される。この L2SW に,DNS サーバ,公開 Web サーバ,プロキシサーバ,外部メールサーバ,迷惑メール対策装置,LB が接続される。LB は別の L2SW(網掛け)に接続され,その L2SW に取引 Web サーバが接続される。FW は本社内の L3SW(網掛け)にも接続され,この L3SW に部署 LAN,その下の L2SW(網掛け),IP-VPN が接続される。この L2SW にログサーバ,内部メールサーバ,業務サーバが接続される。IP-VPN には営業所(営業所 LAN と L3SW,複数)と工場(L3SW と工場 LAN)が接続される。凡例 LB:ロードバランサ,L2SW:レイヤ 2 スイッチ,L3SW:レイヤ 3 スイッチ。注記 1 A 社の PC は全て,部署 LAN,営業所 LAN 又は工場 LAN のいずれかに接続している。注記 2 PC の記載は省略している。注記 3 網掛けの機器は二重化している。
図1 A 社のネットワーク構成
機器名称と機能概要の表。LB:HTTP,SMTP などのサービスの振分け機能及び IP アドレス変換機能がある。送信元 IP アドレスによって,振分け機能及び IP アドレス変換機能を使用しない設定もできる。迷惑メール対策装置:インターネットから内部メールサーバへのメール転送機能,迷惑メールフィルタリング機能及びメールに対するウイルススキャン機能がある。迷惑メール対策装置のベンダの Web サーバから 1 時間ごとにウイルス定義ファイルをダウンロードし,更新する。外部メールサーバ:内部メールサーバからインターネットへのメール転送機能及びメールに対するウイルススキャン機能がある。迷惑メール対策装置の故障に備えて,インターネットから内部メールサーバへのメール転送も行うことができる。ウイルス対策ソフトのベンダの Web サーバから 1 時間ごとにウイルス定義ファイルをダウンロードし,更新する。プロキシサーバ:プロキシ機能,Web コンテンツキャッシュ機能,URL フィルタリング機能及び Web コンテンツに対するウイルススキャン機能がある。プロキシソフトのベンダの Web サーバから 1 時間ごとに URL フィルタリング定義ファイル及びウイルス定義ファイルをダウンロードし,更新する。サーバ管理者の URL の登録によって URL フィルタリングを行うことができるプロキシブラックリスト(以下,ブラックリストを BL という)がある。取引 Web サーバ:販売店からの注文受付機能がある。注文情報は業務サーバに保存される。
表1 インターネット接続システムの主な機器と機能概要

インターネット接続システムでは,迷惑メール対策装置及び外部メールサーバだけがメールを扱う。

FW はステートフルパケットフィルタリング型である。その FW のルールを表2に示す。

FW のルールの表(項番,送信元,宛先,サービス,動作)。1:インターネット,迷惑メール対策装置,SMTP,許可。2:インターネット,外部メールサーバ,SMTP,許可。3:迷惑メール対策装置,内部メールサーバ,SMTP,許可。4:外部メールサーバ,インターネット,SMTP,許可。5:外部メールサーバ,内部メールサーバ,SMTP,許可。6:内部メールサーバ,外部メールサーバ,SMTP,許可。(中略)25:全て,全て,全て,拒否。注記 1 項番が小さいルールから順に,最初に一致したルールが適用される。注記 2 項番 7~24 は,SMTP に関連しないルールである。
表2 FW のルール

迷惑メール対策装置は,図2に示すようにメールの転送に関する情報及びメールの内容を検査し,転送を許可又は拒否する。転送の許可又は拒否の判定に用いられるルールには,利用者が設定可能な“ユーザ登録ルール”と,迷惑メール対策装置のベンダから提供される“ベンダ提供ルール”があり,これらのルールを利用した判定に加え,SPF(Sender Policy Framework)を利用して判定する“SPF 判定”がある。

判定処理のフローチャート。処理開始の後,まず“ユーザ登録ルールによる判定”を行い,WL にマッチすれば処理終了(許可),BL にマッチすれば処理終了(拒否)となる。いずれにもマッチしなければ“ベンダ提供ルールによる判定”を行い,WL にマッチすれば処理終了(許可),BL にマッチすれば処理終了(拒否)となる。いずれにもマッチしなければ“SPF 判定”を行い,OK なら処理終了(許可),NG なら処理終了(拒否)となる。WL:ホワイトリスト。注記 WL と BL の優先度については表 3 を参照
図2 迷惑メール対策装置における判定処理

ユーザ登録ルールとベンダ提供ルールはそれぞれ表3に示す WL 及び BL から構成される。ユーザ登録ルールの各リストへの登録は,社内からの要望を情報システム部が受け付け,サーバ管理者である F さんが行っている。ベンダ提供ルールは,迷惑メール対策装置のベンダの Web サーバから 1 時間ごとにダウンロードして更新される。ベンダ提供ルールの具体的な内容は,開示されていない。

ルール種別,形式,マッチング対象の表。1:IP アドレス WL,IP アドレスの並び,メールの送信元 IP アドレス。2:IP アドレス BL,IP アドレスの並び,メールの送信元 IP アドレス。3:ドメイン名 WL,ドメイン名の並び,エンベロープの送信者メールアドレスのドメイン名。4:ドメイン名 BL,ドメイン名の並び,エンベロープの送信者メールアドレスのドメイン名。5:URL BL,URL の並び,ヘッダ及びメール本文中に含まれる URL。6:単語 BL,単語の並び,ヘッダ及びメール本文中に含まれる単語。注記 項番が小さいルールから順に,最初に一致したルールが適用される。
表3 ユーザ登録ルールとベンダ提供ルール

A 社のメールアドレスを使ったなりすましを防ぐために,A 社の DNS サーバで SPF の設定を行っている。A 社のメールアドレスを使ったメールを送信するのは外部メールサーバだけである。メールに関する DNS の設定を図3に示す。

メールに関する DNS の設定。msv1.a-sha.co.jp. IN A x1.y1.z1.3,msv2.a-sha.co.jp. IN A x1.y1.z1.4,a-sha.co.jp. IN MX 10 msv1.a-sha.co.jp.,a-sha.co.jp. IN MX 20 msv2.a-sha.co.jp.,a-sha.co.jp. IN TXT "v=spf1 +ip4:x1.y1.z1.4 [ b ] "。注記 1 x1.y1.z1.3 は迷惑メール対策装置の IP アドレス,x1.y1.z1.4 は外部メールサーバの IP アドレスである。注記 2 逆引き定義は省略しているが,適切に設定されている。
図3 メールに関する DNS の設定

〔迷惑メールの増加の調査〕

先週,“2 週間前から,社外が送信元とみられる迷惑メールが増加している”と営業部から情報システム部に連絡があった。D 部長は,E 主任と F さんに調査を指示した。調査したところ,全ての機器は設定どおり動作していた。次に,ログサーバに保存されているログを調査したところ,①迷惑メールが外部メールサーバから内部メールサーバに転送されており,2 週間前からその数が増加していた。

報告を受けた D 部長は,E 主任と F さんに迷惑メール対策装置のユーザ登録ルールの見直しを行ってから,今回の迷惑メールの増加への対策を行うよう指示した。

〔迷惑メール対策装置のユーザ登録ルールの見直し〕

E 主任と F さんは,迷惑メール対策装置のユーザ登録ルール全般を見直すことにした。

まず,IP アドレス WL と IP アドレス BL への登録の効果の持続性について検討した。たとえ取引先の IP アドレスを IP アドレス WL に登録していたとしても,メールが急に届かなくなる可能性もある。届かなくなった場合は,IP アドレス WL の登録内容を見直す必要がある。そこで,F さんは,IP アドレス WL の登録内容の見直し方法を運用手順に追加した。

次に,ドメイン名 WL とドメイン名 BL への登録について検討した。F さんは,SPF 判定があれば,ドメイン名 WL とドメイン名 BL への登録は不要ではないかと E 主任に質問した。E 主任は,“SPF を使えばドメイン名を詐称する迷惑メールの拒否が可能である。しかし,②迷惑メール送信者の行為によっては,迷惑メール対策装置が SPF を使って正しいと判定したサーバから送信された迷惑メールを防ぐことができないので必要である”と,F さんに説明した。

さらに,URL BL について検討した。F さんは,③ c に登録する設定を URL BL にも登録することを提案し,効果があることを説明した。この提案には,E 主任も同意した。

最後に,単語 BL について検討し,現状のままでも問題がないことを確認した。

〔迷惑メールの増加への対策の検討〕

E 主任と F さんは,迷惑メールの増加への対策について検討した。検討の結果,④図1のネットワーク構成と LB の設定を変更することで,インターネット上のメールサーバからの SMTP 通信を制御することにした。さらに,表2のルール及び図3の設定を LB による制御に対応するように変更することにした。

E 主任と F さんは,検討した対策を D 部長に報告し,了承を得た。D 部長は,この対策で従業員に届く迷惑メールの減少が期待できるものの,迷惑メール対策装置だけでは,防ぐことができない迷惑メールがあるので,次の 2 点を周知するように指示した。

指示を受けた E 主任と F さんは,設定の変更と従業員への周知を行った。

これらの対処によって,従業員に届く迷惑メールが減少するとともに,不審なメールに対する従業員の対処が定着した。

出題趣旨(IPA)

標的型攻撃では,標的となる特定個人に対して電子メールのやり取りが行われる場合が多く,企業における標的型攻撃の入口対策として,電子メールに関する情報セキュリティ対策の継続的な実施と見直しが重要になっている。本問では,迷惑メールの増加を題材に,電子メールの情報セキュリティ対策のうち,標的型攻撃に使用される電子メールを含む迷惑メール対策に関する設計及び運用についての能力を問う。

採点講評(問全体・IPA)

問2では,電子メールの情報セキュリティ対策について出題した。全体として正答率は低かった。

現在のメールシステムは,標的型攻撃の入口対策として重要な役割を果たしている。電子メールに関する情報セキュリティ対策について,理解を深めてほしい。

設問と解答例

設問1(1) 解答欄1つ

本文中の a に入れる適切な字句を,英字 8 字以内で答えよ。

〔a〕解答例

  • syslog
解説

本文の根拠

〔インターネット接続システムの概要〕

ログを収集,転送する方式には,UNIX で一般的に使われている a というプロトコルを利用している。

〔インターネット接続システムの概要〕

インターネット接続システムの各サーバでは,サーバへのアクセス及びサーバ上でのプログラムの動作のログをログサーバに保存している。

空欄 a は,UNIX で一般的に使われ,各サーバのログをログサーバへ収集・転送するプロトコルで,syslog である。syslog は,RFC 5424 が“イベントの通知メッセージを伝えるためのプロトコル”と位置付けているもので,サーバ上のプログラムの動作やアクセスのログを,ネットワーク越しにログサーバへ送る使い方に当たる。

本文の手掛かりは“UNIX で一般的に使われている”と“ログを収集,転送する”の二つで,どちらも syslog を指す。図1では各サーバとは別にログサーバが置かれており,この構成とも合う。

英字 8 字以内の制限。解答例の“syslog”は6字で,大文字小文字は問われない用語である。

設問1(2) 解答欄1つ

図3中の b に入れる適切な字句を,英字及び記号 5 字以内で答えよ。

〔b〕解答例

  • -all
解説

本文の根拠

図3

a-sha.co.jp. IN TXT "v=spf1 +ip4:x1.y1.z1.4 b "

〔インターネット接続システムの概要〕

A 社のメールアドレスを使ったメールを送信するのは外部メールサーバだけである。

図3

注記 1 x1.y1.z1.3 は迷惑メール対策装置の IP アドレス,x1.y1.z1.4 は外部メールサーバの IP アドレスである。

図3の TXT レコードは SPF の設定で,“+ip4:x1.y1.z1.4”は,A 社のメールを送信できるサーバとして外部メールサーバの IP アドレスを許可している(修飾子の“+”は pass で,書かなければ既定で“+”になる。RFC 7208 4.6.2)。A 社のメールアドレスで送信するのは外部メールサーバだけなので,それ以外のサーバから A 社ドメインで送られたメールは,なりすましとして拒否させたい。そのためのものが,レコードの最後に置く“all”メカニズムで,どの送信元にも必ず一致する(RFC 7208 5.1)。これに修飾子“-”を付けた“-all”は,それまでのメカニズムに一致しなかった送信元に fail を返す。受信側の迷惑メール対策装置は,SPF 判定が NG のメールを拒否する(図2)。

似た書き方との違いは次のとおり。“+all”は全ての送信元を pass にするので,なりすましを防げない。“~all”は softfail,“?all”は neutral で,どちらも明確な fail にならない。講評も,なりすましを拒否してもらうために SPF レコードの設定方法を是非知っておいてほしい,と述べている。

字数は“英字及び記号 5 字以内”。解答例の“-all”は4字で,記号の“-”を落とさずに書く。

採点講評(IPA)

設問1(2)は,正答率が低かった。電子メールにおけるなりすましを拒否してもらうために,SPF(Sender Policy Framework)レコードの設定方法を是非知っておいてほしい。

設問2 35字以内

本文中の下線①について,増加した迷惑メールは,外部メールサーバにどのように送られていたか。表2のルール及び図3の設定を考慮して,35 字以内で述べよ。

解答例

  • インターネットから迷惑メール対策装置を経由せずに送られていた。
解説

本文の根拠

図3

a-sha.co.jp. IN MX 10 msv1.a-sha.co.jp.

図3

a-sha.co.jp. IN MX 20 msv2.a-sha.co.jp.

図3

注記 1 x1.y1.z1.3 は迷惑メール対策装置の IP アドレス,x1.y1.z1.4 は外部メールサーバの IP アドレスである。

表2

2:インターネット,外部メールサーバ,SMTP,許可。

表1

外部メールサーバ:内部メールサーバからインターネットへのメール転送機能及びメールに対するウイルススキャン機能がある。

図3の MX レコードは,優先度 10 が msv1(x1.y1.z1.3,迷惑メール対策装置),優先度 20 が msv2(x1.y1.z1.4,外部メールサーバ)である。普通の送信側は優先度の小さい msv1 に送るが,迷惑メールの送信者は,優先度の低い msv2 を狙ったり,外部メールサーバの IP アドレスを直接指定したりして送ることができる。FW の表2 項番 2 は,インターネットから外部メールサーバへの SMTP を許可しているので,この通信は FW を通る。外部メールサーバには,表1のとおりウイルススキャン機能はあるが迷惑メールフィルタリング機能は書かれていない。このため,迷惑メール対策装置を経由せずに送られたメールは,フィルタリングされないまま,外部メールサーバから内部メールサーバへ転送される(表2 項番 5)。

調査では全ての機器が設定どおり動いていた,と本文にあるので,機器の故障ではなく,この設定の穴が原因である。

35字以内の制限。解答例は“インターネットから迷惑メール対策装置を経由せずに送られていた。”(31字)。“どこから”(インターネット)と“どう送られたか”(迷惑メール対策装置を経由せず)の二つを入れる。

設問3(1) 25字以内

IP アドレス WL を見直す必要があるのは,取引先でどのような事象が発生した場合か。25 字以内で具体的に述べよ。

解答例

  • メールサーバのIPアドレスが変更された場合
解説

本文の根拠

〔迷惑メール対策装置のユーザ登録ルールの見直し〕

たとえ取引先の IP アドレスを IP アドレス WL に登録していたとしても,メールが急に届かなくなる可能性もある。

表3

1:IP アドレス WL,IP アドレスの並び,メールの送信元 IP アドレス。

IP アドレス WL は,メールの送信元 IP アドレスと突き合わせて許可を決める(表3 項番 1)。取引先のメールサーバの IP アドレスが変わると,WL に登録してあった古いアドレスと一致しなくなり,取引先のメールが WL の対象から外れて,ほかのルールや SPF 判定で拒否される可能性が出てくる。メールが急に届かなくなるのはこのときで,登録内容の見直しが必要になる。

講評は,“MX レコードの設定を変更する”のように IP アドレスとは関係のない設定について述べた解答が見られた,と述べている。IP アドレス WL が IP アドレスで一致を見ていることを押さえて,IP アドレスが変わる場合を書く。

25字以内の制限。解答例は“メールサーバのIPアドレスが変更された場合”(21字)。“事象”を聞かれているので,文末は“〜場合”で締める。

採点講評(IPA)

設問3(1)は,正答率が高かった。“MXレコードの設定を変更する”というように,IPアドレスとは関係ない設定について述べた解答が散見された。IPアドレスWLが,IPアドレスをマッチングに使うことについて注意して解答してほしい。

設問3(2) 30字以内

本文中の下線②について,迷惑メールを防ぐことができなくなる迷惑メール送信者の行為を,30 字以内で述べよ。

解答例

  • 迷惑メールの送信者がドメインを正当に取得した場合
解説

本文の根拠

〔迷惑メール対策装置のユーザ登録ルールの見直し〕

SPF を使えばドメイン名を詐称する迷惑メールの拒否が可能である。しかし,②迷惑メール送信者の行為によっては,迷惑メール対策装置が SPF を使って正しいと判定したサーバから送信された迷惑メールを防ぐことができない

表3

3:ドメイン名 WL,ドメイン名の並び,エンベロープの送信者メールアドレスのドメイン名。

SPF は,エンベロープの送信者メールアドレスのドメインが公開している SPF レコードに,送信してきたサーバが許可されているかを調べる仕組みで,ドメインの詐称は見破れる。しかし,迷惑メールの送信者自身がドメインを正当に取得し,自分のサーバを許可する SPF レコードを公開していれば,そのサーバから送った迷惑メールの SPF 判定は OK となり,図2の流れでは許可される。SPF が確かめるのは“ドメインの持ち主が許可したサーバか”であって,メールの中身の善し悪しではないからである。このような送信者は,ドメイン名 BL に登録しないと防げない。

講評は,“送信元の IP アドレスを詐称したパケットを送り込む”といった解答が目立ったが,SMTP は TCP 上で動作するので事実上 IP アドレスを詐称できない,と述べている。本文の“正しいと判定したサーバから送信された”という前提を読み落とさない。

30字以内の制限。解答例は“迷惑メールの送信者がドメインを正当に取得した場合”(24字)。

採点講評(IPA)

設問3(2)は,正答率が低かった。“送信元のIPアドレスを詐称したパケットを送り込む”といった解答が目立った。しかし,SMTPはTCP上で動作しているので,事実上,IPアドレスを詐称することはできないことを理解してほしい。

設問3(3) 解答欄2つ

本文中の c に入れる適切な機器名を図1中から選び,答えよ。また,本文中の下線③における,登録の効果とは何か。15 字以内で述べよ。

〔c〕解答例

  • プロキシサーバ

〔効果〕解答例

  • 迷惑メールの拒否率向上
解説

本文の根拠

〔迷惑メール対策装置のユーザ登録ルールの見直し〕

③ c に登録する設定を URL BL にも登録することを提案し,効果があることを説明した。

表1

サーバ管理者の URL の登録によって URL フィルタリングを行うことができるプロキシブラックリスト(以下,ブラックリストを BL という)がある。

表3

5:URL BL,URL の並び,ヘッダ及びメール本文中に含まれる URL。

URL を登録して使うブラックリストを持つ機器は,図1・表1の中ではプロキシサーバだけである(プロキシブラックリスト)。c は“プロキシサーバ”。プロキシサーバの BL には,従業員に閲覧させたくない URL が管理者によって登録されている。同じ URL を迷惑メール対策装置の URL BL にも登録すると,ヘッダ及びメール本文中にその URL を含むメール(表3 項番 5)を,届く前に拒否できる。登録の効果は“迷惑メールの拒否率向上”である。

本文の最後で D 部長は“不審なメール中の URL をクリックしない”よう周知させている。これは URL BL が拒否しきれなかったメールへの備えで,URL の登録による拒否と,利用者側の注意は役割が違う。

効果は15字以内の制限。解答例の“迷惑メールの拒否率向上”は11字。c は機器名を図1中から選ぶので,“プロキシサーバ”と図1の表記どおり書く。

設問4 30字以内

本文中の下線④について,迷惑メール対策装置が正常に稼働している場合,SMTP 通信をどのように制御すべきか。30 字以内で具体的に述べよ。

解答例

  • SMTP通信を迷惑メール対策装置に振り分ける。
解説

本文の根拠

表1

LB:HTTP,SMTP などのサービスの振分け機能及び IP アドレス変換機能がある。送信元 IP アドレスによって,振分け機能及び IP アドレス変換機能を使用しない設定もできる。

〔迷惑メールの増加への対策の検討〕

④図1のネットワーク構成と LB の設定を変更することで,インターネット上のメールサーバからの SMTP 通信を制御することにした。

〔迷惑メールの増加への対策の検討〕

さらに,表2のルール及び図3の設定を LB による制御に対応するように変更することにした。

設問2のとおり,迷惑メールは迷惑メール対策装置を通らず外部メールサーバに直接届いていた。対策は,インターネットから来る SMTP を,LB(SMTP などのサービスの振分け機能がある)で迷惑メール対策装置に振り分け,外部メールサーバへ直接届かないようにすることである。迷惑メール対策装置が正常に稼働している間は,インターネットからのメールは全て迷惑メール対策装置で検査されることになる。

本文は,この変更に合わせて,表2の FW のルールと図3の DNS の設定も LB による制御に対応するよう直すと述べている。外部メールサーバがインターネットから直接受けるのは,表1にあるとおり対策装置の故障に備えた機能なので,対策装置が正常な間はそこへ送らせない。

30字以内の制限。解答例は“SMTP通信を迷惑メール対策装置に振り分ける。”(23字)。“どのように制御すべきか”に対し,“振り分ける”という制御の動作と,振り分け先(迷惑メール対策装置)の二つを書く。

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

問3 インターネットを利用した銀行取引サービスを狙うマルウェアへの対策

インターネットを利用した銀行取引サービスを狙うマルウェアへの対策に関する次の記述を読んで,設問1~3に答えよ。

X 銀行は,従業員数 2,000 名の地方銀行である。X 銀行では,PC からインターネットを利用して送金,取引照会などを行える銀行取引サービス(以下,ネットバンキングという)として X ネットサービスを提供している。X ネットサービスのドメイン名は x-bank.jp であり,HTTP over TLS 用に EV SSL 証明書(以下,サーバ証明書という)を使用している。

X ネットサービスでは,個人利用者の認証と法人利用者の認証に,それぞれ異なる方式を採用している。X ネットサービスの送金時の利用手順を図1に示す。

X ネットサービスの送金時の利用手順。<個人利用者の利用手順>は,URL 入力,利用者 ID・パスワード入力,ログイン,送金情報入力,乱数表の情報入力,送金実行の順。<法人利用者の利用手順>は,URL 入力,クライアント証明書による TLS 接続,利用者 ID・パスワード入力,ログイン,送金情報入力,送金実行の順(乱数表の情報入力は無い)。注記 法人利用者の使用するクライアント証明書に対応する秘密鍵は,エクスポートできない状態で PC にインストールされる。
図1 X ネットサービスの送金時の利用手順

〔マルウェア対策〕

ある日,情報セキュリティ対策機関から,ネットバンキングを悪用するマルウェア(以下,マルウェア J という)への注意喚起が発表された。そこで,X ネットサービス事業部のセキュリティ担当の W 主任は,X ネットサービスへの影響について調査した。マルウェア J に感染した PC で X ネットサービスを利用した場合の動作を,図2に示す。

左にログイン画面(URL は https://x-bank.jp/login/,利用者 ID とパスワードの入力欄とログインボタン),右にログイン後画面(URL は https://x-bank.jp/xnet?page=123,“不正防止のために本人確認を行います。乱数表の全ての情報を入力してください。”の文言と,列が あ・い・う・え・お,行が 1〜5 の乱数表の入力欄,入力完了ボタン)があり,左から右へ矢印がある。<マルウェア J の動作>として,ログイン画面の下に“マルウェア J は,X ネットサービスのログイン画面に通常表示される注意事項などのメッセージを削除する。さらに,入力された利用者 ID,パスワードを攻撃者に送信する。”,ログイン後画面の下に“正規の Web サイトからの応答に不正な HTML を挿入し,乱数表情報の入力を促す。入力された情報を,攻撃者に送信する。”とある。
図2 マルウェア J に感染した PC で X ネットサービスを利用した場合の動作

W 主任は,注意喚起の内容を確認した後,X ネットサービスが狙われた場合のリスクを上司の G 部長に説明した。次は,その時の W 主任と G 部長の会話である。

〔新たなマルウェア対策の検討〕

X 銀行がマルウェア J に対する注意を促した後,海外のネットバンキングで被害が発生したとされるマルウェア(以下,マルウェア K という)への注意喚起が,海外の情報セキュリティ関連 Web サイトに公開された。この情報を基に,W 主任は,マルウェア K に感染した PC で X ネットサービスを利用した場合の動作をまとめ,G 部長に報告した。この動作を,図3に示す。

<X ネットサービスアクセス時のブラウザの画面遷移>として,左から,送金内容入力画面(URL は https://x-bank.jp/xnet?page=45。“送金先口座番号,送金額を入力してください。”とあり,口座番号 123456,送金額 10000 円が入力され,次へボタンがある),乱数表の情報入力画面(URL は https://x-bank.jp/xnet?page=66。“乱数表カードを参照して,マス目 あ-2 の英数字を確認番号欄に入力してください。”とあり,確認番号欄と次へボタンがある),送金内容確認画面(URL は https://x-bank.jp/xnet?page=76。“次の内容で送金します。”とあり,口座番号 [ a ],送金額 [ b ] 円と送金実行ボタンがある)が並ぶ。<マルウェア K の動作>として,送金内容入力画面から乱数表の情報入力画面へ向かう矢印の下に“ブラウザの動作に介入し,攻撃者が意図した送金内容に書き換える。・書き換え後の送金内容 口座番号:999999 送金額:500000”,乱数表の情報入力画面から送金内容確認画面へ向かう矢印の下に“ブラウザの動作に介入し,送金内容確認画面を書き換える。”とある。
図3 マルウェア K に感染した PC で X ネットサービスを利用した場合の動作

次は,マルウェア K に関して W 主任が G 部長に報告した際の会話である。

〔セキュリティ対策の再検討〕

W 主任は,まず国内外のネットバンキングで採用された実績があるセキュリティ対策を調査した。その上で,現在,X ネットサービスで採用している認証方式と,調査したセキュリティ対策について,マルウェア J,マルウェア K のそれぞれに効果がある対策という観点から評価を行った。X ネットサービスで新たに採用を検討したセキュリティ対策を表1に,現在 X ネットサービスで採用している認証方式も含めた評価結果を表2に示す。

名称と方式の表。ワンタイムパスワード認証:認証のたびに,要求するパスワードが変わる方式。入力すべきパスワードは,専用デバイスに表示される。リスクベース認証:通常と異なる環境からログインしようとした場合などに,あらかじめ利用者が登録しておいた合言葉を追加で入力させる方式。送金内容認証:送金内容に対して,メッセージ認証コードを用いる方式。利用者とネットバンキングの Web サイト間で,利用者ごとの鍵(以下,共通鍵という)を設定した HMAC 計算ツールをあらかじめ共有しておく。利用者がネットバンキングで送金するときは,HMAC 計算ツールに送金先口座番号及び送金額を送金内容として入力し,HMAC 計算ツールで計算した結果(以下,HMAC 値という)も Web サイトに送信する。Web サイトでは,利用者側で計算した HMAC 値と,送信された送金内容から Web サイト側で計算した HMAC 値を比較することによって,送金内容が改ざんされていないか検証を行う。
表1 採用を検討したセキュリティ対策
セキュリティ対策の評価結果の表(項番,セキュリティ対策,マルウェア J の感染に起因する不正送金への対策としての評価,マルウェア K の感染に起因する不正送金への対策としての評価)。1:利用者 ID・パスワード認証,対策にならない,対策にならない。2:クライアント証明書による認証,対策になる,対策にならない。3:乱数表による認証,対策にならない,対策にならない。4:ワンタイムパスワード認証,[ c ],対策にならない。5:リスクベース認証,対策になる,対策にならない。6:送金内容認証,[ d ],対策になる。注記 利用者は,マルウェア J,マルウェア K の感染に気付くことができないことを前提とする。
表2 セキュリティ対策の評価結果

表2の評価結果から,マルウェア K に感染した PC の不正送金対策として有効なのは,項番 6 であることが分かった。また,項番 1 と項番 4 の認証を組み合わせた e 認証といわれる認証方式の評価も行ったが,マルウェア K に感染した PC の不正送金対策にはならなかった。G 部長は,マルウェア K が進化し,更に手口が巧妙化することも考えられるので,④HMAC 計算ツールを PC 用のプログラムではなく,専用デバイスの形態で利用者に提供することを検討するよう,W 主任に指示した。

X ネットサービスとしては,利用者に,PC の OS のセキュリティパッチ適用の徹底や,ウイルス対策ソフトの導入とウイルス定義ファイルの更新の徹底を促すとともに,新種のマルウェアの情報を継続して提供していくことにした。あわせて,“送金内容認証”の提供準備を進めることにした。

出題趣旨(IPA)

マルウェアへのセキュリティ対策を講じるには,攻撃手法を正しく理解するとともに,講じるセキュリティ対策についても,どういった攻撃手法に効果のある対策なのかを正しく理解する必要がある。本問では,インターネットバンキングを題材に,マルウェアの攻撃手法に基づいて適切な対策方法を立案する能力を問う。

採点講評(問全体・IPA)

問3では,マルウェアへのセキュリティ対策について出題した。

設問と解答例

設問1(1) 10字以内

本文中の下線①のような Web サイトの一般的な総称を,10 字以内で答えよ。

解答例

  • フィッシングサイト
解説

本文の根拠

〔マルウェア対策〕

利用者を①偽 Web サイトに誘導するものではないね。

〔マルウェア対策〕

マルウェア J に感染した PC で,正規の Web サイトにアクセスすると,マルウェア J が,認証情報を盗むために邪魔なメッセージを削除し,偽の乱数表情報入力画面を表示するものだね。

下線①の“偽 Web サイト”は,本物のサイトによく似せて作り,利用者に利用者 ID・パスワードなどを入力させて盗むための Web サイトで,その一般的な総称は“フィッシングサイト”である。G 部長は,マルウェア J の攻撃は,こうした偽サイトに誘導するものではなく,正規のサイトの画面に偽の入力画面を差し込むものだ,と整理している。

本文は,後の会話でも“偽 Web サイトに誘導して行われる中間者攻撃”に触れており,偽サイトへの誘導(フィッシング)と,マルウェア感染による画面の改ざんは別物として使い分けている。

10字以内の制限。解答例は“フィッシングサイト”(9字)。

設問1(2) 35字以内

本文中の下線②の理由を,X ネットサービスにおける法人利用者の利用手順に着目し,35 字以内で述べよ。

解答例

  • 攻撃者はクライアント証明書がなく,ログインできないから
解説

本文の根拠

図1

<法人利用者の利用手順>は,URL 入力,クライアント証明書による TLS 接続,利用者 ID・パスワード入力,ログイン,送金情報入力,送金実行の順(乱数表の情報入力は無い)。

図1

注記 法人利用者の使用するクライアント証明書に対応する秘密鍵は,エクスポートできない状態で PC にインストールされる。

図1の法人利用者の手順では,利用者 ID・パスワードを入力する前に,クライアント証明書による TLS 接続が入る。クライアント証明書に対応する秘密鍵は,エクスポートできない状態で PC に入っているので,攻撃者は秘密鍵を持ち出せず,自分の PC から X ネットサービスに TLS 接続することができない。したがって,マルウェア J に利用者 ID・パスワードを盗まれても,攻撃者はクライアント証明書がないためログインできず,金銭的な被害が出る可能性は低い。

講評は,この設問の正答率は高かったが,乱数表を使用していないことに言及した解答も多く,設問の趣旨を捉えていないものがあった,と述べている。設問は“法人利用者の利用手順に着目し”と指定しているので,個人利用者にある乱数表の有無ではなく,法人利用者の手順にあるクライアント証明書を書く。

35字以内の制限。解答例は“攻撃者はクライアント証明書がなく,ログインできないから”(27字)。

採点講評(IPA)

設問1(2)は,正答率が高かった。法人利用者がクライアント証明書による端末認証を実施していることから,利用者IDとパスワードだけでは,Xネットサービスを利用できないことが,正しく理解されているようであった。しかし,乱数表を使用していないことに言及する解答も多く,設問の趣旨を捉えていない受験者も散見された。落ち着いて問題文を読んで解答してほしい。

設問2(1) 35字以内

本文中の下線③について,利用者はどのようにして攻撃に気付くことができるか。35 字以内で述べよ。

解答例

  • 利用者のブラウザに表示される警告画面を見て気付くことができる。
解説

本文の根拠

〔新たなマルウェア対策の検討〕

例えば,利用者が使用している DNS サーバを攻撃することで,x-bank.jp へのアクセスを偽 Web サイトに誘導して行われる中間者攻撃であれば,③最新のブラウザを使っている利用者は攻撃に気付くことができる。

〔マルウェア対策〕

HTTP over TLS 用に EV SSL 証明書(以下,サーバ証明書という)を使用している。

偽サイトに誘導する中間者攻撃では,攻撃者は x-bank.jp 用の正規のサーバ証明書(とその秘密鍵)を持っていないので,別の証明書を提示するしかない。TLS では,ブラウザが,接続しようとしているドメイン名と,サーバが示した証明書の内容が一致するかを確かめる(RFC 6125)。一致しない,又は信頼できない証明書だと,最新のブラウザは接続を止め,警告画面を表示する。利用者はこの警告画面を見て攻撃に気付くことができる。

一方,マルウェア K は通信経路に介在せず,ブラウザの動作そのものに介入する(Man-in-the-Browser)。正規のサーバと正規の証明書で通信するので警告は出ず,利用者は気付けない。この違いが,G 部長の“中間者攻撃であれば気付く”と“マルウェア K では気付けない”の対比の中身である。

35字以内の制限。解答例は“利用者のブラウザに表示される警告画面を見て気付くことができる。”(31字)。“どのようにして”に答えるので,“警告画面”という手掛かりを書く。

設問2(2) 解答欄3つ

図3中の a,b に入れる適切な口座番号と送金額をそれぞれ答えよ。また,マルウェア K が,送金内容確認画面を書き換える目的を,35 字以内で述べよ。

〔a〕解答例

  • 123456

〔b〕解答例

  • 10000

〔目的〕解答例

  • マルウェアKが書き換えた口座番号と送金額を利用者に隠すこと
解説

本文の根拠

図3

送金内容入力画面(URL は https://x-bank.jp/xnet?page=45。“送金先口座番号,送金額を入力してください。”とあり,口座番号 123456,送金額 10000 円が入力され

図3

ブラウザの動作に介入し,攻撃者が意図した送金内容に書き換える。・書き換え後の送金内容 口座番号:999999 送金額:500000

図3

ブラウザの動作に介入し,送金内容確認画面を書き換える。

利用者が送金内容入力画面で入れたのは,口座番号 123456・送金額 10000 円。マルウェア K は,ブラウザの動作に介入して,サーバへ送る内容を口座番号 999999・送金額 500000 に書き換える。その結果,サーバから来る確認画面は書き換え後の内容(999999,500000)になるはずだが,K は確認画面も書き換えて,利用者が最初に入力した内容を表示する。したがって a は 123456,b は 10000 である。

確認画面は,利用者が送金内容を最後に目で確かめる機会である。ここが書き換わっていないと,利用者は口座番号と金額の違いに気付き,送金実行を押さない。確認画面を書き換える目的は,書き換えた事実を利用者に気付かせず,送金を実行させることにある。

目的は35字以内の制限。解答例は“マルウェアKが書き換えた口座番号と送金額を利用者に隠すこと”(29字)。a・b は,図3の入力内容と同じ数字を書く。書き換え後の 999999・500000 と取り違えやすい。

設問3(1) 解答欄2つ

表2中の c,d に入れる適切な評価を“対策になる”又は“対策にならない”で答えよ。

〔c〕解答例

  • 対策になる

〔d〕解答例

  • 対策になる
解説

本文の根拠

図2

マルウェア J は,X ネットサービスのログイン画面に通常表示される注意事項などのメッセージを削除する。さらに,入力された利用者 ID,パスワードを攻撃者に送信する。

表1

ワンタイムパスワード認証:認証のたびに,要求するパスワードが変わる方式。入力すべきパスワードは,専用デバイスに表示される。

表1

利用者とネットバンキングの Web サイト間で,利用者ごとの鍵(以下,共通鍵という)を設定した HMAC 計算ツールをあらかじめ共有しておく。

表2

注記 利用者は,マルウェア J,マルウェア K の感染に気付くことができないことを前提とする。

c(ワンタイムパスワード認証・マルウェア J)は“対策になる”。マルウェア J は,利用者が入力した認証情報(利用者 ID,パスワード,乱数表の情報)を攻撃者へ送る。乱数表の情報は同じ表を繰り返し使うので,盗まれると攻撃者が別の機会にそのまま使えるが(項番 3 は“対策にならない”),ワンタイムパスワードは認証のたびに変わり,入力すべき値は専用デバイスに表示されるため,盗まれた値を後から使うことはできない。

d(送金内容認証・マルウェア J)も“対策になる”。送金のとき Web サイトに送る HMAC 値は,利用者と Web サイトが共有する共通鍵を設定した HMAC 計算ツールで作る(RFC 2104 の HMAC は,共有した秘密鍵を使ってメッセージの完全性を確かめる仕組み)。マルウェア J が盗めるのは利用者 ID・パスワードなどの認証情報で,共通鍵を持たない攻撃者は,送金内容に合った正しい HMAC 値を作れないので,Web サイトの検証で止まる。

この設問は“対策になる”又は“対策にならない”を選ぶ。間違えやすいのは,表2の注記が“利用者は感染に気付けないことを前提とする”と置いている点で,利用者の注意で防げるかではなく,認証の仕組みとして効くかで評価する。同じ表の,マルウェア K 向けの評価(c は“対策にならない”,d は“対策になる”)と取り違えない。

設問3(2) 解答欄1つ

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

〔e〕解答例

  • 二要素
解説

本文の根拠

表2

1:利用者 ID・パスワード認証,対策にならない,対策にならない。

表2

4:ワンタイムパスワード認証,c,対策にならない。

〔セキュリティ対策の再検討〕

また,項番 1 と項番 4 の認証を組み合わせた e 認証といわれる認証方式の評価も行ったが,マルウェア K に感染した PC の不正送金対策にはならなかった。

項番 1 の利用者 ID・パスワード認証は“利用者が知っていること”による認証,項番 4 のワンタイムパスワード認証は,専用デバイスに表示される値を使う“利用者が持っているもの”による認証である。種類の異なる二つの要素を組み合わせた認証を“二要素認証”という。

本文は,この二要素認証でも,マルウェア K に感染した PC の不正送金対策にはならなかったと述べる。表2の項番 1・4 がどちらもマルウェア K に“対策にならない”のは,K が認証を破るのではなく,認証が済んだ後の送金内容を書き換えるからである。

5字以内の制限。解答例の“二要素”は3字で,“二要素認証”と書くと6字になり制限を超える(空欄の後ろに“認証”が付いているので書かない)。

設問3(3) 55字以内

本文中の下線④について,HMAC 計算ツールを,PC 用のプログラムの形態で提供したときのセキュリティ上の問題点を,55 字以内で述べよ。

解答例

  • 利用者のPCがマルウェアに感染した場合,HMAC計算ツールの入力内容も改ざんされる可能性がある。
解説

本文の根拠

表1

利用者がネットバンキングで送金するときは,HMAC 計算ツールに送金先口座番号及び送金額を送金内容として入力し,HMAC 計算ツールで計算した結果(以下,HMAC 値という)も Web サイトに送信する。

図3

ブラウザの動作に介入し,攻撃者が意図した送金内容に書き換える。

〔新たなマルウェア対策の検討〕

この攻撃は Man-in-the-Browser と呼ばれている攻撃手法だから,利用者は気付くことができないよ。

送金内容認証では,利用者が HMAC 計算ツールに送金先口座番号と送金額を入力し,そのツールが計算した HMAC 値を,送金内容とともに Web サイトへ送る。Web サイトは,送られた送金内容から自分で HMAC 値を計算し,一致するかを確かめる。ツールが PC 上のプログラムだと,マルウェアに感染した PC では,ツールへの入力内容も改ざんできる。入力内容を攻撃者の口座・金額に書き換えると,ツールはその改ざん後の内容に対する正しい HMAC 値を計算するので,Web サイト側の検証は通り,不正送金を防げない。専用デバイスなら,デバイスには利用者が直接入力し,結果も目で見て Web サイトへ入力するので,PC 上のマルウェアは入力内容に手を出せない。

講評は,“入力値の改ざん”ではなく“HMAC 値の改ざん”と誤って答えた受験者が多かった,と述べている。HMAC 値は共通鍵がなければ作れないので,攻撃されるのは HMAC 値の計算に渡す入力のほうである。

55字以内の制限。解答例は“利用者のPCがマルウェアに感染した場合,HMAC計算ツールの入力内容も改ざんされる可能性がある。”(48字)。“感染した場合”という条件と,“入力内容も改ざん”の二つを書く。

採点講評(IPA)

設問3(3)は,正答率が低かった。特に“入力値の改ざん”ではなく,“HMAC値の改ざん”と誤って解答している受験者が多く,送金内容認証及びHMACの仕組みについて正しく理解されていないようであった。マルウェアの攻撃手法について正しく理解してほしい。

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