令和4年度 秋期 情報処理安全確保支援士試験 午後Ⅰ 問3 コンテナ環境でのセキュリティインシデント対応とレジストリ保護

学習ガイド

オンラインゲーム事業者のコンテナ環境で起きたセキュリティインシデントの対応を扱う問題です。ゲームイメージの取り違えから不正なプロセスが動いた経緯、証拠保全のためのコンテナの一時停止、レジストリサーバのアクセスログの解釈、ボットネットへの組込みを防ぐ再発防止策と被害低減策を、初動対応から順に整理します。

この記事で押さえる論点

  • 更新手順でタグを取り違えた結果として、不正なコードを含むゲームイメージが稼働した経緯を説明できる
  • コンテナを終了せず一時停止する理由(メモリとコンテナ内ファイルシステムの保全)を述べられる
  • レジストリサーバのアクセスログから、攻撃者によるイメージの列挙と上書きの可能性を読み取れる
  • C&CサーバのIPアドレスをFWで拒否するだけでは不十分な理由と、レジストリへの書込み元IPアドレスの制限などの対策を設計できる

問題本文

問3 オンラインゲーム事業者でのセキュリティインシデント対応に関する次の記述を読んで,設問に答えよ。

M社は従業員100名のオンラインゲーム事業者である。M社のゲームは利用者がWebブラウザからインターネット経由でアクセスして利用する。M社には開発部及び運用部があり,各従業員にはPCが貸与されている。M社の各PC及び各サーバには,固定のIPアドレスが割り当てられており,コンテナエンジンがインストールされている。M社のネットワーク構成を図1に,機器の概要を表1に示す。

図1 M社のネットワーク構成(抜粋)
図の説明テキスト

凡例: FW: ファイアウォール, LB: 負荷分散装置, L2SW: レイヤー2スイッチ
M社のネットワーク構成図。
インターネットからM社内の「業務用FW」および「本番FW」が接続されている。
・業務用FWの配下には「内部サーバLAN」と「PC-LAN」がある。
 ・内部サーバLAN: L2SWが置かれ、ソースコードサーバとレジストリサーバが接続されている。
 ・PC-LAN: L2SWが置かれ、PCが接続されている。
・本番FWの配下には「本番LAN」がある。
 ・本番LAN: LBが置かれ、その下にL2SWが接続され、さらにゲームサーバ1〜4が接続されている。

表1 M社の機器の概要(抜粋)
図の説明テキスト
名称 概要
業務用 FW ・PC-LAN, 内部サーバ LAN 及び本番 LAN を起点とするインターネット接続において, 送信元 IP アドレスをグローバル IP アドレス a1.b1.c1.d1 に変換する。
・本番 LAN を起点とする通信に関してログに記録する。
ソースコードサーバ ・バージョン管理ツールが動作しており, ゲームの Web アプリケーションプログラム (以下, ゲームアプリという) のソースコードが格納されている。
・新たなソースコードが格納されるたびに, 当該ソースコードが参照している OSS のソースコードを外部からダウンロードする。その後, ゲームアプリのコンテナイメージ (以下, ゲームイメージという) を新たに生成し, レジストリサーバに登録する。
・ゲームイメージは “タグ” で識別される。タグは, ゲームイメージが生成されるたびに連番で付与される番号である。
レジストリサーバ ・ゲームイメージを登録する。ゲームイメージの新規登録及び上書き登録, 並びに登録されたゲームイメージの列挙, 取得及び削除のために, HTTPS でアクセスする REST API を実装している。当該 REST API に認証・認可機能は設定されていないが, API 呼出しはログに記録される。
表1 M社の機器の概要(抜粋)(続き)
図の説明テキスト
名称 概要
LB ・インターネットからのHTTPS接続を終端し、転送先として選択可能なサーバ群(以下、LBメンバという)のいずれかにHTTPリクエストを転送する。転送先のサーバはラウンドロビン方式によって選択するが、同じセッションのリクエストは同じサーバに転送する。
・LBメンバにはゲームサーバ1〜4が登録されている。
・グローバルIPアドレス a2.b2.c2.d2 をもつ。
ゲームサーバ1〜4 ・ゲームイメージを基にコンテナが稼働する。当該コンテナ内のプロセスによるファイルシステムへのアクセスは、ゲームイメージに含まれるファイルの読込み、並びに一時ディレクトリ内のファイルの作成、読込み、書込み及び実行だけに制限されている。ネットワーク接続の接続先には制限がない。
・ゲームアプリはログを一時ディレクトリに出力する。一時ディレクトリはコンテナ起動時に作成され、コンテナ終了時に消去される。

