プロジェクト

全般

プロフィール

Bug(バグ) #3112

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

Rimpei Ogawa11年以上前に追加. ほぼ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);

関連するチケット

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

関係しているリビジョン

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

fixed mail address token validation (fixes #3112)

履歴

#1 Yuma Sakata11年以上前に更新

  • 優先度Normal(通常) から High(高め) に変更
  • 対象バージョンOpenPNE 3.8.x にセット

#2 Rimpei Ogawa11年以上前に更新

  • 担当者Rimpei Ogawa にセット
  • 対象バージョンOpenPNE 3.8.x から OpenPNE 3.9.0-old に変更

#3 Rimpei Ogawa11年以上前に更新

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

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

#4 Yuya Watanabe11年以上前に更新

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

#5 kaoru nほぼ9年前に更新

  • 3.8 で発生するかUnknown (未調査) にセット

#6 isao sanoほぼ7年前に更新

  • ステータスPending Testing(テスト待ち) から Won't fix(対応せず) に変更
  • 進捗率70 から 0 に変更

OpenPNE 3.8.1 にて対応済みであったため、対応せずとします。

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