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

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

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

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

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/sneakynachos/cve-2026-2766-but-with-wasm
漏洞分析漏洞利用ShellcodePayload 开发二进制利用
GitHubsneakynachos/cve-2026-2766-but-with-wasm

CVE-2026-2766-but-with-wasm

CVE-2026-2766,但使用 wasm

查看仓库

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
1111个月前尚未审核
分享

CVE-2026-2766,但使用 wasm

状态:已验证的崩溃 PoC,并演示了控制流劫持 (崩溃 pc = 调试 shell 下已释放单元的毒化值 0xcdcdcdcdcdcdcdcd ——引擎跳转到一个从已释放的 ICScript 中读出的指针)。 剩余工作:控制被回收的字节。参见 research/README.md。

一个 WasmBlazeFox 家族的利用链,针对 2026 年的一个漏洞:CVE-2026-2766,“JavaScript 引擎:JIT 组件中的 JIT 错误编译 / 释放后使用”, 已在 Firefox 148 中修复(MFSA 2026-13)。最终目标与 CVE-2024-29943-but-with-wasm 相同: 将该原语转化为对代码指针的控制,并将其指向一个充满 shellcode 常量的 WASM JIT 页面。

根本原因

根据 Mozilla 自己的回归测试注释(bug 2013583,测试提交于 hg 457b68097f81)以及 js/src/jit/JitScript.h 中的 ICScript Lifetimes SMDOC:

  • 在 Ion 试验性内联期间,一个多态调用点转换会调用 removeInlinedChild → 子级的 ICScript 会从 inlinedChildren_ 中移除,但仍被 InliningRoot 的 inlinedScripts_ 向量引用——而且致命的是,仍被调用方 IC 链中残留的 过时 CallInlinedFunction 桩引用。
  • 一次压缩式 GC(gczeal(14, 1),即每次分配都执行 ZealCompactValue)会 移动/疏散这个孤立的 ICScript,而过时的桩链仍保留旧地址。
  • 下一次通过旧桩的调用会解引用过时的 ICScript 指针 → 移动后使用。在 ASAN/fuzzing 构建中,已释放单元会被 毒化为 0xe5,从而产生非常易读的崩溃。

崩溃证据

存在漏洞的构建:mozilla-central 修订版 b3663be61a1a(2026-01-15 nightly; 修复落在 2026-01-15 与 2026-02-09 之间——Feb-09 nightly 可存活)。Shell:该修订版对应的 Taskcluster linux64-fuzzing-asan-opt jsshell (需要它来使用 gczeal;release-opt shell 缺少该功能)。

root@kitploit:~
./js --ion-warmup-threshold=100000 poc.js

== ERROR: AddressSanitizer: SEGV on unknown address 0xe5e5e5e5e5e5e5e5
   The signal is caused by a READ memory access.
   #0-#3 <unknown module>          <- baseline JIT code
   #4 EnterJit / MaybeEnterJit     <- js/src/jit/Jit.cpp
   #10 js::jit::DoCallFallback     <- BaselineIC.cpp (the stale IC chain)
   rdi = 0xe5e5e5e5e5e5e5e5        <- the freed ICScript

解引用发生在遍历过时桩链的 baseline JIT 代码中: 控制被回收的单元 = 控制 baseline 所信任的 ICEntry/桩字段, 包括它跳转到的桩代码指针。

利用计划(进行中)

root@kitploit:~
orphaned ICScript (this PoC)
  -> compacting GC moves it; stale chain keeps old address
    -> reclaim the old cell with controlled bytes (size-class spray)
      -> baseline reads fake ICEntry -> fake ICStub -> fake code_ pointer
        -> jump into the WASM JIT page shellcode (f64.const immediates,
           FuncExport entry-offset overwrite — see the 2024-29943 repo)

完整武器化日志参见 research/README.md。 当前进展摘要:

  • 该漏洞是对一个 malloc 分配的(TrailingArray)ICScript 的移动后使用—— 原则上可通过按大小分类的缓冲区进行喷射回收。
  • 释放与使用发生在最终 new Ctor(flag) 调用内部,相隔仅微秒, 两者之间没有 JS 回调点;朴素的喷射要么错过窗口(reclaim1/2),要么 用 zeal GC 风暴把 IC 状态搅乱掉(reclaim3)。过时链确实能在单次 普通 gc() 后存活(purge_check)。
  • 下一步是在 gdb 下进行引擎分配分析(哪些分配在释放与使用之间落入 已释放单元)。gdb 在 OrbStack 的 x86 模拟下无法工作, 因此这需要一台原生 Linux x86-64 机器。

WASM 阶段本身已经构建并在 CVE-2024-29943-but-with-wasm 中演示过; 只需为这个 FF149 时代的构建重新推导对象模型偏移。

文件

  • poc.js — Mozilla 的回归测试(bug 2013583),已验证可如上所示使 2026-01-15 ASAN jsshell 崩溃。

参考资料

  • 公告:MFSA 2026-13(Firefox 148)
  • Bug:https://bugzilla.mozilla.org/show_bug.cgi?id=2013583(受限)
  • 测试提交:hg 457b68097f81
  • 同类利用链:https://github.com/SneakyNachos/CVE-2024-29943-but-with-wasm 以及 https://github.com/SneakyNachos/CVE-2026-2764-but-with-wasm
  • 技术来源:https://github.com/SneakyNachos/WasmBlazeFox
下载工具