M社では,定期的にゲームアプリを更新する。開発部は新たなバージョンのゲームアプリに対して品質テストを行い,品質テストが完了したゲームイメージのタグを運用部に伝達する。運用部は図2に示す更新手順でゲームアプリを更新する。

図2 更新手順
図の説明テキスト
  1. LB メンバをゲームサーバ 3 及びゲームサーバ 4 だけにする。
  2. ゲームサーバ 1 及びゲームサーバ 2 上で次の(a)〜(c)を実施する。
    (a) 稼働しているコンテナを終了する。
    (b) 開発部から伝達を受けたタグのゲームイメージを,レジストリサーバから取得する。
    (c) 当該ゲームイメージを基にコンテナを起動する。
  3. LB メンバをゲームサーバ 1 及びゲームサーバ 2 だけにする。
  4. その後,4時間経過して異常がなければ,ゲームサーバ 3 及びゲームサーバ 4 に対し,上記 2.の(a)〜(c)を実施する。
  5. LB メンバをゲームサーバ 1〜4 にする。

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

運用部のHさんは,3月6日に開発部からタグ367を伝達され,同日10時に更新手順を開始し,3.までを終えた。同日13時40分,Hさんは,ゲームサーバ1が応答していないことに気付き,LBメンバをゲームサーバ3及びゲームサーバ4だけにした後,ゲームサーバ1上のコンテナを確認した。Hさんが確認したコンテナの一覧を表2に示す。

表2 ゲームサーバ1上のコンテナの一覧
図の説明テキスト
コンテナ ID タグ 実行コマンド 状態 利用ポート
(省略) 351 /app/game.out 3月6日 10時 05分に終了 80/tcp
(省略) 376 /app/game.out 3月6日 10時 14分に起動 80/tcp

Hさんはゲームサーバ1での更新の際に誤ってタグ a のゲームイメージを取得したことに気付いた。またゲームサーバ1で稼働中のコンテナ内では game.out 及び prog というプロセスが実行中であったが,ゲームサーバ2で稼働中のコンテナ内には prog というプロセスがなかったので,開発部に確認した。その結果,図3に示す内容が判明した。

図3 判明した内容
図の説明テキスト

・タグ a のゲームイメージに, prog という名称のファイルは含まれていない。
・prog プロセスの実行ファイルのハッシュ値が, セキュリティベンダーの公開するマルウェアデータベースに登録されている。
・当該ゲームイメージに含まれる OSS の一つに, コードZ という悪意のあるプログラムコードが混入しているとの情報があった。当該ゲームイメージを調査したところコードZを発見した。コードZは, 呼出し元プログラムの起動から3時間後に呼出し元プログラムの処理を中断させ, 同時に, 攻撃者が用意した外部のサーバに接続して, 指示された任意の命令を実行する。

Hさんは,ゲームサーバ1上でコードZが実行されたと判断し,運用部のK主任に報告した。次は,その時のHさんとK主任との会話である。

Hさん:prog という名称のファイルはタグ a のゲームイメージに含まれていないのに,どうして prog というプロセスが実行中だったのでしょうか。
K主任:①攻撃者がコードZに指示した命令が原因だと考えられます。
Hさん:初初動対応としては,ゲームサーバ1で,まず,詳細調査に用いるOSのメモリダンプを取り,次に,稼働中のコンテナを終了すればよいでしょうか。
K主任:コンテナを終了すると,メモリ上のデータに加えて b も消失してしまいます。コンテナは終了するのではなく,一時停止してください。
Hさん:分かりました。初動対応でそのほかにすべきことはありますか。
K主任:過去に,②対策情報が公開される前の脆弱性を悪用した攻撃がコンテナを介して行われ,コンテナエスケープと呼ばれるホストへの侵害が発生した事例があったので,注意してください。それから,ほかのサーバへの被害も調査してください。

