Announcement

👇Official Account👇

Welcome to join the group & private message

Article first/tail QR code

Skip to content

CVE-2026-85046 深度分析:Chrome V8 类型混淆零日,2026 年第六个在野利用的浏览器漏洞

2026 年 9 月 3 日,Google 紧急推送 Chrome Stable 更新,修复 12 个安全漏洞——其中 CVE-2026-85046 是一个已被在野利用的 V8 引擎类型混淆漏洞。这不是 2026 年第一次:这是 Google 今年修补的第六个被主动利用的 Chrome 零日,也是第三个直接命中 V8 的漏洞。CISA 在补丁发布次日(9 月 4 日)就将其纳入 Known Exploited Vulnerabilities(KEV)目录,联邦机构必须在 9 月 18 日前完成修复。

一个访问恶意网页就能在浏览器的 JavaScript 引擎里拿到任意读写原语的漏洞,正在被真实攻击者使用——而 Google 没有公布任何攻击归因、受害目标或技术细节。

一、漏洞全景

1.1 核心信息速览

项目内容
CVECVE-2026-85046
组件Google Chrome V8(JavaScript 与 WebAssembly 引擎)
漏洞类型类型混淆(Type Confusion,CWE-843)
CVSS8.8(高危)
修复版本Chrome 152.0.7977.82/.83(Windows/macOS)、152.0.7977.82(Linux)
修复日期2026-09-03
在野利用已确认(Google 官方声明)
报告者Salvatore Gulizia(aka Serotav),2026-08-04 报告
赏金$1,000
CISA KEV2026-09-04 收录,BOD 26-04 管辖,联邦截止 2026-09-18
同批次漏洞12 个(10 High + 2 Medium)

2026 年 9 月 3 日的 Chrome Releases 公告只有一句话级的信息密度:"Google is aware that an exploit for CVE-2026-85046 exists in the wild."(Google 已知悉该 CVE 的在野利用)。按照惯例,漏洞细节在大多数用户完成升级前保持受限——这既保护尚未打补丁的用户,也为其他 Chromium 系浏览器(Edge、Brave、Opera 等)争取跟进时间。

1.2 类型混淆是什么

类型混淆是内存安全缺陷,归类为 CWE-843(Access of Resource Using Incompatible Type):软件把内存中的对象当作与真实存储类型不同的类型来处理。

在 V8 这类 JIT 编译的 JavaScript 引擎中,这个抽象描述变得非常具体:V8 的优化编译器(Maglev、TurboFan)为了跳过冗余检查,会基于对象的 shape/type 假设生成快速路径。一旦攻击者用精心构造的脚本让编译器做出错误假设,引擎就会以错误的元数据读写内存——从"读错类型"演变成"任意堆地址读写",最终是沙箱内任意代码执行。

二、攻击原理:一个编译器的 elements-kind 错误

虽然 Google 没有公开 PoC,但报告者 Salvatore Gulizia(Serotav) 在自己的技术分析中给出了根因描述,并被 The Hacker News、SOC Prime 等多家媒体交叉确认。

2.1 V8 的 elements-kind 机制

V8 的 JavaScript 数组在内存中有不同的表示形态(elements kind),用于优化存储密度:

Elements Kind存储内容说明
PACKED_SMI_ELEMENTS小整数(Small Integer)最紧凑:元素直接存值,无装箱
PACKED_ELEMENTS任意对象/大数元素以对象指针形式存储

编译器会追踪数组的 elements kind 来决定用哪条快速路径。例如,一个"全是小整数"的数组可以用 PACKED_SMI_ELEMENTS 布局,元素紧凑存储在定长 slot 中。

2.2 缺陷:PACKED_ELEMENTS 数据挂上了 PACKED_SMI_ELEMENTS 地图

Gulizia 描述的根因是:V8 编译器优化路径中,一个实际包含 PACKED_ELEMENTS 数据的数组,错误地接收了 PACKED_SMI_ELEMENTS 的 map(对象形状描述元数据)


V8 编译器优化


elements-kind / type 元数据不匹配


PACKED_ELEMENTS 数据
被当作 PACKED_SMI_ELEMENTS map 解释


类型混淆(CWE-843)


JavaScript 堆任意读/写原语

