Chrome 渲染器中的对象转换到 RCE

在本文中,我将利用CVE-2024-5830,这是 Chrome 的 JavaScript 引擎 v8 中的一个类型混淆错误,我于 2024 年 5 月将其报告为错误 342456991。该错误已在版本126.0.6478.56/57中修复。此错误允许通过一次访问恶意网站在 Chrome 的渲染器沙箱中执行远程代码执行 (RCE)。

V8 中的对象映射和映射转换

本节包含理解该漏洞所需的对象图和转换中的一些背景材料。熟悉这些内容的读者可以跳至下一节。

映射(或隐藏类)的概念对于 JavaScript 解释器来说相当基础。它表示对象的内存布局,对于优化属性访问至关重要。已经有很多好文章对这个主题进行了更详细的介绍。我特别推荐 Mathias Bynens 的“ JavaScript 引擎基础:形状和内联缓存”。

映射包含属性描述符数组 ( DescriptorArrays),其中包含有关每个属性的信息。它还包含有关对象元素及其类型的详细信息。

具有相同属性布局的对象之间可以共享映射。例如,以下对象都具有一个a类型为 (31 位整数) 的属性SMI,因此它们可以共享同一个映射。


o1 = {a : 1};
o2 = {a : 10000};  //<------ same map as o1, MapA

映射还会记录对象中的属性类型。例如,以下对象具有与和o3不同的映射,因为其属性的类型为( ),而不是:o1o2adoubleHeapNumberSMI


o3 = {a : 1.1};

当向对象添加新属性时,如果新对象布局的地图尚不存在,则会创建新的地图。


o1.b = 1; //<------ new map with SMI properties a and b

当发生这种情况时,新旧地图通过转换关联起来:


