-オープンソースのSNSエンジン OpenPNEプロジェクト-

【緊急リリース】OpenPNE 3 とバンドルプラグインに存在する、権限確認不備に関する複数の問題のお知らせ (OPSA-2011-001)

04 / 21 木曜日 2011

OpenPNE 3 といくつかのバンドルプラグインには、権限確認不備に関する複数のプライバシー上の問題が存在します。

本日(04/21)、この問題の対策版リリースを、 OpenPNE 3 と以下のバンドルプラグインに対しておこないましたので、内容を確認のうえバージョンアップまたはパッチの適用をお願いいたします。

  • opAshiatoPlugin
  • opAlbumPlugin
  • opCommunityTopicPlugin
  • opDiaryPlugin
  • opFavoritePlugin
  • opMessagePlugin
  • opOpenSocialPlugin
  • opRankingPlugin

本問題について

影響を受けるシステム

  • OpenPNE 3.0.8.3 以下、 3.2.7.4 以下、 3.4.11 以下、 3.6beta8 以下を利用しており、次の条件のうちいずれかを満たすサイト
    • プロフィール項目の「誕生日」を利用している
    • プロフィール項目の「自己紹介」を利用しており、かつ、公開範囲設定を「メンバー選択」にしているか、公開範囲設定が「固定」で「デフォルト値」を「全員に公開」以外にしている(※)
  • opAshiatoPlugin 0.8.0 以下、 0.9.0 以下、0.9.1.1 以下が有効なサイト
  • opMessagePlugin 0.8.2.3 以下、 0.9.1 以下が有効なサイト
  • opOpenSocialPlugin 0.9.9.1 以下、 1.0.4.1 以下、 1.2.2 以下、 1.3.1 以下を利用しており、プロフィール項目の「誕生日」が有効なサイト
  • opCommunityTopicPlugin 0.9.8 以下、 1.0.1 以下が有効なサイト
  • opDiaryPlugin 1.0.0 以下、 1.2.0 以下、 1.3.1 以下が有効なサイト
  • opAlbumPlugin 0.9.4 以下が有効なサイト
  • opFavoritePlugin 0.8.0.1 以下、 0.9.0.1 以下、 1.0.0.2 以下が有効で、(※)と同じ条件を満たしているサイト
  • opRankingPlugin 0.8.0 以下、 1.0.0 以下が有効で、(※)と同じ条件を満たしているサイト

概要

OpenPNE 3 やバンドルプラグインの特定箇所における、権限の確認に不備があったために、以下のようなプライバシー上の問題が生じていました。

  • 特定の URL にアクセスすることで、他人についているあしあとの一覧が閲覧できていた
  • opOpenSocialPlugin で提供される Person API が誕生日・年齢の公開範囲に従っていなかった(非公開設定であっても出力していた)
  • コミュニティトピック検索において、誤った検索条件を指定していたために、非公開のコミュニティトピックが含まれているなど、適切でない検索結果になっていた
  • SNS のメンバーでなくても opDiaryPlugin, opAlbumPlugin の特定のログイン後ページが閲覧できていた
  • アクセスブロックされていてもアルバムを見ることができていた
  • アクセスブロックされていても特定の操作をおこなうことでメッセージを送信できていた
  • メンバー検索やランキング、お気に入り関連画面において、年齢や自己紹介といった一部のプロフィール項目の公開範囲が適切に考慮されていなかった

想定される影響

条件を満たすサイトにおいて、利用者が公開を希望していない特定の情報が、権限を満たさない場合でも知られてしまうことがあります。

また、 opMessagePlugin においては、アクセスブロックされていてもメッセージの送信が可能であるために、受信者が嫌がらせ等のメッセージを拒否できない状態に陥ってしまうことがあります。

対応方法・回避方法

対応方法については、本エントリの「本問題への対応方法」をご覧ください。

回避方法

  • 影響を受けるプラグインを有効にしているが、実際にはそのサイトで利用していない場合、当該プラグインを無効にすることで一時的にこの問題を回避することができます
  • OpenPNE 3 が抱える問題については、プロフィール項目の「誕生日」や「自己紹介」を削除することでこの問題を回避することができます
  • opFavoritePlugin や opRankingPlugin が抱える問題については、プロフィール項目の「自己紹介」を削除することでもこの問題を回避することができます

なお、プロフィール項目を削除してしまうと、そのプロフィール項目に対するユーザの入力値も削除されてしまうため、この対応を採る場合、充分に検討したうえで実施してください。

本問題への対応方法

「影響をうけるシステム」で示した条件を満たすすべてのサイトは、以下の対応を実施してください。

なお、 opOpenSocialPlugin を利用している場合は、本エントリ内「opOpenSocialPlugin の修正適用に関する注意事項」もご確認ください。

OpenPNE 3

対策版へのマイナーバージョンアップもしくは修正パッチの適用を実施してください。