Hさん:分かりました。

〔各サーバ上での被害の調査〕

Hさんが同日の業務用FWのログを確認したところ,ゲームサーバ1はインターネット上のIPアドレスa3.b3.c3.d3及びレジストリサーバに対してだけ接続していた。そこでHさんは,同日のレジストリサーバのHTTP及びHTTPSのアクセスログを確認した。Hさんが確認したアクセスログを,表3に示す。

表3 レジストリサーバのHTTP及びHTTPSのアクセスログ(抜粋)
図の説明テキスト
項番 ソース 時刻 メソッド リクエスト URI ステータス
1 ゲームサーバ1 10:10 GET /v2/gameapp/manifests/376 200 OK
2 ゲームサーバ2 10:24 GET /v2/gameapp/manifests/367 200 OK
3 ソースコードサーバ 11:29 PUT /v2/gameapp/manifests/379 201 Created
4 ゲームサーバ1 13:24 GET /index.html 404 Not Found
5 ゲームサーバ1 13:24 GET /v2/_catalog 200 OK
6 ゲームサーバ1 13:25 GET /v2/gameapp/tags/list 200 OK
7 ゲームサーバ1 13:26 GET /v2/gameapp/manifests/379 200 OK
8 ゲームサーバ1 13:26 PUT /v2/gameapp/manifests/379 201 Created
9 ゲームサーバ1 13:27 PUT /v2/gameapp/manifests/378 201 Created
⋮ ⋮ ⋮ ⋮ ⋮ ⋮
46 ゲームサーバ1 13:45 PUT /v2/gameapp/manifests/341 201 Created

注記1 1件のゲームイメージの登録又は取得のリクエストに対して複数行のログが出力されるが,各リクエストに対してログ1行だけを記載している。
注記2 項番8から46まで,リクエストURIの末尾の数値が1ずつ減っていくログが連続していた。
注記3 項番46より後のログは存在しなかった。

Hさんが調査したところ,項番1及び2は,Hさんがゲームイメージを取得した時のもの,項番3は,開発部の従業員がソースコードをソースコードサーバに格納したことによって,自動的にタグ379のゲームイメージが生成され,登録された時のものであると特定された。一方,項番4以降については,開発部及び運用部ともに誰も該当する操作を行っていなかったので,K主任に相談した。次は,その時のK主任とHさんとの会話である。

K主任:時刻から考えて,攻撃者に指示された命令によってコードZが送信したリクエストと考えるとつじつまが合いそうです。攻撃者は当社のネットワーク構成について詳細を知らずに項番4のアクセスをし,③そのレスポンスの内容から,レスポンスを返したホストはコンテナイメージが登録されているサーバだと判断したようです。項番5及び項番6は,レジストリサーバに登録されたコンテナイメージを列挙するAPI呼出しを行っています。それ以降のログを見ると,レジストリサーバ上のタグ341から379までのゲームイメージが上書きされた可能性があります。したがって,ゲームサーバ3及びゲームサーバ4に対して更新を行うべきではありません。

Hさん:分かりました。

その後,K主任は,被害の拡大を防止するために,Hさんに④レジストリサーバへの対処を指示した。

〔再発防止及び被害低減のための対策〕

初動対応と原因分析を終えたHさんは,再発防止及び被害低減のための対策を検討することにし,K主任に相談した。次は,その時のHさんとK主任との会話である。

Hさん:調査では,ゲームサーバ1は攻撃者からの攻撃の指示をIPアドレスcのサーバから受け取っていたことが分かりました。dはマルウェア感染によって攻撃者の制御下となったコンピュータで構成されますが,ゲームサーバ1もそのままにしておくとdに加えられてしまっていたかもしれません。そこで,IPアドレスcへの接続を業務用FWで拒否するのはどうでしょうか。

K主任:それだけでは,攻撃者が同種の方法で攻撃の指示をしたときに⑤対策として有効でない場合があります。再検討してください。

Hさん:分かりました。

