マルウェア機能、ルートキット動作、インシデント被害の判断【情報処理安全確保支援士試験 令和元年度 秋期 午後2 問1 設問1】

情報処理安全確保支援士試験 令和元年度 秋期 午後2 問1 設問1

問1 ソフトウェア開発におけるセキュリティ対策に関する次の記述を読んで、設問1〜4に答えよ。

 S社は、2010年創業の従業員数120名のインターネット広告事業者である。インターネット広告の販売及び効果測定サービスの提供を行っている。S社のサービスは顧客からの評判も良く、登録会員数は2,000社を超えている。

 効果測定サービスは同社のWebサイトのシステム(以下、Sシステムという)で稼働するWebアプリケーションソフトウェア(以下、アプリケーションソフトウェアをアプリといい、Sシステムの主要なWebアプリをアプリQという)によって提供されている。アプリQは、創業時に自社内で開発が始まり、現在も機能追加や改修が継続的に行われており、約3週間に1回、リリースされている。

 S社では、エンジニア5名(以下、開発チームという)が、開発と運用を一体的に行う、いわゆるDevOpsに取り組んでいる。開発チームは、外部クラウドサービスの利用に積極的であり、ソフトウェア開発プラットフォームであるサービスH及びテキスト共有サービスであるサービスGを用いている。サービスHでは、アプリQのソースコードなどのファイルのバージョン管理を行っている。サービスGでは、開発に関する情報をやり取りしている。サービスGは、テキストファイルをアップロードした後、URLを用いて、そのテキストファイルを共有できる。指定した期間を過ぎたテキストファイルを自動的に削除することもできる。

 アプリQは頻繁に更新するので、Webアプリの脆弱性診断を、計画的に実施できず、1年に1回程度の頻度で不定期に行っている。昨年末、スケジュールに余裕がある時期に外部に依頼し実施した際には、SQLインジェクション脆弱性が発見され、改修した。また、Sシステムでは、OS、ライブラリ及びミドルウェア(以下、この三つを併せて実行環境という)を全く更新していないという問題もある。

【Sシステムについて

 アプリQは、W社データセンタ内のサーバA上で稼働している。アプリQはDBMSサービス(以下、アプリQが連携するDBMSサービスをサービスCという)と連携している。サービスCのデータベースには、効果測定サービスに関するデータ及び入会時に登録された会員情報が保存されている。また、サーバAのCPU負荷やメモリの利用状況などをS社開発用LAN上のPCから遠隔監視するツールをサーバA上で稼働させている。このツールの導入を容易にするために、コンテナ技術を用いている。図1は、Sシステムの開発と運用のためのネットワーク構成である。

f:id:aolaniengineer:20200607131316p:plain

 S社開発チームは、9月から試験的に、新アプリ(以下、アプリDという)、及びDBMSサービスであるDBMS-RをサーバA上で稼働させ、利用を開始した。開発チームは、S社開発用LANのPCから、DBMS-Rのデータベースを参照・更新したり、ネットワーク経由で外部からDBMS-Rを通してOSコマンドを実行する機能(以下、遠隔コマンド実行機能という)を利用したりするために、急きょ、サーバAのポート6379/tcpを開放した。表1はサーバAのファイアウォール機能におけるフィルタリングルール(以下、ファイアウォール機能におけるフィルタリングルールをFWルールという)である。

f:id:aolaniengineer:20200607131848p:plain

【インシデントの発生

 10月のある日、サーバAがW社データセンタ内のほかのサーバを探索するアクセスを繰り返しているという連絡をW社から受けた。初期対応をした開発チームのPさんは、サーバAのCPU使用率が100%になっていることから、サーバAがマルウェアに感染したと推測した。

 S社の経営陣は、セキュリティ専門企業U社の情報処理安全確保支援士(登録セキスペ)のB氏にインシデント対応の支援を依頼した。B氏は、状況から、サーバAのストレージを対象としたフォレンジック調査を実施するのがよいと助言した。

