🟠 【深度分析】高危安全漏洞:CVE-2026-61836

CVSS 评分: 高危(8.6)🟠  状态: Awaiting Analysis  发布时间: 2026-07-15


🔍 技术细节速览

字段 值
CVE ID CVE-2026-61836
CVSS 评分 8.6 🟠
严重程度 高危
CVSS 向量 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
CWE 分类 CWE-524,CWE-639
发布时间 2026-07-15
最后更新 2026-07-15
状态 Awaiting Analysis
数据来源 security-advisories@github.com

好的,作为一名资深网络安全分析师,我将基于您提供的 NVD 数据,为您生成一篇专业的漏洞深度分析文章。


CVSS 评分:8.6 (高危)
CVSS 向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
危害等级:高危


漏洞概述

CVE-2026-61836 是一个存在于 Directus(一个用于管理 SQL 数据库内容的实时 API 和应用仪表板)中的高危权限绕过漏洞。

该漏洞的核心问题在于其响应缓存机制存在缺陷:系统在生成缓存键(Cache-Key)时,未能将完整的认证与授权上下文纳入考量。这导致使用不同权限凭证(如不同的 Share Token 或匿名用户)的客户端,在请求相同 URL 时,可能会获取到其他用户或角色经过权限过滤后的缓存数据,而无需经过权限的重新校验。

简单来说,一个普通用户甚至匿名用户,可能通过利用缓存机制,访问到本应属于其他角色或拥有更高访问权限的用户的 API 响应数据。该漏洞主要威胁数据的机密性,攻击者无需认证即可利用(AV:N/AC:L/PR:N/UI:N),且影响范围可能扩散至其他安全域(S:C)。

影响范围:Directus 12.0.0 之前的所有版本。

受影响组件与版本

  • 软件:Directus
  • 受影响版本:所有低于 12.0.0 的版本
  • 固定版本:12.0.0

漏洞原理分析

根据现有信息,漏洞的成因非常清晰,主要涉及缓存键的派生逻辑缺陷。

  1. 缓存机制:Directus 为提高性能,提供了响应缓存功能。为了区分不同的请求,系统会生成一个唯一的“缓存键”(Cache-Key)。如果两个请求的缓存键相同,系统会直接返回缓存的结果,而无需再次查询数据库或执行权限检查。

  2. 缺陷位置:漏洞存在于 api/src/utils/get-cache-key.ts 文件中。该函数负责生成缓存键。开发者已知的缓存键构成元素包括:

    • 版本(version)
    • 路径(path)
    • 查询参数(query)
    • 用户(accountability.user)中的用户名或用户ID。
  3. 缺失的关键上下文:问题在于,缓存键遗漏了关键的授权上下文信息。根据 NVD 描述,它没有包含诸如:

    • share: 共享链接的唯一标识符。
    • role 和 roles: 用户所分配的角色信息。
    • admin: 用户是否具有管理员权限。
    • app: 用户是否来自App端点。
    • policies: 用户适用的具体策略。
  4. 攻击向量:当两个不同的 Share Token 请求完全相同的 URL 和查询参数时:

    • 如果 Share Token A 拥有对某些记录的读取权限,Token B 没有。由于缓存键只包含了 path 和 query,而两个请求的 path 和 query 相同,且都可能是匿名(user 为 null)的上下文,系统会认为这是同一个请求。
    • Token A 的请求首先到达,后端执行了权限检查并返回了过滤后的数据,然后该响应被缓存。
    • Token B 的请求随后到达,系统发现缓存命中,直接将 Token A 的缓存响应返回给 Token B。
    • 结果:Token B 成功获取了其本无权访问的数据,发生了水平权限提升或信息泄露。

同理,该问题也适用于多个匿名用户之间的缓存冲突,或者匿名用户与一个拥有特定权限的访客用户之间的缓存冲突,因为当用户未登录时,accountability.user 的值都是 null。

影响评估

  • 攻击复杂度(AC:L):低。攻击者不需要复杂的操作,只需发送两个不同的 HTTP 请求即可。缓存机制的利用通常不需要特殊技能。
  • 所需权限(PR:N):无需。攻击者可以以匿名用户身份发起攻击,这使得攻击门槛极低。
  • 用户交互(UI:N):无需。攻击不需要诱导其他用户点击或进行任何操作,完全可以通过自动化脚本完成。
  • 攻击向量(AV:N):网络。攻击者可以通过网络远程利用此漏洞。
  • 影响范围(S:C):已改变。漏洞影响的资产超出了初始授权范围。一个低权限请求可能获取到高权限数据的缓存。
  • 机密性影响(C:H):高。该漏洞将直接导致严重的数据泄露,攻击者可能获取到其无权访问的敏感数据。
  • 完整性影响(I:N):无。攻击者只能读取被错误缓存的响应,无法篡改数据。
  • 可用性影响(A:N):无。漏洞不影响系统的正常功能。

潜在后果:攻击者可以利用此漏洞,在不同用户、角色或共享链接之间任意读取敏感的 API 数据,造成严重的信息泄露。这对于那些依赖 Directus 管理核心业务数据(如用户信息、商业机密、财务数据等)的组织来说,是毁灭性的。

修复建议

官方修复

升级到 Directus 12.0.0 或更高版本。

临时缓解措施

如果无法立即升级,可以考虑以下临时措施:

  1. 禁用响应缓存:在配置文件中完全禁用响应缓存。这虽然会牺牲部分性能,但能从根本上消除此漏洞。请参考 Directus 官方文档了解如何关闭缓存。
  2. 配置反向代理缓存:如果必须使用缓存,考虑在 Nginx 或 Varnish 等反向代理层实现更严格的缓存策略。通过配置 Vary 响应头来为不同的用户上下文(如 Cookie、Authorization 头)创建不同的缓存。
    • 重要提示:反向代理的缓存策略需要精心配置,错误配置同样可能导致信息泄露。临时措施存在风险,强烈建议尽快升级。

参考资料