【緊急告知】すべてのバージョンの OpenPNE 3 における、サーバ上ファイル漏洩の脆弱性についての注意喚起 (OPSA-2012-002)
12 / 03 月曜日 2012
すべてのバージョンの OpenPNE 3 にはサーバ上ファイルの漏洩に繋がる脆弱性が存在します。この脆弱性は OpenPNE 3 が使用している Web アプリケーションフレームワークの symfony において発覚した、以下の脆弱性 (CVE-2012-5574) に由来するものです。
- Security release: symfony 1.4.20 released – Symfony
- http://symfony.com/blog/security-release-symfony-1-4-20-released
- Secunia Advisory SA51372 : Symfony Arbitrary File Disclosure Vulnerability
- http://secunia.com/advisories/51372/
本脆弱性は、 OpenPNE 3 およびバンドルプラグインのソースコードに変更を加えずに運営している場合においては、影響が極めて限定的なものとなるため、緊急の対策版リリースは実施しません (脆弱性への修正は通常リリースにておこなう予定です)。
しかしながら、サイトの運用状況や、ソースコードの変更内容によっては、本脆弱性により無視のできない影響を受けることがあります。 OpenPNE 3 によるサイトを運営する方は、本エントリの内容を確認し、脆弱性によって発生するリスクを受容できないと判断できる場合は、早急な対策をおこなうことを強く推奨します。
本問題について
影響を受けるシステム
「画像以外のファイルアップロード機能を、 OpenPNE 3 のソースコードを改変するか、もしくはプラグインを導入することによって追加しているサイト」 (以下、「影響を受けるシステム A」と呼称します) は、本脆弱性によって甚大な影響を受ける可能性があります。
また、以下の OpenPNE を使用しているサイト (以下、「影響を受けるシステム B」と呼称します) は、本脆弱性による限定的な影響を受ける可能性があります。
- OpenPNE 3.8.3 以下、 OpenPNE 3.6.6 以下、 OpenPNE 3.4.21 以下、 OpenPNE 3.2.7.6 以下、 OpenPNE 3.0.8.5 以下のすべてのバージョン
「影響を受けるシステム B」において、画像のファイルアップロード機能を有するプラグインを使用している場合、その機能も同様に限定的な影響を受けます。バンドルプラグインのなかで該当するものは以下の通りです。
- opAlbumPlugin
- opCommunityTopicPlugin
- opDiaryPlugin
- opMessagePlugin
脆弱性の説明
symfony にて提供されているフォームフレームワークには、ファイルの送信をおこなう際のリクエストの検証に不備があり、特定の形式のパラメータを含むことで、 Web アプリケーションが設置されているサーバ上のファイル をアップロードすることができてしまうという問題があります。
この実装上の問題を悪用し、 Web サーバの権限で読み込み可能な任意のファイルを Web サーバの公開領域にアップロードさせることで、攻撃者はそのファイルの内容 (データベースの接続情報など) を取得することができます。
OpenPNE では、このフォームフレームワークを使用してフォームの構築や入力値の検証をおこなっています。したがって、ファイルのアップロードを受け付けるほとんどすべての場面において本脆弱性の影響を受けることになります。
想定される影響
- 「影響を受けるシステム A」においては、本脆弱性によって、 Web サーバの権限によって読み取り可能なサーバ上のすべてのファイルの情報 (データベースの接続情報なども含まれます) を悪意のある攻撃者によって不正に取得される危険性があります
- 「影響を受けるシステム B」においては、本脆弱性によって、 Web サーバの権限によって読み取り可能な サーバ上のすべての画像ファイルの情報を悪意のある攻撃者によって不正に取得される危険性があります
このうち、「影響を受けるシステム A」に関する影響は甚大であると考えられます。
一方で、「影響を受けるシステム B」については、影響はほとんど限定的です。 OpenPNE 自身に同梱された画像ファイルは既に世間一般に公開されているものです。また、画像ファイルアップロード機能によりアップロードされた画像自体には公開範囲の制限がありません。そのため、この脆弱性を利用することで攻撃者が新たに取得可能になる情報はないと考えられます。ただし、運用上の都合等によって サーバ上に秘密の画像を設置しているようなケースでは、本脆弱性によりその画像を取得される危険があります。
対策方法
以下のいずれかの対応をおこなうことで、本脆弱性の影響を防ぐことができます。
- 1. symfony の配布するパッチを適用する
- 2. ファイルアップロードが可能な機能に対するアクセスを、 Web サーバの設定等によって制限する
ただし、「2. ファイルアップロードが可能な機能に対するアクセスを、 Web サーバの設定等によって制限する」については、お使いのプラグイン等によって設定方法が異なるため、ここでは、「1. symfony の配布するパッチを適用する」の対応についてのみ説明いたします。
パッチの適用方法
- 1. http://trac.symfony-project.org/changeset/33598?format=diff&new=33598 から入手できる対策パッチを、 OpenPNE を設置しているディレクトリにアップロードします
- 2. SSH でログインし、 1. のディレクトリに移動します
- 3. 以下のコマンドを実行します
$ patch -d ./lib/vendor/symfony -p3 < パッチファイル名
セキュリティ上の問題の報告手順について
OpenPNE プロジェクトでは、以下に案内している通り、セキュリティ上の問題の報告を受け付ける窓口 (security@openpne.jp) を用意しています。
セキュリティ上の問題を発見した場合は、通常の公開されたバグ報告の手順を踏むのではなく、 security@openpne.jp に連絡してください。 security@openpne.jp はクローズドなメーリングリストであり、このメーリングリストでおこなわれた脆弱性の詳細情報などのやり取りがそのまま公開されることはありません。