当引擎按照 PACKED_SMI_ELEMENTS 的紧凑布局去读写实际是"任意对象"的数组时,元素的指针被当作整数值、整数值被当作指针——攻击者通过控制数组内容,就能把这种错位转化为 JavaScript 堆内的任意读与任意写

更关键的是,Gulizia 指出该问题同时影响 Maglev 与 TurboFan 两条编译路径。Maglev 是 V8 的中层优化编译器(负责热点函数的快速中等优化),TurboFan 是领域顶级优化编译器。两条路径都有相同的元数据混淆窗口,意味着漏洞触发面比单编译器版本更宽。

2.3 利用路径:一个网页就够了

恶意/被攻陷网页


精心构造的 JavaScript/HTML


触发 V8 类型混淆(PACKED_ELEMENTS ↔ PACKED_SMI_ELEMENTS)


JavaScript 堆任意读写原语


Chrome 渲染进程沙箱内任意代码执行
  • 远程可达:攻击者只需诱导受害者访问恶意页面(钓鱼链接、恶意广告、被攻陷站点均可)
  • 无需任何权限:无认证、无交互的前置条件(CVSS 中的 user interaction 指"受害者加载攻击者控制的内容")
  • 执行位置:Chrome 渲染进程沙箱内部的任意代码执行

2.4 影响边界:沙箱内执行 ≠ 完全失守

需要理性看待影响范围:代码执行发生在 Chrome 渲染进程沙箱内部。沙箱限制了攻击代码能触达的系统资源,通常还需要第二个漏洞才能完成沙箱逃逸到操作系统层面。截至目前,没有任何公开来源确认已存在与 CVE-2026-85046 链式使用的沙箱逃逸

所以严格说:这是"强立足点(foothold)",而非"已确认的全设备接管"。但对真实攻击者而言,浏览器渲染进程的任意代码执行已经足够支撑后续利用链——尤其是在目标机器上还有浏览器之外的其他漏洞时。

三、2026 年 Chrome 零日全景:六连击,一半在 V8

CVE-2026-85046 不是孤例。它是 2026 年 Google 确认在野利用的第六个 Chrome 漏洞,战线从 2 月中旬一路拉到 9 月:

CVE修复时间组件缺陷类型
CVE-2026-24412026-02CSSFontFeatureValuesMap迭代器失效
CVE-2026-39092026-03Skia(2D 图形库)越界写
CVE-2026-39102026-03V8 JavaScript 引擎不恰当实现
CVE-2026-52812026-04Dawn(WebGPU 实现)Use-After-Free
CVE-2026-116452026-06V8 JavaScript 引擎越界读/写
CVE-2026-850462026-09V8 JavaScript 引擎类型混淆

六个零日中有三个命中 V8。这个集中度不是偶然——V8 是每次页面加载都要"按设计"处理不可信、攻击者提供的代码的组件,攻击面天然最大,而 JIT 优化路径又是类型混淆的高发区。加上 2026 年 AI 辅助漏洞挖掘的加速效应(前半年已有多起 AI 找洞的研究),这个节奏很可能延续到年底。

四、同批次修复的另外 11 个漏洞

零日抢了头条,但这次 Stable 更新一共修了 12 个漏洞(10 个高危 + 2 个中危),其中多个同样处理不可信的 Web 内容。一次升级,全部闭合:

高危(High)

CVE组件缺陷类型
CVE-2026-85045V8竞态条件
CVE-2026-85048CompositingUse-After-Free
CVE-2026-85051Compositing类型混淆
CVE-2026-85050WebGL越界写
CVE-2026-85049SkiaUse-After-Free
CVE-2026-85042DevToolsUse-After-Free
CVE-2026-85053CacheStorage资源暴露不当
CVE-2026-85052CrashReporting越界读
CVE-2026-85043Network清理不完整

中危(Medium)

CVE组件缺陷类型
CVE-2026-85047Transactions Platform输入验证不当
CVE-2026-85044Mobile释放后使用(released resource)

除了零日外的 11 个均未被标记为在野利用,但它们在同一个二进制中,升级一次即全部修复。

五、时间线与合规框架

5.1 完整时间线

