Bug描述
用户后台虽然开启了验证码,但是验证码失效机制有问题,可导致无线次数的暴力破解,对于恶意攻击者来说破解是时间问题。
Bug影响
emlog Pro 1.2.0+(目前只检测到1.2.0,之前是否有问题未知)
因为emlog验证码正确后不会在对该验证码失效,再加上验证码是由于checkcode.php生成,如果禁止该连接访问,验证码正确就只可以实现多次有效验证。
解决方法
修改include\service\user.php的checkLoginCode函数,大概59行,修改为如下代码:
// 检查图片验证码 static function checkLoginCode($login_code) { if (!isset($_SESSION)) { session_start(); } $session_code = $_SESSION['code'] ?? ''; unset($_SESSION['code']); if ((!$login_code || $login_code !== $session_code) && Option::get('login_code') === 'y') { return false; } return true; }
附:邮箱验证码也存在这个bug,修改include\service\user.php的checkMailCode函数,大概72行,修改为如下代码:
// 检查图片验证码 static function checkMailCode($mail_code) { if (!isset($_SESSION)) { session_start(); } $session_code = $_SESSION['code'] ?? ''; unset($_SESSION['code']); if (!$mail_code || $mail_code !== $session_code) { return false; } return true; }
官方后续
已于emlog Pro 2.1.14修复。
目前有 0 条评论