找回密码
立即注册
搜索
发回帖 发新帖

6541

积分

0

好友

827

主题
发表于 昨天 07:04 | 查看: 7| 回复: 0

一、局外有局:车联网 KVM 域控的破壁背景

现代车载域控正在从“单 OS 单芯片”走向“多虚拟机强隔离”:座舱、仪表、ADAS、安全岛跑在同一颗 SoC 上,靠 KVM + Stage-2 页表划出一道道看不见的结界。这道结界本应是安全边界——Guest 再闹,也碰不到 Host 内核一根汗毛。

但碧游宫的结界从来不是铁桶一块。2025 年下半年到 2026 年初,KVM 子系统接连披露五条可跨 Guest→Host 的逃逸路径,覆盖 x86 shadow MMU、ARM64 嵌套虚拟化 Stage-2、vGIC-ITS 引用计数、pKVM 硬件隔离、嵌套 APIC 锁缺失 五个方向。其中三条评到 T1 档,意味着在成熟 BSP 上具备稳定跨域代码执行的潜力。

档位 含义 本文命中数
T1 稳定 Guest→Host 任意代码执行,可直接拿 host root 3 条
T2 可破坏隔离边界,但稳定利用仍需堆喷/时序辅助 1 条
T3 极端边缘场景,多为 DoS 或信息泄露,难以构造完整逃逸链 1 条

二、五印逐条诠解

【第一印】影 MMU 双相溃印——CVE-2026-53359

  • 法宝代号:影 MMU 双相溃印
  • 命格隐喻:翻过一折又重头,双面幻象,旧页表残影未清
  • 子系统:arch/x86/kvm/mmu
  • 类型标签:VM Escape / Guest→Host / Use-After-Free

原理正文:

这是一颗潜伏了 16 年 的影子页表雷。x86 KVM 的 shadow MMU 在页表回收阶段引用计数处理错误——Guest 侧可控的页表变更操作,可以让一个已经被释放的影子页表条目继续留在遍历链上。等 slab 分配器把这块内存重新分配出去,host 内核再去“访问旧页表”时,踩中的就是攻击者精心布局的新对象。

劫持路径非常直接:slab 喷入 struct file_operations 或 timer_list,等 host 内核顺着残影指针调过去,就完成了从 Guest 到 Host root 的跨域纵身。

车机约束: 命中 x86 架构虚拟化域控——主要是 Intel A3900 / 英伟达 Drive 系列这类 HMI + ADAS 融合工控车机。ARM64 平台完全免疫。

扣分项: 需要走到 shadow MMU 路径;纯 EPT/NPT 原生页表的环境可以部分规避。但量产车机为了兼容老 Guest OS,影子 MMU 路径从来没有真正关掉。

档位横向对比:T1

意象标签: 双面幻影、残影悬空、跨域破壁


【第二印】NV2 页表截痕印——CVE-2026-89775

  • 法宝代号:NV2 页表截痕印
  • 命格隐喻:页表滑移,访问脱离隔离域
  • 子系统:arch/arm64/kvm
  • 类型标签:VM Escape / Guest→Host / TLB 失效缺失

原理正文:

ARM64 嵌套虚拟化(FEAT_NV2)的一个类型截断事故。L2 Guest 在遍历 Stage-2 页表时,长度计算出了类型截断 bug——一个本应该是正常长度的值,被截断成了 0。结果就是:TLB 刷新流程被整段跳过。

Host 这边已经把物理页回收了,TLB 缓存里却还留着旧映射。Guest 拿着这把“过期钥匙”继续读写那页内存,读到的、写到的,全是 host 内核的地盘。Stage-2 隔离边界形同虚设。

车机约束: 正中 SA8155 / SA8295 这类 ARM64 域控的要害。它们的座舱/ADAS/安全岛多层嵌套虚拟化方案,天然就是 FEAT_NV2 的重度用户。

