プロジェクト

全般

プロフィール

Bug(バグ) #3112

完了

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

Rimpei Ogawa さんが12年以上前に追加. 7年以上前に更新.

ステータス:
Won't fix(対応せず)
優先度:
High(高め)
担当者:
対象バージョン:
開始日:
2012-07-09
期日:
進捗率:

0%

予定工数:
3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)

説明

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);

関連するチケット 2 (0件未完了2件完了)

関連している OpenPNE 3 - Backport(バックポート) #3128: メールアドレス変更時のトークンチェックが正しくおこなわれないFixed(完了)Rimpei Ogawa2012-07-09

操作
関連している OpenPNE 3 - Backport(バックポート) #3149: メールアドレス変更時のトークンチェックが正しくおこなわれないFixed(完了)Rimpei Ogawa2012-07-09

操作

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