K主任:レジストリサーバについての対策は,どうするつもりですか。

Hさん:REST APIによるゲームイメージの新規登録及び上書き登録の呼出しについて,呼出し元IPアドレスをeのIPアドレスからだけに制限するというのはどうでしょう。

K主任:それは効果がありますね。

Hさんは,ほかにも必要な再発防止及び被害低減のための対策を検討した。

設問と解答・解説

(1)配点 6点

本文中及び図3中の a に入れる適切な番号を答えよ。

模範解答

376

採点基準

正確性(内容)6点
  • 6点: 「376」と正確に解答している。
  • 3点: 不要な文字が含まれているが、対象となる数値は含まれている。
  • 0点: 無解答、または上記以外。

解説

空欄aに入る数値

本文やネットワーク構成図などから、通信に使用されているポート番号やプロトコル番号を特定する設問です。

  • 該当の箇所において、使用されている設定値として 376 が入ります。
  • 攻撃に関連する通信など、インシデントハンドリングでは具体的な通信の情報を正確に把握することが求められます。

高得点のポイント

  • 本文・図中の情報から正確な数値を抜き出していること。
(2)配点 6点

本文中の下線①について,どのような命令か。30字以内で答えよ。

模範解答

progというファイルをダウンロードし,実行する命令

採点基準

知識・理解度(内容)3点
  • 3点: 「progというファイルをダウンロードする」旨が明確に記述されている。
  • 2点: ファイルのダウンロードについては触れられているが、対象の特定が不十分である。
  • 1点: 外部との通信については触れられているが、ダウンロードの言及がない。
  • 0点: 無解答、または全く無関係の記述。
論理性(構造)3点
  • 3点: ダウンロードした上で「実行する」命令であることが論理的に結びつけて記述されている。
  • 2点: 実行することには触れているが、ダウンロードとの関係性がやや曖昧である。
  • 1点: 実行に関する言及が不明確である。
  • 0点: 無解答、または上記以外。

解説

下線①の命令の内容

マルウェアの侵入経路や実行プロセスに関する理解を問う設問です。

  • 攻撃者は外部のサーバなどから不正なプログラムである prog を ダウンロード します。
  • その後、当該ファイルに対して実行権限を付与し、実行 する命令を発行しています。

高得点のポイント

  • 「progというファイルをダウンロードする」というアクションが記載されていること。
  • ダウンロードしたファイルに対して「実行する」命令であることが説明できていること。
(3)配点 6点

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

模範解答

一時ディレクトリ内のログ

採点基準

正確性(内容)6点
  • 6点: 「一時ディレクトリ内のログ」と正確に解答している。
  • 3点: 「ログ」など一部の要素のみを解答している。
  • 0点: 無解答、または上記以外。

解説

空欄bに入る字句

コンテナ環境におけるインシデントハンドリングで、被害調査のために保全すべき情報を答える設問です。

  • コンテナは再起動等によって内部のデータが揮発する特性があります。
  • 攻撃の痕跡を調査するためには、一時ディレクトリ内のログ など、消失する可能性のある情報を速やかに保全することが重要です。

高得点のポイント

  • 本文から「一時ディレクトリ内のログ」という字句を過不足なく抜き出していること。
(4)配点 6点

本文中の下線②が示す攻撃の名称を答えよ。

模範解答

ゼロデイ攻撃

採点基準

正確性(内容)6点
  • 6点: 「ゼロデイ攻撃」と正確に解答している。
  • 3点: 意味合いは同じだが、用語の表記ゆれがある。
  • 0点: 無解答、または上記以外。

解説

下線②の攻撃名称

ソフトウェアの脆弱性を突く攻撃の名称を答える設問です。

  • ソフトウェアに脆弱性が発見され、ベンダーから修正プログラム(パッチ)が提供される前に、その脆弱性を悪用して行われる攻撃を ゼロデイ攻撃 と呼びます。
  • 情報セキュリティ10大脅威にもランクインする、サプライチェーンやソフトウェアの弱点を突いた代表的な脅威です。

高得点のポイント

  • セキュリティ用語である「ゼロデイ攻撃」を正確に記述できていること。