扣分项: 量产车机绝大多数默认关闭嵌套虚拟化,属于实验特性。但——一旦某个 Tier1 为了多租户座舱或 ADAS 灰度方案打开了这个开关,这颗雷就是 T1 级。

档位横向对比:T1

意象标签: 截断偏移、缓存残影、跨域滑移


【第三印】vGIC-ITS 双释悬印——CVE-2026-46316

  • 法宝代号:vGIC-ITS 双释悬印
  • 命格隐喻:队列清空,指针没有归位,二次释放留下悬空引用
  • 子系统:arch/arm64/kvm/vgic
  • 类型标签:VM Escape / Guest→Host / Race Condition / UAF

原理正文:

GIC ITS(Interrupt Translation Service)是 ARM64 虚拟中断的翻译中枢。Guest 通过 MMIO 构造特定中断事务,可以在缓存失效路径上对 ITS 翻译表项的引用计数做二次 put——相当于把同一个东西放了两次手。

引用计数归零,对象提前释放。但后续中断投递流程还握着那把旧钥匙,继续往已经释放的内存里写。等 slab 复用,劫持 host 内核执行流。

最狠的一点:这是纯内核态 KVM 路径逃逸,不依赖 QEMU 用户态组件的任何漏洞。不需要绕过 seccomp,不需要碰用户态内存布局,从 Guest 内核态一路打到 Host 内核态。

车机约束: ARM64 域控多虚拟机中断分发的标准配置——座舱虚拟机和 ADAS 虚拟机共享 GIC 中断,ITS 必开。

扣分项: 依赖精准竞态时序。不同 BSP 的调度器主频、HZ 配置、中断亲和性都会影响窗口大小。但 T1 的底子在,调参就能稳。

档位横向对比:T1

意象标签: 双释残迹、中断破壁、悬表失控


【第四印】pKVM Stage-2 空缓存印——CVE-2025-37996

  • 法宝代号:pKVM Stage-2 空缓存印
  • 命格隐喻:路标缺失,空指针误入分配路径
  • 子系统:arch/arm64/kvm/pkvm
  • 类型标签:VM Escape / 空指针解引用 / 内存分配异常

原理正文:

pKVM 是 ARM64 上的硬件级 KVM 隔离扩展,比传统 KVM 更硬——它把 Host 内核本身也放进了 Stage-2 保护里,Guest 连 host 内核内存都摸不到。

但 user_mem_abort 函数里有个局部变量 memcache,在条件分支的某条路径上漏了初始化。Stage-2 页表映射分配走到这条分支时,拿着一个野指针去调 kvm_pgtable_stage2_map,直接破坏 Stage-2 页表的隔离边界。

车机约束: 主打 ARM64 安全岛 + pKVM 强隔离方案的域控。这是下一代车规级隔离的趋势方向,目前还在头部车企试点。

扣分项: 初始版本多表现为 panic 崩溃。从“空指针野访”升级到“稳定代码执行”,还需要堆喷和 groom 辅助,难度比前三印高一个档次。

档位横向对比:T2

意象标签: 空缓存、隔离域破口、野指针误入


【第五印】nested APIC 竞态缺锁印——CVE-2025-23141

  • 法宝代号:nested APIC 竞态缺锁印
  • 命格隐喻:预判对面的行为,临界区缺锁触发越界访问
  • 子系统:arch/x86/kvm/lapic
  • 类型标签:Race Condition / 内存访问越界

原理正文:

KVM_GET_MP_STATE 这个 ioctl,在 L2 嵌套 Guest 挂起 INIT / TRIPLE_FAULT 事件的场景下,处理嵌套 VM-Exit 仿真访问 Guest 内存时忘了持 SRCU 锁。

vCPU 状态切换并发释放 Guest 内存映射,这边还在读,那边已经放了——野访问诞生。

车机约束: x86 多域嵌套虚拟化车机域控。

扣分项: 触发条件极其苛刻。需要同时满足:L2 模式、待处理 INIT 事件、三故障请求、精准时序窗口。实战中很难凑齐这一桌牌,基本停留在 DoS 层面。