时间事件
2026-08-04Salvatore Gulizia 向 Google 报告漏洞
2026-09-03Google 发布 Chrome Stable 更新(152.0.7977.82/.83),确认在野利用
2026-09-04CISA 将 CVE-2026-85046 纳入 KEV 目录
2026-09-18KEV 对应的联邦机构修复截止(BOD 26-04 管辖)
2026-09-11EU Cyber Resilience Act 第 14 条强制生效(主动利用 24 小时报告义务)—— 本次零日成为其"实战演练"

关于截止日期需要提醒:公开报道中联邦截止日期存在 9-16 与 9-18 两种说法,以 CISA KEV 目录官方条目为准

5.2 BOD 26-04:以风险而非一刀切期限为框架

CISA 的 KEV 条目明确指向 Binding Operational Directive 26-04。它主要约束美国联邦民事行政部门(FCEB),框架上围绕风险分级而非对所有资产统一设死线,并要求机构在打补丁前先自查系统是否已在补丁落地前被入侵(妥协指标排查)。

对联邦以外的组织,KEV 如此快速的收录仍然是"利用真实存在"的最清晰信号——它不是理论漏洞,是正在被用的漏洞。

5.3 EU CRA 背景:一次强制演练

9 月 11 日,EU Cyber Resilience Act 第 14 条开始强制执法,要求对欧盟有暴露的组织在主动利用事件 24 小时内向 ENISA 报告。CVE-2026-85046 恰好在生效前一周发生,成为新规的第一次真实压力测试:浏览器零日 + 在野利用 + 跨国影响范围,正是 CRA 设计的典型场景。

六、企业应急清单:如何闭环

没有 workaround。 修复就是升级,而升级只有在浏览器重启后才真正生效。

6.1 立即执行

  1. 强制升级:通过 Chrome 更新策略(Windows ADMX / macOS MDM)推送 152.0.7977.82+,不要等分阶段 rollout 自然到达
  2. 重启浏览器:Chrome 后台自动下载的新二进制只有重启后才会运行
  3. 重建黄金镜像:重做 VDI 模板 / 基础镜像,避免新装机重新引入旧版本
  4. 排查妥协指标:对高风险用户(互联网暴露、高价值目标)在打补丁前后检查入侵痕迹

6.2 需要知道的边界情况

  • Electron / CEF 应用:自带 V8,独立补丁节奏,需要单独排查(例如桌面应用、白标浏览器内核)
  • 下游 Chromium 浏览器:Edge / Brave / Opera 等的修复有自己的时间表,Chrome 修复 ≠ 它们修复
  • 优先级:如果无法一次性全量升级,优先互联网暴露面和高价值用户

七、给开发者的延伸:为什么 V8 这类引擎是漏洞金矿

从工程视角,这个零日再次确认了一条规律:JIT 编译器的"优化假设"就是攻击者的"错位机会"

V8 为了性能做的每一层假设(elements kind、map 形状、反馈向量),都是类型混淆的潜在面。对做浏览器内核、嵌入式 JS 引擎或任何带 JIT 的系统的人:

  1. 元数据与数据分离验证:对快速路径的布局假设做交叉校验,尤其在多编译器(Maglev/TurboFan)共存时——同一个 bug 可能在两条路径上都存在
  2. Fuzz 聚焦 elements kind 迁移:数组形态转换(SMI → Double → Object)是 V8 类引擎的高发区,基础设施级 fuzzing 应覆盖形态高压转换序列
  3. 赏金定价的信号意义:$1,000 的赏金在 Chrome 最高 $250,000 的框架内显得反常——这可能暗示 Google 认为这不是全新攻击面(同类模式已被内部覆盖),也可能是漏洞被低估。无论如何,报告质量与技术细节的公开都对社区有价值

八、总结

CVE-2026-85046 是一个教科书级的浏览器零日:V8 引擎、类型混淆、单个恶意页面即可触发、已在野外被真实利用,且是 2026 年第六个同类事件。它同时踩中了三件事:V8 作为"按设计处理不可信代码"组件的天然攻击面、JIT 优化假设的安全代价、以及 Browser 零日本质上是补丁管理问题而非浏览习惯问题的现实。

对绝大多数人,行动清单只有一条:升级 Chrome 到 152.0.7977.82+ 并重启。对安全团队,加上镜像重建、妥协排查和 Electron/Chromium 生态清点。

参考资料

上次更新于: