IPBUF安全漏洞报告
English
CVE-2026-42610 CVSS 6.5 中危

CVE-2026-42610 Grav Twig沙箱绕过信息泄露漏洞

披露日期: 2026-05-11

漏洞信息

漏洞编号
CVE-2026-42610
漏洞类型
沙箱绕过
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Grav

相关标签

沙箱绕过信息泄露GravCMSCVE-2026-42610

漏洞概述

Grav CMS在2.0.0-beta.2之前的版本中存在安全漏洞。低权限用户(如仅具有页面更新权限的内容编辑器)可以利用`grav['accounts']`服务绕过现有的Twig沙箱限制。攻击者能够通过编程方式加载管理员用户对象,进而窃取敏感数据,包括Bcrypt密码哈希值和安全盐值。该漏洞在2.0.0-beta.2版本中已得到修复。

技术细节

该漏洞源于Grav CMS中Twig模板引擎沙箱的实现缺陷。在受影响的版本中,系统试图通过沙箱限制低权限用户(如内容编辑器)可访问的PHP对象和方法,以防止其执行敏感操作。然而,沙箱并未完全阻止对核心服务`grav['accounts']`的访问。攻击者只需拥有`pages.update`权限,即可在Twig模板中调用此服务。利用该服务,攻击者可以实例化并加载管理员账户对象,从而访问受保护的属性。由于该对象包含了管理员的凭据信息(如经过Bcrypt哈希的密码)和系统的安全盐值,攻击者可提取这些数据用于后续的离线破解或其他攻击,导致敏感信息泄露。

攻击链分析

STEP 1
1. 获取低权限账号
攻击者注册或获取一个具有内容编辑权限(pages.update)的低特权账户。
STEP 2
2. 构造恶意Payload
攻击者编写Twig代码,利用`grav['accounts']`服务试图访问管理员账户对象。
STEP 3
3. 提交Payload
攻击者将包含恶意Twig代码的内容提交到服务器,例如编辑页面内容。
STEP 4
4. 服务端渲染
服务器在渲染页面时执行Twig代码,由于沙箱限制失效,成功加载管理员对象。
STEP 5
5. 提取敏感数据
攻击者获取到返回的管理员密码哈希和安全盐值,造成信息泄露。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
{# PoC: Accessing sensitive data via Twig Sandbox Bypass #} {% set accounts = grav['accounts'] %} {# Load the admin user object #} {% set admin_user = accounts.load('admin') %} {# Output the password hash and salt #} Admin Password Hash: {{ admin_user.password }} Security Salt: {{ grav.config.get('system.security.salt') }}

影响范围

Grav < 2.0.0-beta.2

防御指南

临时缓解措施
如果无法立即升级,建议暂时禁用低权限用户编辑Twig模板的功能,或严格审查用户提交的内容,确保不包含对`grav['accounts']`服务的调用。

参考链接