CVE-2026-35597Vikunja在2.3.0版本之前存在一个由于数据库事务处理不当导致的漏洞。该漏洞使得TOTP验证失败后的账户锁定机制失效。攻击者可利用此缺陷绕过锁定限制,无限制地对TOTP代码进行暴力破解攻击,从而获得用户账户的未授权访问。该问题已在2.3.0版本中修复。
漏洞根源在于Vikunja的登录处理逻辑中存在数据库事务回滚缺陷。具体来看,当TOTP验证失败时,`pkg/routes/api/v1/login.go`中的登录处理程序会调用`HandleFailedTOTPAuth`函数。该函数使用内存计数器跟踪失败次数,当达到10次时,会尝试在同一数据库会话中将用户状态设置为`StatusAccountLocked`。然而,由于登录处理程序在TOTP验证失败后无条件地执行了事务回滚,导致账户状态变更被撤销。尽管内存计数器正确累加并触发锁定逻辑,但数据库层面的状态始终未被持久化。这一逻辑漏洞使得攻击者可以无视系统设定的防暴力破解机制,无限次尝试TOTP验证码,极大地增加了爆破成功的风险。