CVE-2025-47776MantisBT 2.27.1及以下版本存在严重的认证绕过漏洞。该漏洞源于认证代码中错误使用PHP宽松比较(==)而非严格比较(===)。攻击者利用PHP类型转换机制,当MD5哈希值以科学计数法表示时,会被错误解析为数字类型。如果目标实例使用MD5登录方法,攻击者只需知道受害者用户名,并且能够访问一个密码哈希值为零的账户,即可无需知道实际密码即可登录系统。攻击者通过使用任意哈希值也为零的密码即可完成认证绕过。漏洞已于2.27.2版本中修复。
该漏洞的核心在于PHP的松散比较(==)与类型转换机制。当PHP比较两个值时,会进行隐式类型转换。例如,字符串'0e123456789'会被PHP解释为科学计数法表示的浮点数0。当攻击者找到一个密码的MD5哈希值为'0e'开头且后续全为数字时(如'0e12345678901234567890'),PHP会将其转换为浮点数0进行比较。如果目标账户的密码哈希恰好也转换为0,则使用任意密码都能通过认证。攻击流程:1) 攻击者首先枚举找到一个密码P1,其MD5(P1)值为0e开头格式;2) 获取目标账户的密码哈希值;3) 如果目标哈希值也是0e开头格式,攻击者使用任意密码即可登录;4) 利用受害者用户名和任意密码完成认证绕过。此攻击无需高权限,仅需知道用户名即可实施。