JavaLYG

Chrome 0-day CVE-2026-85046 确认在野利用:V8 类型混淆从确认到升级排查

9 月 3 日,Google 推送新的 Chrome Stable 更新,一次修复 12 个漏洞,其中 CVE-2026-85046 是 V8 引擎的类型混淆问题,Google 明确确认已有在野利用。修复后的版本是 152.0.7977.82/.83。这篇不漏掉细节:漏洞在哪、谁受影响、怎么把升级做完并验证到位。

CVE-2026-85046 事件速览与攻击链路

一、9 月 3 日这次发布修了什么

这次更新关闭了 12 个漏洞。CVE-2026-85046 是高危项,NVD 描述为 Google Chrome V8 中的 type confusion,攻击者可通过精心构造的 HTML 页面在沙箱内执行任意代码;同类修复覆盖 CrashReporting、Network、Compositing、WebGL、CacheStorage、DevTools、Skia 等组件的 use-after-free 和越界读写,另有 V8 的竞态问题。

时间事件版本
2026-09-03Chrome Stable 紧急更新,修复 12 个漏洞152.0.7977.82/.83
2026-09-02Edge 包含该修复的安全更新152.0.4191.62
2026-09-04Edge 持续跟随 Chromium 基线152.0.4191.66

按照惯例,对已在野利用的漏洞,Google 会暂时限制细节公开,等大多数用户完成升级后再放开详细报告。这属于保护性做法,不是信息缺失。

二、type confusion:为什么 V8 总出这类问题

V8 是 Chrome 的 JavaScript 与 WebAssembly 引擎。它不满足于解释执行,会通过 Maglev、TurboFan 等优化编译器做 JIT 编译,把热点代码变成机器码。优化的前提是“运行时假设”:对象有哪类 hidden class(map),数组携带什么元素类型(element kind,例如 PACKED_SMI_ELEMENTS、PACKED_ELEMENTS),这些都在优化时固定下来。

CVE-2026-85046 的问题就在这里。据研究者的分析,某项数组操作本应保持 PACKED_ELEMENTS 的元素类型,却被当成 PACKED_SMI_ELEMENTS 继续执行。优化代码按旧的类型假设读取内存,而实际数据已经变了,这一错位让页面获得了把对象地址当普通整数读写的能力,也就是常说的 addrof/fakeobj 原语,可以任意读写 JS 堆中的位置。

修复思路也因此明确:不再对训练过混合元素类型的调用点内联 Array.prototype.sort 排序优化,避免这类“类型假设漂移”。

三、从漏洞到整机,中间隔着一道沙箱

只靠这个漏洞,攻击者拿到的是渲染进程里的任意代码执行,而这个进程有沙箱限制,不能直接碰系统资源和用户敏感数据。报告者 Salvatore Gulizia(Serotav)在分析中指出,他是把该漏洞与一个已知的沙箱逃逸问题链起来,才演示出完整影响路径。

这提醒我们:V8 Sandbox(Chrome 123 引入的内存隔离层)依然在起作用,它是纵深防御的一部分,设计目标就是“V8 出了事也不至于直接失控”。但不能因此拖延升级:链路里的两个环节被敌人分别攒齐只是时间问题,而 0-day 拼图往往早于我们的反应。

值得一提的是,这是 2026 年 Google 修复的第 6 个在野利用 Chrome 0-day。前几个例如 6 月的 V8 越界读写(CVE-2026-11645)、2 月的 CSSFontFeatureValuesMap 迭代器失效(CVE-2026-2441),评分同样落在 8.8。类型混淆与 use-after-free 这类内存破坏漏洞在引擎层的爆发频率,说明了浏览器补丁的重要性——它不是月度例行公事,而是安全防护的第一道闸门。

四、谁受影响

浏览器引擎与本漏洞的关系处理路径
Google ChromeV8直接受影响升级到 152.0.7977.82/.83
Microsoft EdgeV8(Chromium 分支)继承同类漏洞升级到 152.0.4191.62 及以上
Brave / Opera / VivaldiV8(Chromium 分支)继承同类漏洞等待各自下游补丁
FirefoxSpiderMonkey不受此漏洞影响无需为此动作
SafariJavaScriptCore不受此漏洞影响无需为此动作

Chromium 系浏览器的共同点是都带着 V8,所以上游一个洞,下游都要排队打补丁。依赖“浏览器自动更新”的企业,通常会被同一批漏洞追着跑。

五、三分钟确认自己的版本

# Chrome / Chromium:地址栏直接访问
chrome://version      # 完整版本号与更新通道
chrome://settings/help

# Linux 命令行查询
google-chrome --version
chromium --version

# Microsoft Edge 对应入口
edge://version
edge://settings/help

目标:Chrome 不低于 152.0.7977.82,Edge 不低于 152.0.4191.62。Windows 与 macOS 的 Chrome 可能显示 .83 小版本(同一批次),同样安全。

Chrome 0-day 升级排查流程

六、升级与落地

个人用户路径最简单:打开 settings/help,让浏览器检查更新,下载完成后重启浏览器。这里提示一句:只有重启,新版本才会真正接管。

企业环境建议分三层:一是确认更新策略没有锁定旧版本(Chrome 有 GoogleUpdate 相关策略,Edge 有 Microsoft Edge Update 策略);二是提前把稳定版灰度验证跑起来,避免业务扩展、办公系统在新版上出兼容问题;三是用脚本或管理平台抽查版本分布,确保灰度收敛而不是“一部分人永远停在旧版本”。

Linux 用户要注意:发行版仓库里的 Chromium 补丁节奏可能滞后于上游,对安全敏感的机器应优先使用官方渠道(google-chrome-stable)或及时跟进的构建,并在更新后确认版本号。

七、升级失败怎么办

现象常见原因处理方向
检查更新一直转圈网络、代理或通道配置问题检查代理设置;离线时使用官方安装包手动更新
更新按钮置灰企业策略锁定版本联系管理员核对更新策略,不要强行绕过
更新后扩展或办公插件异常扩展未适配新内核启用前确认兼容性,临时关闭冲突项
Linux 包管理器版本滞后发行版仓库节奏慢切换官方源或独立安装通道
安装报错或权限失败安装包损坏、权限不足重新下载离线包,以管理员身份安装

八、验收清单

  • chrome://version / edge://version 显示的版本达到修复门槛;
  • settings/help 页面提示“已是最新”,无待安装更新;
  • 升级后重启过一次浏览器,复查仍显示新版本;
  • 企业环境抽查样本机器,版本分布收敛;
  • 日常保持浏览器自动更新开启,不手动冻结太久。

0-day 一直在路上。我们能做的,是把“发现到修复”之间的窗口压到最短——该更新就更新,该重启就重启。

参考资料

🔕 评论已关闭