【フォレンジック調査結果

 フォレンジック調査によって、サーバAはマルウェアXに感染したことが判明した。U社の過去の解析で、マルウェアXの目的、侵入方法及び機器が図2のとおり特定されており、今回のマルウェアXの活動は図3のとおりであることが判明した。

f:id:aolaniengineer:20200607132522p:plain

f:id:aolaniengineer:20200607132617p:plain

①について、挿入されなかった場合、攻撃者の意図に反して、どのようなことが起こると想定できるか。75字以内で具体的に述べよ。:DBMS-Rにおける同じ脆弱性を悪用されて、別のマルウェアXまたはほかのマルウェアに再度感染してしまい、マルウェアXの動作が阻害される。

①の記述「表1の先頭に、ポート6379/tcpへのパケットを破棄するルールが挿入された」 について、これが何を目的にするものなのかを考えましょう。

表1(サーバAのFWルール)には、既にポート6379/tcpに関して項番3の「送信元:全て、宛先:a1.b1.c1.d1、ポート:6379/tcp、動作:許可」で定義されていて、マルウェアXはこのルールで許可された通信としてサーバAに侵入しています。

FWルールの先頭にルールを追加するということは、注記1「項番が小さいルールから順に、最初に一致したルールが適用される」にあるように、項番3よりも先にルールが適用されることになります。

結果として、ポート6379/tcpへのパケットは破棄されることになります。

これにより、サーバAに対し、別のマルウェアXなどが侵入し感染することはなくなります。

これが何を意味するのかというと、サーバAでは既にマルウェアXが活動を開始していて、マルウェアXからすると、他のマルウェアXなどにより自身の動作を阻害するようなものは排除したいと考え、このような作業を行うということです。

マルウェアは、目的の作業とは別に発見されないように痕跡を消す機能や、感染拡大するようなマルウェアでは特に、感染したサーバが再度感染して本来の目的の作業の妨げにならないような処理を組み込んでいます。

 ルートキットYは、マルウェアXの活動を隠蔽する。例えば、Linuxにおけるプロセス監視ツールである(α:top)コマンドは、プロセスIDが123の場合、(β:ライブラリ)関数を通してディレクトリ(γ:/proc/123)内のファイルにアクセスすることによって(β:ライブラリ)関数が書き換えられると、(α:top)コマンドの出力に暗号資産の採掘用プログラムのプロセスが表示されなくなる。(α:top)コマンドの通常の動作とルートキットYをインストールした後の動作を図4に示す。

f:id:aolaniengineer:20200607133010p:plain

α:top

Linuxにおいて、実行中のプロセスをCPU使用率、メモリ使用率、優先度などの情報と一覧表示するものが、topコマンドです。

β:ライブラリγ:/proc/123

topコマンドは、ライブラリ関数を通してディレクトリ/proc/(プロセスID)内のファイルにアクセスして、当該プロセスの状態を参照します。

 ネットワーク経由でサーバA上のDBMS-Rへのアクセスは、S社のPCからのアクセス以外はマルウェアXによるアクセス1回だけであった。特に、遠隔コマンド実行機能による不審なコマンドの実行は、マルウェアXによるものだけであった。また、サーバA上のSSHサービスへの接続もS社のPCからのアクセスだけであった。

 ②サーバAからの会員情報の漏えいはなかったとS社は結論付けた

【出典:情報処理安全確保支援士試験 令和元年度 秋期 午後2問1】

https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2019h31_2/2019r01a_sc_pm2_qs.pdf

 ②について、結論に至った根拠を100字以内で述べよ。:マルウェアXには、暗号資産の採掘プログラムによる採掘演算結果以外の情報を外部に送信する機能はなく、マルウェアX以外による遠隔コマンド実行及びSSHサービスへの接続がなかったから。

マルウェアXの機能について、図2(マルウェアXの目的、侵入方法及び機能)に、「暗号資産の採掘用プログラムの機能:採掘演算結果だけを外部の特定のサーバに送信する機能」とあるように、採掘演算結果以外のデータを送信する機能はありません。

また、サーバAへのアクセスは、S社のPCとマルウェアX以外には見られず、マルウェアXの特定の動作以外、不正操作や不正アクセスはなかったと判断できます。