※以下のバージョンでは、本脆弱性への対応のほかに、 PHP 5.3.4 以降で一部のプラグインパッケージが導入できなかったバグへの対応もおこなわれています。これについては別途補足エントリにて説明いたします。

OpenPNE 3.6beta9
[.zip 版ダウンロード] [修正パッチ]
OpenPNE 3.4.11.1
[.zip 版ダウンロード] [修正パッチ]
OpenPNE 3.2.7.5
[.zip 版ダウンロード] [修正パッチ]

OpenPNE 3.0.8.4
[.zip 版ダウンロード] [修正パッチ]

OpenPNE3本体のマイナーバージョンアップを行うとバンドルされている全てのプラグインも更新されます。

マイナーバージョンアップ手順

パッケージに同梱されているバージョンアップ手順書に記載されている通りに作業を実施してください。

各バージョンのマイナーバージョンアップ手順書は以下からも確認することができます。

パッチ適用手順

1. OpenPNEを設置しているディレクトリにパッチファイルをアップロードします
2. SSHでログインし、1 のディレクトリに移動します
3. 以下のコマンドを実行します

$ patch -p1 < パッチファイル名

4. 以下のコマンドを実行します

$ ./symfony openpne:migrate

OpenPNE プラグイン

OpenPNE 3 本体のマイナーバージョンアップをおこなうとバンドルプラグインのバージョンアップも自動的におこなわれます。

そのため、バンドルプラグインについては個別にバージョンアップする必要はありません。

今回対策されたプラグインのうち、バンドルされていないバージョンを利用しているなどの理由により、自動的にバージョンアップがおこなわれない場合、各プラグインのリリース情報を参考に更新をおこなってください。

opAshiatoPlugin
opAshiatoPlugin-0.8.0.1
opAshiatoPlugin-0.9.0.1
opAshiatoPlugin-0.9.1.2
opAlbumPlugin
opAlbumPlugin-0.9.3.1
opAlbumPlugin-0.9.4.1
opCommunityTopicPlugin
opCommunityTopicPlugin-0.9.8.1
opCommunityTopicPlugin-1.0.1.1
opDiaryPlugin
opDiaryPlugin-1.0.0.1
opDiaryPlugin-1.2.0.1
opDiaryPlugin-1.3.1.1
opFavoritePlugin
opFavoritePlugin-0.8.0.2
opFavoritePlugin-0.9.0.2
opFavoritePlugin-1.0.0.4
opOpenSocialPlugin
opOpenSocialPlugin-0.9.9.2
opOpenSocialPlugin-1.0.4.2
opOpenSocialPlugin-1.2.2.1
opOpenSocialPlugin-1.3.1.1
opRankingPlugin
opRankingPlugin-0.8.0.1
opRankingPlugin-1.0.0.1
opMessagePlugin
opMessagePlugin-0.8.2.4
opMessagePlugin-0.9.1.1

opOpenSocialPlugin の修正適用に関する注意事項

今回のリリースにより、非公開の誕生年が Person API から取得できなくなります。取得不能な誕生年を含む出力をリクエストした場合、年部分が 0000 年であるとして出力されるようになります。これは、 OpenSocial 0.9 の以下の仕様に従った変更となります。

The year value MAY be set to 0000 when the age of the Person is private or the year is not available.

0000 年を返すことにより、いわゆる 2038 年問題への配慮がなされていない(0000 年(紀元前1年)の日付を認識できない)アプリが動作しなくなる可能性があります。また、 2038 年問題への配慮がなされているアプリでも、この変更により意図しない動作がおこなわれるようになる可能性があります。

したがって、 opOpenSocialPlugin を使用したサイトでは、提供しているアプリが影響を受けないかどうかを必ず確認したうえで、修正の適用をおこなってください。

セキュリティ上の問題の報告手順について

OpenPNE プロジェクトでは、以下に案内している通り、セキュリティ上の問題の報告を受け付ける窓口 (security@openpne.jp) を用意しています。

http://redmine.openpne.jp/projects/op3/wiki/How_To_Report_Issue_%28ja%29#%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E4%B8%8A%E3%81%AE%E5%95%8F%E9%A1%8C%E3%82%92%E5%A0%B1%E5%91%8A%E3%81%99%E3%82%8B

もしセキュリティ上の問題を発見した場合は、通常の公開されたバグ報告の手順を踏むのではなく、 security@openpne.jp に連絡してください。 security@openpne.jp はクローズドなメーリングリストであり、このメーリングリストでおこなわれた脆弱性の詳細情報などのやり取りがそのまま公開されることはありません。

シリアル番号について

OpenPNE プロジェクトでは、今回から、脆弱性リリースにシリアル番号を導入することにしました。

今回の緊急リリースには OPSA-2011-001 というシリアル番号を与えます。このシリアル番号でない緊急リリースは、たとえ類似の問題であったとしても、この緊急リリースとは異なるリリースとなるのでご注意ください。

ページの先頭に戻る