CVE-2026-33680Vikunja在2.2.2版本之前存在权限提升漏洞。由于`ReadAllWeb`处理器绕过了`CanRead()`检查,拥有只读链接分享权限的攻击者可以列出项目中所有的链接分享详情,包括高权限的秘密哈希。攻击者利用这些哈希可伪装成管理员,从而获得项目的完全控制权。
该漏洞源于Vikunja后端API在处理链接分享列表时的访问控制逻辑缺陷。虽然`LinkSharing.CanRead()`方法正确阻止了低权限用户通过`ReadOne`接口读取单个分享链接,但`ReadAllWeb`接口在调用`ReadAll()`方法时,未执行相应的权限检查。这使得攻击者即使只持有项目的“只读”分享链接,也能通过调用受影响的API端点,获取到项目中所有其他分享链接的元数据。由于响应中包含了用于认证的`hash`字段,攻击者可以提取出具有“写入”或“管理员”权限的哈希值,并利用该哈希值构造认证请求,直接以管理员身份执行恶意操作,实现权限提升。