CVE-2026-35598Vikunja是一个开源的自托管任务管理平台。在2.3.0版本之前,其CalDAV接口中的GetResource和GetResourcesByList方法存在安全漏洞。该漏洞允许任何经过身份验证的CalDAV用户,只要知道或猜测到任务的UID,就可以绕过权限验证,直接从数据库获取任务数据。这意味着攻击者可以读取实例上任何项目中的完整任务信息,而无需拥有该项目的访问权限。该问题已在2.3.0版本中修复。
该漏洞的根本原因在于Vikunja处理CalDAV请求时的逻辑缺陷。具体而言,当CalDAV客户端调用GetResource或GetResourcesByList方法来获取任务时,后端代码仅根据提供的任务唯一标识符(UID)直接查询数据库并返回结果。在此过程中,系统未能执行关键的权限检查步骤,即未验证当前发起请求的已认证用户是否具有访问该任务所属项目的权限。由于CalDAV协议的特性和实现,只要用户完成了基本的身份认证,系统便默认允许查询。攻击者无需进行复杂的交互,只需拥有一个有效的CalDAV账户,便可以通过遍历、猜测或收集到的任务UID,构造特定的CalDAV请求。这将导致服务器返回敏感的任务数据,造成严重的信息泄露。这是一个典型的水平越权漏洞,破坏了多租户或基于项目的数据隔离原则。