PowerCMS の XML-RPC API における OS コマンド・インジェクションへの対応
10月22日にご案内いたしました下記の XML-RPC API における OS コマンド・インジェクションの脆弱性について、PowerCMS 製品としては対策を完了していますが、対策を行う前に不正アクセスを受けている場合の調査・対応についてお知らせいたします。
PowerCMS 5.19 / 4.49 / 3.295 向け修正ファイルについて (XML-RPC API における OS コマンド・インジェクションの脆弱性対策)
10月22日にご案内いたしました通り、PowerCMS 5.19 / 4.49 / 3.295 以下のバージョンについてXML-RPC API における OS コマンド・インジェクションの脆弱性を確認しております。 まだ対策を行われていない場合には下記ページの内容を参照して早急に対策を行ってください。
また、11月25日、JVN に掲載されました内容も本件の脆弱性の件になります。XML-RPC API 機能について新たに脆弱性が見つかったわけではございませんので誤解されませんようお願いいたします。
OS コマンド・インジェクションの脆弱性
OS コマンド・インジェクションの脆弱性について、脆弱性を利用して直接攻撃することもできますが、こちらの脆弱性をついた内容としては主に下記が行われることを確認しております。
- バックドアを仕掛けられるケース
- ファイルの内容が書き換えられるケース
これらにつきましては、PowerCMS の脆弱性を対策する前に不正アクセスが行われている場合、脆弱性に対策した後もリスクが残り続けますので、脆弱性への対策とは別に調査、対策が必要です。
バックドアを仕掛けられるケースについて
バックドアを仕掛ける方法として、不正なファイルがアップロードされることが多い傾向にあります。不正なファイルについては、攻撃者によって内容が異なりますが、以下は実際に報告を頂いた内容です。
不正なファイルのファイル名の例
- DIZ.php
- DKIZ.php
- ws.php
- file.php
- upload.php
- wp-login.php
- fox.php
- fileupload.php
不正なファイルがアップロードされる場所の例
- ドキュメントルート以下
- ドキュメントルートの一つ上の階層
- PowerCMS のアプリケーションディレクトリ以下
- PowerCMS のアプリケーションディレクトリの一つ上の階層
不正なファイルは主にウェブからアクセス可能な場所に配置されることが多く、上記のようなファイル、また覚えのない PHP ファイルなどのプログラムや .htaccess が、アップロードされていないか確認が必要です。 実際に上記など不正なファイルが見つかった場合、その不正なファイルの更新日を元に、そのファイルの更新日から脆弱性の対策を行うまでの期間は攻撃を受けた可能性があると考えて、 その期間の更新日を持つ PHP ファイルなどのプログラムがアップロードされていないか確認が必要です。
このようなファイルが見つかった場合はすぐに削除してください。 もし可能であれば、不正なファイルを削除する前にファイルの更新日を控えておきますと後の調査に役立てることができます。
また、PowerCMS では DynamicMTML もしくはダイナミックパブリッシングの機能を利用している場合、サーバー上に PHP ファイルを出力しますが、下記の条件に当てはまる PHP ファイルは削除して頂いて問題ございません。
- ウェブサイトパス/templates_c/*.php
- ブログパス/templates_c/*.php
この templates_c
ディレクトリ直下の PHP ファイルはいわゆるキャッシュに相当し、サイトへアクセスすることで作り直されますので、templates_c
ディレクトリ以下の PHP ファイルについては削除して頂いて問題ございません。
templates_c
ディレクトリは DynamicMTML もしくはダイナミックパブリッシングの機能を利用している場合、ウェブサイト/ブログの直下に作成されます。ウェブサイトが複数ある場合、templates_c
ディレクトリも複数ある可能性がございますのでご注意ください。
これらの情報はあくまで一例であり、これらに合致するため問題がある、合致しないため問題がない、というものではございません。
ファイルの内容が書き換えられるケース
ファイルの内容が書き換えられる問題について、PowerCMS の脆弱性に対策することで、脆弱性を利用してファイルの内容を新たに書き換えることは行えなくなりますが、 既に書き替えられてしまったファイルについて調査と対応が必要です。
サイトのコンテンツについて
サイトのコンテンツについて、PowerCMS 管理画面よりすべてのウェブサイト/ブログにて再構築の操作を行ってください。 PowerCMS から出力されるファイルについては、再構築によって出力し直され、ファイルの内容を本来の正常な内容へすることができます。
再構築について、「すべてを再構築」を利用する場合は操作アカウントについてウェブサイト/ブログの権限を確認し、再構築される対象についてご注意ください。
また、テンプレートの公開タイプが「手動」に設定されているものは再構築ウィンドウからの再構築では対象になりません。 「手動」に設定されているテンプレートについてはテンプレートの一覧画面から個別に選択して、「公開」ボタンをクリックして再構築を行うか、テンプレートの編集画面から「保存と再構築」をクリックして再構築を行ってください。
PowerCMS のソースについて
PowerCMS のソースファイルについて書き替えられていないか調査が必要です。
PowerCMS のソースファイルが書き替えれていないかの調査については、PowerCMS のインストールに使ったパッケージ (ZIP アーカイブ) が残っている場合にはその内容と、ファイルの有無や更新日を比較して確認してください。 その際に「バックドアを仕掛けられるケースについて」について、不正なファイルが見つかっている場合、その不正なファイルの更新日に近い更新日を持つファイルについては注意した方がよいです。
また、サーバーについて各種設定ファイルについて書き替えられていないか確認が必要です。 今回の脆弱性をついてサーバーの設定ファイルが書き替えられたケースは確認されていませんが、過去に対策を行った XMLRPC の脆弱性をつかれたケースではサーバーの設定ファイルが書き替えられた事例がございます。
ウェブサーバーのアクセスログの内容を調査する
XML-RPC API の脆弱性をついた不正アクセスが行われたか確認することは難しいですが、 ウェブサーバーのアクセスログの内容を元に不審なアクセスがあったか、バックドアが利用されているか、確認が行えます。
- mt-xmlrpc.cgi への POST アクセスがあるか (※)
- 「バックドアを仕掛けられるケースについて」で見つかった不正なファイルへアクセスがあるか
※ PowerCMS に環境変数 XMLRPCScript が設定されている場合、mt-xmlrpc.cgi をリネームして利用されている可能性がありますので、リネーム後のファイル名でアクセスログの内容をご確認ください。
「1. mt-xmlrpc.cgi への POST アクセス」がある場合、それらの全てが不正アクセスとは限りませんが、そのようなアクセスがある場合は「バックドアを仕掛けられるケース」「ファイルの内容が書き換えられるケース」について、その日付以降の更新日を持つファイルが存在するか調査を行うことをおすすめいたします。