Project

General

Profile

Backport(バックポート) #3149

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

Added by Rimpei Ogawa about 8 years ago. Updated about 8 years ago.

Status:
Fixed(完了)
Priority:
High(高め)
Assignee:
Target version:
Start date:
2012-07-09
Due date:
% Done:

100%


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 - Bug(バグ) #3112: メールアドレス変更時のトークンチェックが正しくおこなわれない Won't fix(対応せず) 2012-07-09

Associated revisions

Revision 4e6cc2c6 (diff)
Added by Rimpei Ogawa about 8 years ago

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

History

#1 Updated by Rimpei Ogawa about 8 years ago

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

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

#2 Updated by Yuya Watanabe about 8 years ago

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

#3 Updated by 開 石切山 about 8 years ago

  • Status changed from Pending Testing(テスト待ち) to Fixed(完了)
  • % Done changed from 70 to 100

Also available in: Atom PDF