プロジェクト

全般

プロフィール

Backport(バックポート) #3128

メールアドレス変更時のトークンチェックが正しくおこなわれない

Yuma Sakata11年以上前に追加. 11年以上前に更新.

ステータス:
Fixed(完了)
優先度:
High(高め)
担当者:
対象バージョン:
開始日:
2012-07-09
期日:
進捗率:

100%


説明

Overview (現象)

メールアドレス変更時にメールで通知されるURL(/member/configComplete)に含まれるトークンのチェックが機能しておらず、任意のトークン(空の値を含む)で処理が続行されてしまう。

メールアドレス変更後のメールアドレスが正当なものであるか(メールアドレスが存在し、メンバー自身がメール内容を読むことができるか)のチェックが機能していないことになり、メンバーが自身の登録メールアドレス情報を任意の値に変更できてしまうことが考えられる。

一方、他のメンバーのメールアドレスについては、パスワードを知らない前提では変更することはできない。(このため本バグはセキュリティイシューとしていない。)

トークンチェックの機能が実装された 3.0 開発中の時点から報告時点の最新版である 3.8.0 まで、問題となる部分のソースコードは変更されていないため、OpenPNE 3 の全バージョンでこの現象が発生するものと予想される。

Causes (原因)

member/configComplete アクションでのトークンチェックのための条件式が間違っており、リクエストURLに含まれるトークンの値によらず次の行へ処理が続行されてしまっているのが原因。

該当部分

$this->forward404Unless((bool)$request->getParameter('token') !== $memberConfig->getValue());

Way to fix (修正内容)

トークンチェックの条件式を正しいものに修正する。

3.6.4 ベースの修正パッチが以下になります。

--- a/lib/action/opMemberAction.class.php
+++ b/lib/action/opMemberAction.class.php
@@ -238,7 +238,7 @@ abstract class opMemberAction extends sfActions

     $memberConfig = Doctrine::getTable('MemberConfig')->retrieveByNameAndMemberId($type.'_token', $memberId);
     $this->forward404Unless($memberConfig);
-    $this->forward404Unless((bool)$request->getParameter('token') !== $memberConfig->getValue());
+    $this->forward404Unless($request->getParameter('token') === $memberConfig->getValue());

     $option = array('member' => $memberConfig->getMember());
     $this->form = new opPasswordForm(array(), $option);

関連するチケット

関連している OpenPNE 3 - Bug(バグ) #3112: メールアドレス変更時のトークンチェックが正しくおこなわれない Won't fix(対応せず) 2012-07-09

関係しているリビジョン

リビジョン ff50977d (差分)
Rimpei Ogawa11年以上前に追加

fixed mail address token validation (fixes #3128, BP from #3112)

履歴

#1 Rimpei Ogawa11年以上前に更新

  • ステータスNew(新規) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 ff50977d86faa685debc516e30b5e4ef02189e62 で適用されました。

#2 Yuya Watanabe11年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

#3 開 石切山11年以上前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

#4 Yuya Watanabe11年以上前に更新

  • 担当者Rimpei Ogawa にセット

他の形式にエクスポート: Atom PDF