📢 Gate广场 #创作者活动第一期# 火热开启,助力 PUMP 公募上线!
Solana 爆火项目 Pump.Fun($PUMP)现已登陆 Gate 平台开启公开发售!
参与 Gate广场创作者活动,释放内容力量,赢取奖励!
📅 活动时间:7月11日 18:00 - 7月15日 22:00(UTC+8)
🎁 活动总奖池:$500 USDT 等值代币奖励
✅ 活动一:创作广场贴文,赢取优质内容奖励
📅 活动时间:2025年7月12日 22:00 - 7月15日 22:00(UTC+8)
📌 参与方式:在 Gate 广场发布与 PUMP 项目相关的原创贴文
内容不少于 100 字
必须带上话题标签: #创作者活动第一期# #PumpFun#
🏆 奖励设置:
一等奖(1名):$100
二等奖(2名):$50
三等奖(10名):$10
📋 评选维度:Gate平台相关性、内容质量、互动量(点赞+评论)等综合指标;参与认购的截图的截图、经验分享优先;
✅ 活动二:发推同步传播,赢传播力奖励
📌 参与方式:在 X(推特)上发布与 PUMP 项目相关内容
内容不少于 100 字
使用标签: #PumpFun # Gate
发布后填写登记表登记回链 👉 https://www.gate.com/questionnaire/6874
🏆 奖励设置:传播影响力前 10 名用户,瓜分 $2
V8引擎Sentinel值泄露漏洞:Chrome沙箱逃逸新方法分析
探讨Chrome V8引擎中Sentinel Value的安全隐患
Sentinel value是算法中的一个特殊值,通常在循环或递归算法中作为终止条件存在。Chrome源码中有很多Sentinel value。近期研究表明,通过泄露特定Sentinel value对象可能导致Chrome沙箱内任意代码执行。
本文将讨论一个新的Sentinel value对象:Uninitialized Oddball。这种绕过方法最早出现在某漏洞报告中,由安全研究人员给出完整代码。值得注意的是,目前该方法仍可用于最新版V8,尚未得到修复。
该方法具有较强通用性:
在某CVE漏洞中,最初的poc就是泄露internal uninitialized oddball。
另一个CVE漏洞报告中,研究人员直接泄露UninitializedOddball,虽然当时利用链不完整,但已显示出安全隐患。
在最近的一个漏洞报告中给出了完整利用方法。
这些案例说明了该问题的普遍性和严重性。截至目前,某通讯软件尚未修复该漏洞。
Sentinel value在V8中的应用
V8源码中定义了大量原生对象,它们在内存中依次相邻排布。一旦将不应泄露的原生对象暴露给JavaScript,就可能实现沙箱内任意代码执行。
为验证该方法在最新V8中的有效性,我们可以修改V8的native函数,将Uninitialized Oddball泄露到JavaScript中。
绕过HardenType保护
我们可以构造代码,当某函数返回UninitializedOddball时,实现相对任意读取。分析优化后的汇编代码可以发现,函数只检查了对象的属性是否正确,但没有检查属性对应的值,直接按JavaScript语义计算偏移获取数组元素,从而造成类型混淆,实现任意读取。
同理,任意写入也可以通过类似方法构造。建议在优化函数返回数组元素时,增加对数组map的检查,避免直接计算偏移返回值。
安全隐患提醒
分析表明,某通讯软件目前仍未修复该漏洞。在x86系统下,由于缺少地址压缩,任意读写直接相对于整个进程。虽然开启了ASLR,但由于文件较大,仍有较大概率读写到关键内容。结合PE解析等方法,可能在短时间内完成完整利用链。
这次安全隐患不仅涉及单个漏洞,还导致了之前一些类似漏洞利用难度大幅降低。黑客几乎不需要额外研究即可实现完整利用,包括之前报告的所有类似漏洞。
总结
本文简要讨论了通过泄露Uninitialized Oddball实现任意读取的方法。V8中还有很多其他Sentinel value,可能存在类似安全隐患。这给我们一些启示:
其他Sentinel value泄露是否也可能导致V8沙箱逃逸?
此类问题是否应被正式视为安全漏洞?
是否有必要在fuzz测试中加入Sentinel value相关变量,以发现更多潜在问题?
无论如何,这类问题都可能大大缩短黑客实现完整利用的周期,值得高度重视。