档位横向对比:T3

意象标签: 临界缺锁、嵌套岔路、野访


三、横向对比总表

CVE 编号 法宝代号 架构 根因类型 逃逸路径 车机覆盖面 档位
CVE-2026-53359 影 MMU 双相溃印 x86 影子页表 UAF Guest→Host 代码执行 x86 融合域控 T1
CVE-2026-89775 NV2 页表截痕印 ARM64 TLB 失效遗漏 Guest→Host 任意读写 SA8155/8295 嵌套虚拟化 T1
CVE-2026-46316 vGIC-ITS 双释悬印 ARM64 引用计数 double put UAF 纯内核态跨域逃逸 ARM64 多域 GIC 分发 T1
CVE-2025-37996 pKVM Stage-2 空缓存印 ARM64 未初始化野指针 隔离边界破坏(偏 DoS) pKVM 试点安全岛 T2
CVE-2025-23141 nested APIC 竞态缺锁印 x86 SRCU 锁缺失竞态 野访问 / DoS x86 嵌套域控 T3

四、车联网攻击面推演

把这五印放到真实车载场景里,攻击链长这样:

恶意 App / 被攻破的 Guest VM
        │
        ▼
 ① 影子页表残影 / ITS 双释 / TLB 截断
        │
        ▼
 ② slab 复用劫持 host 内核回调
        │
        ▼
 ③ Host root → 跨域读写所有 Guest 内存
        │
        ▼
 ④ 读取安全岛密钥 / 篡改 ADAS 感知结果 / 刷写 OTA 分区

最危险的不是单条 CVE,而是组合拳:

  • 第四印(pKVM 空缓存)+ 第三印(ITS UAF)= 从 pKVM 隔离域内突破,再借 ITS 路径打穿整个 host;
  • 第二印(NV2 截断)+ 任意信息泄露 = ARM64 嵌套环境下的稳定 KASLR 绕过 + 任意读写;
  • 第一印(x86 shadow MMU)是跨 Intel/AMD 通用的,意味着一份 Guest 镜像可以打穿所有 x86 域控。

五、防御侧的三道符

第一道:节点权限收紧

/dev/kvm、/dev/vhost-*、/dev/vfio/* 全部 root-only,禁止非特权用户态直接操作 KVM ioctl。Guest 内部逃逸是 Guest 的事,但宿主机上不该给任何人额外的敲门砖。

第二道:嵌套虚拟化默认关

FEAT_NV2、nested EPT/NPT 这类特性,量产固件默认关闭。只有在实验室或明确需要的场景才打开,打开就要配套补丁版本审查。

第三道:内核补丁基线

这五印对应的上游 commit 必须在 BSP 里 backport:

  • x86 shadow MMU 引用计数修正;
  • ARM64 Stage-2 TLB 刷新路径补全;
  • vGIC-ITS 引用计数加锁;
  • pKVM memcache 初始化补全;
  • KVM_GET_MP_STATE SRCU 保护补齐。

六、结语

碧游宫的门,从来不是被外力撞开的,都是从里面松的。

五条 CVE,五个子系统,五种根因——影子页表的残影、TLB 缓存的旧映射、引用计数的二次释放、未初始化的野指针、临界区缺的那把锁——本质上都是同一件事:跨域边界上的状态管理出了缝隙。

车联网域控的虚拟化隔离,正在从“有没有”走向“牢不牢”。这五印就是 2026 年摆在所有 Tier1 和主机厂面前的一份考题——答得上,结界就是结界;答不上,结界就是纸糊的。

【申公豹批】 破壁之印,不在阵外,在阵中。页表一寸松,千里域控溃。




上一篇:iptables防火墙安全加固:Linux服务器规则配置与IP封禁实战
下一篇:浪潮元脑SD200 Ultra超节点:Token生成时延如何做到5.85ms
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-10-26 02:49 , Processed in 0.072666 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表