CVE-2026-43948wger是一款开源健身管理软件。在2.6版本之前,系统在重置密码视图的授权检查中存在逻辑错误。当攻击者和受害者均未分配健身房时,利用Python对象比较特性`None != None`为False的特性,攻击者可静默绕过权限验证,重置受害者密码并获取明文密码,导致账户被完全接管。
该漏洞源于wger在`reset_user_password`和`gym_permissions_user_edit`视图中使用了错误的权限校验逻辑。代码使用Python的`!=`运算符进行对象比较。当攻击者和受害者都未分配健身房(即`gym=None`)时,比较表达式`None != None`的结果为`False`。原本意图是“如果不相等则拒绝”,但在这种情况下,逻辑判断失效,导致权限守卫被静默绕过。只要攻击者拥有`gym.manage_gym`权限且自身`gym=None`,即可针对任何`gym=None`的用户发起密码重置攻击。系统会将新生成的明文密码直接返回在HTML响应体中,攻击者利用该密码即可登录受害者账户,且受害者原密码失效,实现完全的账户接管。