v8 指针压缩
v8 指针压缩前言Pointer compression是v8 8.0中为提高64位机器内存利用率而引入的机制。
对于v8中64位的对象指针,它们的高32位基本是不变的,花费4字节来储存它们会浪费内存空间;所以指针压缩将64位对象指针变为32位,也就是64位指针中的低32位,将64位指针的高32位保存在r13中;访问对象时,只需要将对象指针与根寄存器的基址相加即可得到完整地址。
v8关于指针压缩的实现首先我们能想到的实现方式是从0地址开始分配4G内存,确保v8对象分配在这4G内存范围内;v8显然没有这样做,在chrome渲染进程中可能会有多个v8实例,这个方案会导致所有v8实例都来竞争这4G内存,而我们稍微开两个chrome内存就吃满了。
“详情请参考:https://v8.dev/blog/pointer-compression”
指针压缩在v8漏洞利用中的影响首先我们很难泄漏v8堆内存空间的高32位(r13寄存器),也就意味着我们用伪造JSArray并控制elements指针以获取任意r/w原语的时候只能在4G的堆内进行。
想要任意r/w原语我们可以在v8堆上分 ...
V8 TurboFan 生成图简析
V8 TurboFan 生成图简析一、简介v8 turbolizer 有助于我们分析 JIT turbofan 的优化方式以及优化过程。但我们常常对于 turbolizer 生成的 IR 图一知半解,不清楚具体符号所代表的意思。以下为笔者阅读相关代码后所做的笔记。
二、TurboFan Json 格式
--trace-turbo 参数将会生成一个 JSON 格式的数据。通过在 turbolizer 上加载该 JSON,可以得到一个这样的IR图:
其中,该 JSON 的格式如下:
123456789101112131415161718192021222324252627282930313233343536373839404142{ "function": "opt_me", "startPosition": 109, "source": [js source], "phases": [ { "nam ...
CVE-2025-6554复现进展
CVE-2025-6554复现进展14.0 存在trusted_data,但读出来数据需要转换,但不清楚如何转换现在
8.2 直接没有trusted_data,可以直接读出rwx段的地址,但不存在漏洞
12.9.152 和 14的情况一样
11.9.152 不存在trusted_data,但合并了trusted_data的数据,而且不存在rwx的数据段,也存在漏洞,可以尝试利用,但是任意地址读写和addrof都不可用,得i重新构造
10.9.152 不存在trusted_data,但合并了trusted_data的数据,但是不存在rwx的数据段,于是不可用这个方法利用
11.9.152 不存在trusted_data,但合并了trusted_data的数据,而且不存在rwx的数据段,也存在漏洞,可以尝试利用,但是任意地址读写和addrof都不可用,得i重新构造
14.0 存在trusted_data,但读出来数据需要转换,但不清楚如何转换现在,而且存在随机的基地址
网上下载的12.8 版本是存在trusted_data,而且泄露出来的数据也能对上,不存在随机的 ...
Chromium 编译与搭建教程 (Ubuntu 22.04)
Chromium 编译与搭建教程 (Ubuntu 22.04)本教程基于 Google 官方文档及实战经验总结,旨在帮助开发者在 Linux 环境下顺利搭建 Chromium 编译环境并完成编译。
一、 前言
本教程基于 Google 官方文档及实战经验总结,旨在帮助开发者在 Linux 环境下顺利搭建 Chromium 编译环境并完成编译。
二、 安装 depot_toolsdepot_tools 是 Google 用于管理 Chromium 源码仓库的工具包,包含 gclient、fetch、gn 等核心工具。
克隆仓库:
1git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
配置环境变量: 将 depot_tools 路径添加到 PATH。
123456# 临时生效(仅限当前终端)export PATH="$PATH:${HOME}/depot_tools"# 永久生效:修改 ~/.bashrcecho 'export PATH ...
chrome漏洞复现跟踪CVE-2025-13223和CVE-2025-13224
chrome漏洞复现跟踪CVE-2025-13223和CVE-2025-13224Description
2025年11月18日,chrome发布更新,在The Stable channel has been updated to 142.0.7444.175/.176 for Windows and 142.0.7444.176 for Mac and 142.0.7444.175 for Linux修复了两个漏洞,CVE-2025-13223和CVE-2025-13224这里记录一下用于追踪。
CVE-2025-13223DescriptionType Confusion in V8 in Google Chrome prior to 142.0.7444.175 allowed a remote attacker to potentially exploit heap corruption via a crafted HTML page. (Chromium security severity: High)
142.0.7444.175之前的谷歌Chrome V8中的类 ...
v8 sandbox沙箱绕过 总结
v8 sandbox沙箱绕过 总结v8沙箱的本质其实就是修改了前面的,直接通过wasm就能获取到一个可以rwx的地址空间的地址,并且这个地址是可以直接访问的,于是可以通过rw原语修改这个地址上的数据,修改执行代码。现在加的沙箱就是将这个rwx的地址给隔离出来了,不能直接通过rw原语修改。也就是不在一个空间了。
绕过沙箱就是想办法获取到其他的在沙箱内rwx的地址空间,或者想办法能实现沙箱外的读写。PartitionAlloc 漏洞就是实现沙箱外读写,正则表达式就是获取其他的rwx的地址空间。但是这个正则并不是直接的获取到了一个沙箱内的rwx地址,而是本身具备那种栈的特性,可以进行修改
绕过沙箱的办法一、Bypassing the sandbox with WasmInstance objects二、Bypassing the sandbox using immediate numbers该方法只能在低版本使用,测试现在在9.1.269能使用
我们现在构造这样的代码
123456 function shellcode() { return [ 1.0, ...
Chrome 远程代码执行漏洞(CVE-2025-6554)
Chrome 远程代码执行漏洞(CVE-2025-6554)前言2025年6月,谷歌威胁分析小组(Clement Lecigne, @_clem1)发现一个在野漏洞利用,该漏洞利用了V8引擎中一个非常著名的原始漏洞,并引入了一种新的利用技术——另一个“the_hole”泄漏问题,引发了广泛关注。该漏洞本身非常有趣,涉及V8引擎内部的多个领域和概念。
Google于2025年6月30日发布了最新的 Chrome 安全通告,公告链接https://chromereleases.googleblog.com/2025/06/其中修复了高危漏洞2025-6554,并且已经知道该漏洞已经存在在野利用。
[NA][427663123] High CVE-2025-6554: Type Confusion in V8.
Reported by Clément Lecigne of Google’s Threat Analysis Group on 2025-06-25.
This issue was mitigated on 2025-06-26 by a configuration change ...
继承与原型链
继承与原型链在编程中,继承是指将特性从父代传递给子代,以便新代码可以重用并基于现有代码的特性进行构建。JavaScript 使用对象实现继承。每个对象都有一条链接到另一个称作原型的对象的内部链。该原型对象有自己的原型,依此类推,直到原型是 null 的对象。根据定义,null 没有原型,并作为这条原型链中最后的一环。在运行时修改原型链的任何成员、甚至是换掉原型都是可能的,所以像静态分派这样的概念在 JavaScript 中不存在。
对于有基于类的语言(如 Java 或 C++)经验的开发者来说,JavaScript 有些令人困惑——因为它是动态的并且没有静态类型。尽管这个困惑通常被认为是 JavaScript 的弱点之一,但是原型继承模型实际上比类式模型更强大。例如,在原型模型的基础上构建类式模型(即类的实现方式)相当简单。
尽管类现在被广泛使用并成为 JavaScript 中新的范式,但是类并没有引入新的继承模式。尽管类抽象掉了大部分的原型机制,但是理解原型的底层工作机制仍然十分有用。
基于原型链的继承继承属性JavaScript 对象是动态的属性(称为自有属性)“包”。JavaSc ...
JavaScript的字节码 - v8 Ignition指令
JavaScript的字节码 - v8 Ignition指令前言我们以v8为例,首先看下v8的运行架构:

这个图中有三个不熟悉的专有名词,ignition, crankshaft和Turbofan。
其中,Ignition是v8的解释器,crankshaft是老一代的编译器,turbofan是较新一代的编译器。所以我们所说的字节码就对应于igintion的字节码,编译的中间代码就是TurboFan IR.本文我们集中讲解Ignition字节码。
通过v8的d8工具,我们可以方便地看到ignition bytecode的序列,只要加–print-bytecode参数:
1./d8 --print-bytecode
如果你手头没有d8工具的话,可以使用你手头的node:
1node --print-bytecode
下面我们就可以开始愉快的ignition字节码之旅啦。
累加器加载指令我们先从最小的语 ...
CVE-2021-38001复现
CVE-2021-38001复现漏洞通报漏洞描述:Issue 1260577 于2021年10月16日天府杯提交,CVE编号为CVE-2021-38001,漏洞描述为Type confusion in V8 in Google Chrome prior to 95.0.4638.69 allowed a remote attacker to potentially exploit heap corruption via a crafted HTML page. 。可以知道该漏洞是位于Chrome的JS处理引擎V8中的类型混淆漏洞。
利用难度:Type Confusion (较低)
漏洞影响范围:v8 < 9.5.172.21 ; Chrome < 95.0.4638.54
issue编号:1260577
漏洞导致的结果:远程代码执行
分析报告地址:https://www.cnblogs.com/Rain99-/p/14673789.html
漏洞分析现该Issue在bugs.chromium上还未有公开的文档,但是根据查阅对应版本的patch文件和描述[super ...