設問1(2)は,正答率が平均的であったが,マルウェアであるprogがコンテナ中で実行されるに至った経緯を踏まえていない解答が散見された。C&C型のマルウェアによる攻撃の一連の流れについて理解を深めるとともに,コンテナ環境であっても被害が発生しうることに留意してほしい。

設問2

(1)配点 5点

本文中の下線③について,レスポンスに含まれる内容のうち,攻撃者がレジストリサーバと判断するのに用いたと考えられる情報を,25字以内で答えよ。

模範解答

レジストリサーバに固有のレスポンスヘッダ

採点基準

知識・理解度(内容)3点
  • 3点: 「レジストリサーバ」特有の情報であることが明確に記述されている。
  • 2点: サーバを特定する情報であることはわかるが、レジストリサーバの明示がない。
  • 1点: 内容が抽象的で対象が不明確である。
  • 0点: 無解答、または上記以外。
論理性(構造)2点
  • 2点: 「レスポンスヘッダ」などの応答情報に基づくことが適切に記述されている。
  • 1点: レスポンスに関する言及があるが、不正確または不十分である。
  • 0点: 無解答、または上記以外。

解説

攻撃者が判断に用いた情報

攻撃者がネットワーク上で稼働しているサーバの役割を特定した方法について問う設問です。

  • 攻撃者は対象へ通信を試み、その応答情報を分析することでシステムを特定します。
  • 特にHTTPレスポンスなどに含まれる、レジストリサーバ に固有の レスポンスヘッダ の内容を確認することで、サーバの用途を特定したと考えられます。

高得点のポイント

  • 特定の対象が「レジストリサーバ」であることを明記していること。
  • 手がかりとした情報が「レスポンスヘッダ」であることを記述できていること。
(2)配点 5点

本文中の下線④について,行うべき対処を,25字以内で答えよ。

模範解答

上書きされたイメージを削除する。

採点基準

知識・理解度(内容)3点
  • 3点: 対処の対象が「上書き(改ざん)されたイメージ」であることが明確に示されている。
  • 2点: 不正なイメージへの言及はあるが、具体的な状態(上書き等)の記述が不足している。
  • 1点: 対象の特定が曖昧である。
  • 0点: 無解答、または上記以外。
論理性(構造)2点
  • 2点: 「削除する」などの具体的な対処方法が論理的に記述されている。
  • 1点: 対処の内容が曖昧である。
  • 0点: 無解答、または上記以外。

解説

行うべき対処

不正に改ざんされたコンテナイメージに対して、被害を食い止めるための具体的な対処を問う設問です。

  • レジストリサーバに悪意のあるイメージが登録されてしまった場合、それが他のサーバへ展開されることを防ぐ必要があります。
  • そのため、速やかに 上書きされたイメージ を特定し、削除する などの対処を行うべきです。

高得点のポイント

  • 対処の対象が「上書き(改ざん)されたイメージ」であることが記載されていること。
  • その対象に対して「削除する」などの適切な対応をとることが記述できていること。
(1)配点 5点

本文中の c に入れる適切な IP アドレスを答えよ。

模範解答

a3.b3.c3.d3

採点基準

正確性(内容)5点
  • 5点: 「a3.b3.c3.d3」と正確に解答している。
  • 3点: IPアドレスの形式として近似しているが、一部誤りがある。
  • 0点: 無解答、または全く異なる解答。

解説

空欄cに入るIPアドレス

ネットワーク構成やアクセス制御の要件に基づいて、適切なIPアドレスを特定する問題です。

  • 本文の指定やネットワーク図から、対象となる通信機器等のIPアドレスを正確に読み取ります。
  • 該当箇所に入る正しいIPアドレスは a3.b3.c3.d3 です。

高得点のポイント

  • 本文の指定箇所から対象となる機器のIPアドレスを正確に特定し記述していること。
(2)配点 3点

本文中の d に入れる適切な字句を,解答群の中から選び,記号で答えよ。

ア. ゼロトラストネットワーク
イ. ダークウェブ
ウ. ハニーポット
エ. ボットネット

模範解答

選択肢エ: ボットネット

解説

空欄dに入る字句

