Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-6307 — Google Chrome CVE-2026-6307 PoC | Kitploit
工具/GitHubGitHub/0xsha/cve-2026-6307
漏洞分析漏洞利用ShellcodeWeb应用程序漏洞利用学习与教育Shellcode 生成Payload 开发二进制利用实验室与实践
GitHub0xsha/cve-2026-6307

CVE-2026-6307

Google Chrome CVE-2026-6307 PoC

查看仓库
531382个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-6307:V8 JS-to-Wasm 类型混淆 → Chrome 146 上的远程代码执行

对 Nebula 描述的 V8 JS-to-Wasm 去优化类型混淆的本地复现与武器化,最终在 Chrome for Testing 146.0.7680.165 的渲染进程中弹出 **xcalc**(该漏洞已于 147.0.7727.101` 版本修复)。

所有 payload 均为无害用途(计算器 / exit(0x42) / jmp $)。 所有操作均在本地实验室环境中针对一个故意过时的浏览器进行, 请勿将其指向任何人。

演示

https://github.com/user-attachments/assets/d450f064-ba52-4f39-a88b-367f31217143

漏洞原理

JSToWasmFrameStateFunctionInfo 的相等运算符忽略了 Wasm 签名的比较,因此 CSE/GVN 会将仅签名不同的帧状态合并。随后,惰性去优化(lazy deopt)会将 Wasm 的 i64 物化为带标签的 externref(反之亦然),从而获得完整的 64 位 addrof/fakeobj 原语——其指针并非笼压缩(cage-compressed)的(Wasm ref 使用带标签的寄存器表示,通过 kReturnRegister0 返回)。

以下所有内容均在 146.0.7680.165 上实时验证。每次加载的数据都是重复运行后测得的命中率(该混淆对 GC 敏感;每次页面在新构建上重新启动)。没有一次运行产生误报。

无标志原语(Flag-free primitives)——无需 --allow-natives-syntax

大多数 V8 漏洞 PoC 使用 %OptimizeFunctionOnNextCall 强制优化,这是一个仅用于测试的内建函数,受 --allow-natives-syntax 保护,实际用户不会启用。而本漏洞利用完全不带任何标志驱动,通过调整预热反馈(warmup feedback)使去优化混淆自然触发。每个地址都在运行时泄露——无需硬编码。无需任何标志即可无头运行。

可见的远程代码执行(RCE)——无 ASLR 实验环境构建

rce-no-aslr/ 将其推进到代码执行:一个经过优化的 JS 函数 g 将 execve shellcode 编排为 JIT 双精度字面量(movabs 常量,每个以 eb rel8 结尾以链接下一个),混淆后的存储将 nop; jmp 修补到 g 的代码中,调用 g() 会使 RIP 滑入 shellcode。

此构建使用 --allow-natives-syntax(%Optimize 固定了 g 的 JIT payload,避免去优化 GC 将其刷新)和 --no-memory-protection-keys(这样混淆后的存储才能修补 JIT 页——否则 V8 的 PKU 会将其标记为只读)。ASLR 已关闭(randomize_va_space=0),因此地址是确定的(A_MAP = 0x5555bbc0128a)。渲染进程还需要 --disable-seccomp-filter-sandbox --no-zygote,因为 seccomp 会阻止 shellcode 的 execve。

运行方法

原生 x86_64 Linux,ASLR 关闭,PATH 中存在 Chrome 146,:0 上运行 X 显示(Xvfb 或真实 X)。rce-no-aslr/run.sh 设置所有标志并通过 http 提供服务。

root@kitploit:~
cd rce-no-aslr
./run.sh calc          # 在 :0 上通过 http://127.0.0.1:8080 弹出真实 xcalc
./run.sh exit          # 通过 strace 确认渲染进程的 exit(66)
./run.sh jmp           # 通过 gdb 确认 RIP 位于注入的 shellcode 内部
./demo.sh calc            # 干净状态 + 自动重试,全尺寸有头浏览器(用于录制)
./demo.sh msgbox          # 同上,但弹出的是一个带有品牌标识的“0xSha :: pwned”对话框

pocmode.sh calc|msgbox 切换 RCE 的 execve("/usr/bin/xcalc") 启动的内容(真实计算器 vs 品牌标识对话框)。无标志原语只需浏览器即可:

root@kitploit:~
chrome --headless=new --no-sandbox http://127.0.0.1:8080/flag-free/01-primitives-flagfree.html

目录结构

root@kitploit:~
flag-free/   无标志贡献(无需 --allow-natives-syntax)
  00-reachability   触发 + 补丁差异(漏洞 146 vs 已修补 147)
  01-primitives     addrof / fakeobj
  02-store          笼外存储
  03-arw            笼内 read64 / write64
rce-no-aslr/ 可见的 RCE(确定性,无 ASLR 实验环境构建)
  exploit-calc.html / exploit-exit.html
  run.sh, demo.sh, pocmode.sh, xcalc-msgbox.sh

漏洞及根本原因分析:Nebula Security(上方链接)。本仓库中的无标志触发、原语及可见成果均为在本地实验室中验证的复现/扩展。

下载工具
文件证明内容验证结果
flag-free/00-reachability-flagfree.html触发混淆状态;在易受攻击的 146 版上触发,不会在已修补的 147 版上触发每次加载 6/15
flag-free/01-primitives-flagfree.htmladdrof / fakeobj(fakeobj(addrof(o))===o)8/12
flag-free/02-store-flagfree.html笼外存储(out-of-cage store)将选定值写入选定对象12/12
flag-free/03-arw-flagfree.html笼内 read64 / write64(伪造 PACKED_DOUBLE 数组)2/12(不稳定,请重试)
文件证明内容验证结果
rce-no-aslr/exploit-calc.html通过渲染进程的 execve 弹出真实的 xcalc 窗口在干净状态下约 1 秒弹出
rce-no-aslr/exploit-exit.html渲染进程运行注入的 shellcode 以 exit(66) 退出;#jmp 使 RIP 在其内部循环exit(66) 8/8(strace 验证)