Project

General

Profile

Bug(バグ) #3112

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

Added by Rimpei Ogawa about 7 years ago. Updated over 2 years ago.

Status:
Won't fix(対応せず)
Priority:
High(高め)
Assignee:
Target version:
Start date:
2012-07-09
Due date:
% Done:

0%

3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)

Description

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

Related issues

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

Associated revisions

Revision 0cba16e8 (diff)
Added by Rimpei Ogawa about 7 years ago

fixed mail address token validation (fixes #3112)

History

#1 Updated by Yuma Sakata about 7 years ago

  • Priority changed from Normal(通常) to High(高め)
  • Target version set to OpenPNE 3.8.x

#2 Updated by Rimpei Ogawa about 7 years ago

  • Assignee set to Rimpei Ogawa
  • Target version changed from OpenPNE 3.8.x to OpenPNE 3.9.0-old

#3 Updated by Rimpei Ogawa about 7 years ago

  • Status changed from New(新規) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

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

#4 Updated by Yuya Watanabe about 7 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

#5 Updated by kaoru n over 4 years ago

  • 3.8 で発生するか set to Unknown (未調査)

#6 Updated by isao sano over 2 years ago

  • Status changed from Pending Testing(テスト待ち) to Won't fix(対応せず)
  • % Done changed from 70 to 0

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

Also available in: Atom PDF