マルウェアに感染した端末群が形成するネットワークの名称を問う設問です。

  • 多数の感染コンピュータがC&Cサーバ等からの遠隔操作を受け、一斉にDDoS攻撃やスパム送信などを行うために構成されるネットワークを ボットネット と呼びます。

各選択肢の解説

  • ア (ゼロトラストネットワーク): 全ての通信を信頼せずに検証を行うセキュリティモデルの概念であり、誤りです。
  • イ (ダークウェブ): 特殊なソフトウェアを用いてのみアクセスできる匿名性の高いネットワークであり、誤りです。
  • ウ (ハニーポット): 攻撃を意図的に受け入れ、攻撃手法や傾向を観察するためのおとりシステムであり、誤りです。
  • エ (ボットネット): 悪意あるプログラムに感染した多数のコンピュータで構成されるネットワークであり、正解です。
(3)配点 5点

本文中の下線⑤について,有効ではないのはどのような場合か。25字以内で答えよ。

模範解答

別のIPアドレスを攻撃者が用いる場合

採点基準

知識・理解度(内容)3点
  • 3点: 攻撃者が「別のIPアドレス」を用いる状況を指摘できている。
  • 2点: IPアドレスの変更に触れているが、記述が不十分である。
  • 1点: 攻撃元の変化について抽象的な言及に留まる。
  • 0点: 無解答、または無関係な記述。
論理性(構造)2点
  • 2点: 対策が有効に機能しなくなる条件として論理的に記述されている。
  • 1点: 文脈のつながりにやや不自然な点がある。
  • 0点: 無解答、または論理性に欠ける。

解説

特定の対策が有効ではない場合

IPアドレスに基づくアクセス制御やブラックリスト化といった対策の限界を問う設問です。

  • 攻撃元のIPアドレスを遮断する対策は、その同一アドレスからの再攻撃を防ぐ目的では有効です。
  • しかし、攻撃者が踏み台サーバを変更するなどして 別のIPアドレス を使用して攻撃を行ってきた場合には、既存の遮断設定をすり抜けられてしまいます。

高得点のポイント

  • 攻撃者が「別の(新しい)IPアドレス」を使用するという状況が記載されていること。
  • IPアドレスが変わることで対策が回避されてしまう論理が明確に示されていること。
(4)配点 3点

本文中の e に入れる適切な機器名を,解答群の中から選び,記号で答えよ。

ア. LB
イ. PC
ウ. 業務用 FW
エ. ゲームサーバ 1〜4
オ. ソースコードサーバ
カ. 本番 FW
キ. レジストリサーバ

模範解答

選択肢オ: ソースコードサーバ

解説

空欄eに入る機器名

ソフトウェア開発における継続的インテグレーション(CI)の流れの中で、レジストリサーバへイメージを登録する役割をもつ機器を特定する設問です。

  • CIのパイプラインでは、開発者が記述したコードをもとにビルドプロセスが実行され、コンテナイメージが作成されます。
  • このイメージをレジストリサーバにプッシュ(登録)する役割を担うのは ソースコードサーバ です。

各選択肢の解説

  • ア (LB): ロードバランサは通信の負荷分散を行う機器であり、誤りです。
  • イ (PC): 開発者PCから直接登録するのではなく、CI環境を経由するため誤りです。
  • ウ (業務用 FW): ネットワークのアクセス制御を行うファイアウォールであり、誤りです。
  • エ (ゲームサーバ 1〜4): 登録されたイメージを取得(プル)して実行する側のサーバであり、誤りです。
  • オ (ソースコードサーバ): CIを担い、ビルド済みのイメージをレジストリサーバに登録する機器であり、正解です。
  • カ (本番 FW): アクセス制御を行う機器であり、誤りです。
  • キ (レジストリサーバ): イメージが登録される宛先のサーバであり、登録元ではないため誤りです。

設問3(4)は,正答率が平均的であったが,ソースコードサーバがレジストリサーバにゲームイメージを登録することを見落としている解答が一部に見られた。本問に示した,継続的インテグレーションと呼ばれる手法は,ソフトウェア開発の現場で広く活用されている。安全に運用できるように,よく理解しておいてほしい。

Spineチーム