CVE-2026-43889Outline是一款广泛使用的协作文档服务。在1.7.0版本之前,该软件存在严重的权限验证逻辑缺陷。具体而言,shares.create API在处理同时包含collectionId和documentId的请求时,若published参数为false,仅验证用户对资源的读取权限,而忽略了对“共享”权限的校验。随后的shares.update操作采用OR策略进行授权,允许仅拥有某个无关集合共享权限的攻击者,发布并暴露其本无权共享的任意文档。这使得未经身份验证的第三方用户可以通过生成的链接访问敏感文档,导致信息泄露。
该漏洞的核心在于API设计中的权限检查逻辑不一致与授权策略宽松。首先,在shares.create阶段,系统本应验证用户是否有权发布特定文档,但实际上仅检查了读取权限。这允许攻击者将一个自己能读但不能分享的文档(Document B)与一个自己能分享的集合(Collection A)关联起来创建一个未发布的Share对象。其次,在shares.update阶段,系统执行发布操作时,其授权逻辑为:user.canShareCollection(collectionId) OR user.canShareDocument(documentId)。由于攻击者对Collection A拥有共享权限,该条件满足,系统便允许将指向Document B的链接状态更新为已发布。利用此逻辑漏洞,攻击者无需对目标文档拥有共享权限,即可利用其对其他资源的共享权限作为“跳板”,非法生成目标文档的公开访问链接。