Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

削除済みメンバー名義でログインされることがある #929

Open
seasoftjapan opened this issue May 29, 2024 · 1 comment
Labels
Milestone

Comments

@seasoftjapan
Copy link
Contributor

削除済みメンバーと同じ login_id でメンバー登録した場合、削除済みの情報 (member_id, authority, login_date, name) でログインされる場合がある。(実際に管理画面の操作で発生することを確認済み。)

パスワード認証は、削除済みメンバーのパスワードで行われることはなく、新たなメンバーのパスワードで行われる。よって、致命的な脆弱性ではない認識。意図しない権限でログインされる懸念はあるが、現実的な影響は低いと想定している。

LC_Page_Admin_Index::lfDoLogin() が、ガバガバなのが原因。
根本的には当該クラス全体で login_id を使いすぎで、後半は member_id をキーとして扱うのが望ましい。

lfIsLoginMember() と lfDoLogin() がやや離れている印象もある。

@seasoftjapan seasoftjapan added this to the 2.17.3 milestone May 29, 2024
@seasoftjapan
Copy link
Contributor Author

応急修正コード (根本的にはダメだけど、多分動くやつ)

diff --git data/class/pages/admin/LC_Page_Admin_Index.php data/class/pages/admin/LC_Page_Admin_Index.php
index 40a8cb784..678a5a5cf 100644
--- data/class/pages/admin/LC_Page_Admin_Index.php
+++ data/class/pages/admin/LC_Page_Admin_Index.php
@@ -165,7 +165,7 @@ public function lfDoLogin($login_id)
         //メンバー情報取得
         $cols = 'member_id, authority, login_date, name';
         $table = 'dtb_member';
-        $where = 'login_id = ?';
+        $where = 'login_id = ? AND del_flg <> 1 AND work = 1';
         $arrData = $objQuery->getRow($cols, $table, $where, array($login_id));
         // セッション登録
         $sid = $this->lfSetLoginSession($arrData['member_id'], $login_id, $arrData['authority'], $arrData['name'], $arrData['login_date']);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant