CVE-2026-33318Actual是一款本地优先的个人财务管理工具。在其26.4.0版本之前,系统存在一个高危权限提升漏洞,专门针对从密码认证迁移至OpenID Connect的服务器环境。该漏洞源于三个逻辑缺陷的组合利用:首先是修改密码端点缺乏必要的授权验证,允许任意会话覆盖密码哈希;其次是系统在迁移认证方式后,未清理遗留的未激活密码认证行;最后是登录接口接受客户端指定的登录方式。攻击者可以利用这些缺陷,通过修改遗留管理员账户的密码并强制使用密码认证,从而成功将低权限用户提升至管理员权限,完全控制服务器。
该漏洞是一个典型的逻辑漏洞组合利用,主要发生在Actual财务工具从传统密码认证向OpenID Connect迁移的过程中。首先,系统在执行`POST /account/change-password`请求时,未对用户权限进行严格校验。这意味着任何已登录的会话(即使是最低权限的BASIC角色用户)都可以调用此接口修改其他用户的密码哈希值。其次,在服务器迁移到OpenID Connect认证后,原有的基于密码的`auth`数据库记录并未被删除,而是成为了“孤儿”记录,处于非激活状态但依然存在。最后,系统的登录端点存在设计缺陷,它接受客户端提交的`loginMethod`参数。攻击者可以通过发送包含`loginMethod: "password"`的请求,绕过服务器当前的OpenID Connect配置,强制系统使用遗留的密码认证机制进行验证。利用链非常清晰:攻击者首先利用缺乏授权检查的接口,将已知密码的哈希值更新到遗留的管理员账户记录上;接着,构造登录请求,指定使用密码认证方式并输入刚才设置的密码。由于系统验证通过了被修改的哈希值,攻击者便成功以管理员身份登录。这三个弱点缺一不可,单独任何一个都无法直接造成权限提升,但串联起来便构成了完整的攻击路径。