📢 Gate广场专属 #WXTM创作大赛# 正式开启!
聚焦 CandyDrop 第59期 —— MinoTari (WXTM),总奖池 70,000 枚 WXTM 等你赢!
🎯 关于 MinoTari (WXTM)
Tari 是一个以数字资产为核心的区块链协议,由 Rust 构建,致力于为创作者提供设计全新数字体验的平台。
通过 Tari,数字稀缺资产(如收藏品、游戏资产等)将成为创作者拓展商业价值的新方式。
🎨 活动时间:
2025年8月7日 17:00 - 8月12日 24:00(UTC+8)
📌 参与方式:
在 Gate广场发布与 WXTM 或相关活动(充值 / 交易 / CandyDrop)相关的原创内容
内容不少于 100 字,形式不限(观点分析、教程分享、图文创意等)
添加标签: #WXTM创作大赛# 和 #WXTM#
附本人活动截图(如充值记录、交易页面或 CandyDrop 报名图)
🏆 奖励设置(共计 70,000 枚 WXTM):
一等奖(1名):20,000 枚 WXTM
二等奖(3名):10,000 枚 WXTM
三等奖(10名):2,000 枚 WXTM
📋 评选标准:
内容质量(主题相关、逻辑清晰、有深度)
用户互动热度(点赞、评论)
附带参与截图者优先
📄 活动说明:
内容必须原创,禁止抄袭和小号刷量行为
获奖用户需完成 Gate广场实名
V8引擎Sentinel Value泄露绕过HardenProtect的安全风险
Chrome V8引擎中Sentinel Value泄露导致的安全风险
Sentinel value是算法中的特殊值,常用于循环或递归算法的终止条件。Chrome源码中存在多个Sentinel value,其中一些对象不应泄露到JavaScript环境中。本文将探讨利用Uninitialized Oddball对象泄露来绕过Chrome V8引擎的HardenProtect机制。
V8中的Sentinel Value
V8的大部分原生对象定义在v8/src/roots/roots.h文件中,这些对象在内存中相邻排列。一旦这些不应暴露给JavaScript的原生对象被泄露,就可能导致沙箱内任意代码执行。
我们可以通过修改V8的native函数,将Uninitialized Oddball泄露到JavaScript中。例如修改%TheHole()函数的偏移量,使其返回Uninitialized Oddball对象。
绕过HardenType保护
利用泄露的Uninitialized Oddball对象,可以构造以下代码实现相对任意读:
javascript function read(obj, idx) { return obj[idx]; }
let arr = [1.1, 2.2, 3.3]; let uninitialized_oddball = %TheHole();
for (let i = 0; i < 100000; i++) { read(arr, 0);
}
%OptimizeFunctionOnNextCall(read);
let result = read(uninitialized_oddball, 0x12345); %DebugPrint(result);
优化后的read函数汇编代码显示,在计算数组偏移时没有检查obj.prop的值类型,直接按JavaScript语义计算,从而导致类型混淆,实现任意读。
修复建议是在优化后的函数返回数组元素时,添加对数组map的检查,避免直接计算偏移返回数值。
PatchGap风险提示
该漏洞目前在一些使用旧版V8引擎的软件(如Skype)中仍未修复。在x86平台下,由于没有地址压缩,任意读写可直接相对于整个进程进行。
这种新的绕过方法的公开,降低了利用相关漏洞的难度。黑客几乎不需要额外研究就可以完成对泄露Uninitialized Oddball漏洞的完整利用。
总结
V8中还存在其他Sentinel value,可能导致类似安全问题。建议进一步研究:
无论如何,这类问题都会大大缩短黑客实现完整利用的周期,值得高度重视。