CVE-2026-100671
Grav 2.0.25 之前版本通过 Twig 沙箱导致会话 Cookie 窃取
- 已发布
- 2026年9月26日
- 已更新
- 2026年9月26日
- 分配 CNA
- VulnCheck
- 观察到的证据
- 2026年10月3日
初级CVSS
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X总结
Grav 是一个平面文件 CMS。在 2.0.19 至 2.0.24 版本中——以及在 2.0.0 至 2.0.18 和 1.7.x 中,仅在内容 Twig 被显式启用的情况下——由仅持有页面写入权限的用户编写的页面内容会通过一个 Twig 沙箱渲染,该沙箱将 get_cookie() 列入允许列表,而 get_cookie() 会返回随当前请求发送的任何 cookie,包括访问者的会话 cookie。由于读取是通过 filter_input(INPUT_COOKIE, ...) 在服务端进行的,HttpOnly、Secure 和 SameSite 属性无法提供任何保护。随后,Grav 将 Twig 处理后的最终输出存储在一个页面内容缓存中,该缓存仅以页面标识和配置校验和为键,没有会话、用户或请求维度,也没有针对已认证访问者的绕过机制。因此,由页面写入用户发布的页面可以捕获下一个查看该页面的管理员的会话标识符,之后缓存输出会将该标识符提供给未认证的访问者,后者可以重放该 cookie 以该管理员的身份进行认证。自 2.0.19 起,security.twig_content.process_enabled 默认为 true,并且 Security::applyTwigContentDefault() 从该开关推导每个页面的 process.twig 标志,因此内容 Twig 会在每个页面上运行,无需 frontmatter 或操作员操作。已在 2.0.25 中修复;1.7.x 不在向后移植范围内。
来源
仅本地概念验证验证器,用于 CVE-2026-100671,复现针对回环目标的 Grav Twig 页面缓存会话 Cookie 泄露与重放。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。