%DebugPrint(o2);
DebugPrint: 0x3a5d00049001: [JS_OBJECT_TYPE]- map: 0x3a5d00298911  [FastProperties]...- All own properties (excluding elements): {0x3a5d00002b19: [String] in ReadOnlySpace: #a: 10000 (const data field 0), location: in-object}
0x3a5d00298911: [Map] in OldSpace- map: 0x3a5d002816d9 <MetaMap (0x3a5d00281729 )>...- instance descriptors #1: 0x3a5d00049011 - transitions #1: 0x3a5d00298999 0x3a5d00002b29: [String] in ReadOnlySpace: #b: (transition to (const data field, attrs: [WEC]) @ Any) -> 0x3a5d00298999 ...

请注意,的映射o2包含到另一个映射的转换(0x3a5d00298999),这是为的新创建的映射o3


%DebugPrint(o3);
DebugPrint: 0x3a5d00048fd5: [JS_OBJECT_TYPE]- map: 0x3a5d00298999  [FastProperties]...- All own properties (excluding elements): {0x3a5d00002b19: [String] in ReadOnlySpace: #a: 1 (const data field 0), location: in-object0x3a5d00002b29: [String] in ReadOnlySpace: #b: 1 (const data field 1), location: properties[0]}
0x3a5d00298999: [Map] in OldSpace- map: 0x3a5d002816d9 <MetaMap (0x3a5d00281729 )>...- back pointer: 0x3a5d00298911 ...

o2相反, ( )的映射0x3a5d00298911作为后向指针存储在这个新映射中。一个映射可以在 中存储多个转换TransitionArray。例如,如果将另一个属性c添加到o2,则TransitionArray将包含两个转换,一个到属性b,另一个到属性c


o4 = {a : 1};
o2.c = 1;
%DebugPrint(o4);
DebugPrint: 0x2dd400049055: [JS_OBJECT_TYPE]- map: 0x2dd400298941  [FastProperties]- All own properties (excluding elements): {0x2dd400002b19: [String] in ReadOnlySpace: #a: 1 (const data field 0), location: in-object}
0x2dd400298941: [Map] in OldSpace- map: 0x2dd4002816d9 <MetaMap (0x2dd400281729 )>...- transitions #2: 0x2dd400298a35 Transition array #2:0x2dd400002b39: [String] in ReadOnlySpace: #c: (transition to (const data field, attrs: [WEC]) @ Any) -> 0x2dd400298a0d 0x2dd400002b29: [String] in ReadOnlySpace: #b: (transition t

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/878092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端Html5/Css3—div盒子模型

文章目录 第六章 盒子模型6.1 border边框6.2 border-width粗细6.3 border-style边框样式6.4 border简写6.5 margin外边距6.6 padding内边距6.7 盒子模型尺寸6.8 box-sizing6.9 border-radius圆角边框6.9.1 制作圆形6.9.2 半圆6.9.3 四分之一圆 6.10 box-shadow盒子阴影 第六章 …

速盾:中小企业网站cdn加速方案?

中小企业网站在如今的互联网时代中起到了非常重要的作用&#xff0c;能够帮助企业提升品牌形象、增加曝光度、吸引潜在客户等。然而&#xff0c;随着用户对网页加载速度的要求越来越高&#xff0c;网站的访问速度成为决定用户是否留在网站的关键因素之一。为了提升网站的访问速…

通过css,js html结合实现第一个页面

html以及 js代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><link …

react调用子组件方法`TS2304: Cannot find name ‘Ref‘`

文章目录 发现宝藏1. 使用正确的 React.Ref 类型2. 使用 React.Ref 或 React.RefObject 作为 ref 类型3. 确保你的 tsconfig.json 设置正确总结 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。…

【机器学习】独立成分分析的基本概念、应用领域、具体实例(含python代码)以及ICA和PCA的联系和区别

引言 独立成分分析&#xff08;Independent Component Analysis&#xff0c;简称ICA&#xff09;是一种统计方法&#xff0c;用于从多个观察到的混合信号中提取出原始的独立信号源 文章目录 引言一、独立成分分析1.1 定义1.2 独立成分分析的基本原理1.3 独立成分分析的步骤1.3.…

Java重修笔记 第四十三天 Set 集合、HashSet 类

Set 接口 1. 它是无序的&#xff08;添加和取出的顺序不一致&#xff0c;但取出的结果是固定的&#xff09;&#xff0c;没有索引 2. Set 接口也是 Collection 的子接口&#xff0c;所以继承了 Collection 的方法 3. Set 接口的遍历方式有两种&#xff0c;迭代器和增强 for…

计算机专业的真正的就业情况

首先听到计算机行业&#xff0c;大多数人岗位已经饱和&#xff0c;前端已死&#xff0c;程序员35岁危机。但是事实上这些认知都是片面的&#xff0c;今天由我来为大家分析计算机行业的内幕。 疫情过后&#xff0c;过内各种行业都受到了冲击&#xff0c;你们敢说除了体制内的行业…

速盾:高防 CDN 如何提高电子商务网站的性能和用户体验?

随着电子商务的迅速发展&#xff0c;电子商务网站的性能和用户体验成为了至关重要的因素。其中&#xff0c;高防 CDN&#xff08;内容分发网络&#xff09;可以为电子商务网站提供很大的帮助&#xff0c;使其能够提高性能和用户体验。下面将详细介绍高防 CDN 如何实现这一目标。…

RACL: Adversarially Robust Neural Architectures

RACL: 对抗鲁棒网络架构 论文链接&#xff1a;https://arxiv.org/abs/2009.00902v2 Abstract 深度神经网络(DNN)容易受到对抗性攻击。现有的方法致力于开发各种鲁棒训练策略或正则化来更新神经网络的权值。但除了权重之外&#xff0c;网络中的整体结构和信息流是由网络架构明…

模块一(任务3):WDM系统原理解读

一、WDM的概念及波段划分 1、WDM系统概念 WDM系统就像高铁系统一样&#xff0c;这里可以将一根光纤看做是一个多车道的高速铁路。 把不同波长的光信号组合起来&#xff08;也就是复用&#xff09;&#xff0c;进入到同一根光纤中进行传输&#xff0c;在接收端将组合波长的光信…

图形学论文笔记

文章目录 PBD&#xff1a;XPBD&#xff1a;shape matching PBD&#xff1a; 【深入浅出 Nvidia FleX】(1) Position Based Dynamics 最简化的PBD(基于位置的动力学)算法详解-论文原理讲解和太极代码 最简化的PBD(基于位置的动力学)算法详解-论文原理讲解和太极代码 XPBD&…

​经​纬​恒​润​一​面​

1. 请尽可能详细地说明&#xff0c;浏览器有哪些本地存储方式&#xff0c;区别是什么&#xff0c;应用场景是什么&#xff1f;你的回答中不要写出示例代码。 浏览器提供了多种本地存储方式&#xff0c;主要包括以下几种&#xff1a; 1. Cookies 定义&#xff1a;Cookies 是一…

向量数据库Faiss的详细介绍和搭建使用教程

一、Faiss简介 向量数据库Faiss&#xff08;Facebook AI Similarity Search&#xff09;是由Facebook AI研究院&#xff08;FAIR&#xff09;开发的一种高效的相似性搜索和聚类库。Faiss能够快速处理大规模数据&#xff0c;支持在高维空间中进行相似性搜索。它通过将候选向量集…

数据库mysql集群主从、高可用MGR、MHA技术详解

一、安装数据库mysql步骤 环境&#xff1a;红帽7.9系统 安装依赖 yum install cmake gcc-c openssl-devel ncurses-devel.x86_64 libtirpc-devel-1.3.3-8.el9_4.x86_64.rpm rpcgen.x86_64 -y 将下载的MySQL软件包解压并cd到mysql的目录下 [rootmysql-node10 ~]# tar zxf mysq…

数据结构(邓俊辉)学习笔记】优先级队列 08——左式堆:结构

文章目录 1. 第一印象2. 堆之合并3. 奇中求正4. NPL5. 左倾性6. 左展右敛 1. 第一印象 在学习过常规的完全二叉堆之后&#xff0c;我们再来学习优先级队列的另一变种&#xff0c;也就是左式堆。所谓的左式堆&#xff0c;也就是在拓扑形态上更加倾向于向左侧倾斜的一种堆&#…

洛谷刷题(4)

P1089 [NOIP2004 提高组] 津津的储蓄计划 题目描述 津津的零花钱一直都是自己管理。每个月的月初妈妈给津津 300 元钱&#xff0c;津津会预算这个月的花销&#xff0c;并且总能做到实际花销和预算的相同。 为了让津津学习如何储蓄&#xff0c;妈妈提出&#xff0c;津津可以随…

UE5打包iOS运行查看Crash日志

1、查看Crash 1、通过xCode打开设备 2、选择APP打开最近的日志 3、选择崩溃时间点对应的日志 4、选择对应的工程打开 5、就能看到对应的Crash日志 2、为了防止Crash写代码需要注意 1、UObject在Remov

sqlsugar 不映射字段,sqlsugar 忽略字段。sqlsugar 字段改名。

sqlsugar 不映射字段&#xff0c;sqlsugar 忽略字段。 利用特性SugarColumn&#xff0c;将IsIgnore设置为True即可&#xff01; [SugarColumn(IsIgnore true)]//sqlsugar 忽略字段 public decimal MaxTemp { get; set; } 这样Sqlsugar 增删改查数据库的时候自动跳过该字段&…

Nextjs(App Router) 开发记录

最近业余在开发一款智能助理产品&#xff0c;记录开发过程中的一些问题以备忘&#xff0c;也是帮其他人防坑。 主要技术栈 本项目采用了前沿的技术栈来构建一个高性能且可维护的应用。选择了 Nx 作为构建管理和单一代码库解决方案&#xff0c;通过模块化和插件系统来扩展和优…

论文学习—Efficient Multi-label Classification with Many Labels

论文学习&#xff1a;Efficient Multi-label Classification with Many Labels 摘要2. 多标签分类相关工作2.1 Label Transformation1. **降维&#xff08;Dimensionality Reduction&#xff09;**2. **回归模型&#xff08;Regression Model&#xff09;**3. **逆变换&#xf…