操作系统与虚拟化安全重点 6.2.系统虚拟化平台安全
本文分析了系统虚拟化平台的安全机制与威胁。虚拟化平台通过CPU、内存和I/O隔离提供安全优势,但仍面临虚拟机标识伪造、短暂存在性等新型威胁。XSM框架通过模块化设计和通用安全接口增强防护,而ACM模块实现类型强制和中国墙策略。VMI技术如XenAccess可在Hypervisor层监控虚拟机状态,隐蔽通道则利用共享资源进行非法信息传输。防御措施包括资源隔离、噪声注入和调度优化。此外,安全迁移需保护
·
系统虚拟化平台安全
一、系统虚拟化平台现有安全性分析
(一)安全优势(隔离机制)
- CPU虚拟化安全:通过CPU硬件运行级别(Ring 0-3)实现特权指令隔离,虚拟机只能在受限环境中执行。
- 内存虚拟化安全:每个虚拟机拥有独立的虚拟内存空间,通过影子页表或硬件辅助(EPT/NPT)实现内存隔离。
- I/O虚拟化安全:虚拟I/O接口控制多个虚拟设备复用同一物理设备,通过前端驱动/后端驱动模型实现I/O隔离。
- 域间通信控制:
- 事件通道(Event Channel):Xen中Dom与Dom之间异步事件通知机制,需双方端口绑定。
- 授权表(Grant Tables):提供dom间内存共享的安全方法,每个内存页面有特定域访问权限。
(二)现有防护框架
虚拟化平台利用VMM(虚拟机监控器)为上层VM提供“沙箱”安全环境,实现:
- 应用隔离
- 资源隔离
- 故障隔离
二、虚拟化平台面临的新安全威胁
(一)与传统计算模式不同的安全问题
-
虚拟机标识问题:
- 虚拟机MAC地址易伪造,难以建立唯一身份标识。
- 导致责任追溯困难。
-
虚拟机短暂存在性问题:
- 虚拟机可快速创建/销毁,网络上瞬间出现/消失大量主机。
- 被利用可加速病毒传播。
-
虚拟机多样性问题:
- 虚拟机状态可被修改、伪造(如快照被篡改)。
- 攻击源头难以追踪。
(二)具体攻击向量
- 管理域攻击:攻击者利用设备管理模型或管理程序缺陷,控制整个平台。
- 跨虚拟机攻击:通过完全控制一个客户机,攻击VMM或同一平台上的其他虚拟机。
- 隐蔽通道信息泄露:利用CPU负载、缓存响应时间、多核状态等探测其他虚拟机的秘密信息。
- 网络攻击:在没有保护措施下拦截、修改、丢弃网络流量。
三、虚拟化平台安全体系结构XSM的主要目标
XSM(Xen Security Module)是Xen的通用安全框架,其核心目标如下:
(一)架构设计目标
- 模块化安全功能定制:允许按需加载安全模块,无需修改Xen核心。
- 通用安全接口:提供统一钩子(hooks)接口供安全模块调用。
- 核心与策略分离:将特定安全代码从Xen核心移除,降低TCB(可信计算基)。
(二)功能目标
- 支持主流安全模型:可支持RBAC、TE、MLS、CW等多种模型。
- 减少对Xen的影响:钩子设计尽量使用现有错误返回路径,避免直接引用Xen对象。
- 动态配置能力:可设置是否开启安全框架,安全目标可动态配置。
- 不影响现有机制:新安全功能不对Xen内部机制造成影响。
(三)应用场景目标
- 分解Dom0权限:移除权限过大的dom0,实现最小权限原则。
- 资源划分控制:允许特定域控制资源分配,安全模块仲裁资源访问。
- 保护平台免受第三方攻击:通过设备驱动隔离、沙箱技术保护平台。
- 保护平台核心服务:安全创建平台服务(如加密、IP过滤),隔离并仲裁服务访问。
四、虚拟化平台安全模块实例分析(ACM)
(一)ACM(Access Control Module)概述
ACM是Xen的早期安全模块,基于IBM sHype架构,实现两种主要策略:
(二)STE(Simplified Type Enforcement)策略
-
核心概念:
- 定义type(类型)和label(标签)
- 每个虚拟机/资源被打上label,label由一组types组成
-
访问规则:
- 资源访问:虚拟机X的label与资源Y的label至少有一个相同type时,允许访问。
- 虚拟机通信:虚拟机A和B的label至少有一个相同type时,允许通信。
- 示例:Label-d0={t1,t2,t3},Label-d1={t2,t4},则d0和d1可通过t2通信。
(三)中国墙(Chinese Wall,CW)策略
- 设计目的:防止利益冲突的虚拟机同时运行在同一平台。
- 实现方式:
- 定义“冲突集”(如{Bank-A, Bank-B})
- 每个虚拟机被打上Chinese Wall Type标签
- 规则:新虚拟机启动前检查,若与已运行虚拟机在同一冲突集中,则拒绝启动。
- 应用场景:银行A和银行B的虚拟机不能同时运行,防止数据泄露。
(四)ACM的局限性
- 钩子覆盖不全:只实现了XSM 73个钩子中的7个。
- 策略与执行混淆:决策逻辑和执行逻辑未清晰分离。
- 灵活性不足:催生了更完善的Flask架构。
五、虚拟机监控VMI技术实例(XenAccess安全API)
(一)VMI(Virtual Machine Introspection)技术原理
- 基本概念:在Hypervisor层面监控虚拟机内部状态,无需进入虚拟机内部。
- 必要性:虚拟机对文件的访问在传递到Dom0时已转化为磁盘块、内存地址等底层形式,需要VMI解析。
(二)XenAccess架构详解
-
组成结构:
Monitor App(监控应用) ↓ XenAccess Library(API库) ↓ XenControl Library + XenStore Library + BlkTap ↓ Domain 0 Kernel + Drivers ↓ Xen VMM -
两大监控能力:
- 内存监控:通过libxc的内存访问函数映射虚拟机内存页。
- 磁盘I/O监控:通过BlkTap能力拦截磁盘I/O操作。
-
工作流程:
- XenAccess在Dom0中运行,与BlkTap和XenCtrl库通信。
- 监控应用通过API获取虚拟机内存和磁盘操作信息。
- 无需修改被监控虚拟机,实现透明监控。
(三)与VMSafe对比
- VMSafe(VMware):整合Hypervisor和第三方安全软件的虚拟层,过滤所有进出虚拟机的流量。
- XenAccess(Xen):提供API供第三方监控软件使用,侧重内存和磁盘监控。
六、虚拟机之间的隐蔽通道实例分析
(一)隐蔽通道基本概念
隐蔽通道:违反系统安全策略的非法信息传输通道,在虚拟化平台中尤为危险,因为:
- 虚拟机理论上应完全隔离。
- 共享物理资源(CPU、内存、缓存)可能成为信息载体。
(二)三类隐蔽通道实例
1. XenCC - 基于mfn2pfn映射表的存储通道
- 原理:机器地址-伪物理地址映射表(mfn2pfn)对所有Guest可读,拥有者可写。
- 利用方式:
- 发送方在表中写入标签(tag)和数据。
- 接收方遍历表寻找标签,读取数据。
- 通过ack机制同步传输。
- 本质:利用地址映射表作为共享存储介质。
2. 基于CPU负载的定时通道
- 原理:Xen调度算法允许为domain设置weight和cap参数,影响CPU分配。
- 利用方式:
- 发送方通过制造/不制造CPU负载改变调度。
- 接收方通过测量运行固定代码的时间差异判断负载状态。
- 编码规则:独立运行与调度运行时间比>90%为“0”,否则为“1”。
- 数据率:较低,但足以传输密钥等少量敏感信息。
3. 基于共享内存的定时通道
- 原理:利用对共享内存读写的时间差传递信息。
- 实施步骤:
1. Pi将信息编码为二进制(T0表示0,T1表示1,T0<T1) 2. 建立共享内存结构,通过授权表共享 3. Pi按编码时间间隔发送数据 4. Pj测量到达时间间隔,解码为二进制 5. 通信结束解除映射 - 特点:隐蔽性高,难以检测。
(三)隐蔽通道防御思路
- 资源隔离强化:减少共享资源,或严格限制共享方式。
- 噪声注入:在共享资源中注入随机噪声,干扰信号传输。
- 行为监控:检测异常的CPU使用模式或内存访问模式。
- 调度算法改进:使用公平调度,减少因调度差异导致的信息泄露。
七、扩展知识
(一)虚拟机安全迁移关键技术
-
vTPM迁移协议:
- 保护vTPM实例数据的机密性和完整性。
- 重新建立新平台上的信任链。
- 流程:源vTPM→加密传输→目标vTPM解密重建。
-
基于可信第三方的迁移:
- MA(Migration Authority)验证源和目标平台的完整性。
- 策略匹配检查通过后才允许迁移。
(二)XSM钩子机制
-
钩子类型:
- PRE-Hooks:操作前检查
- POST-Hooks:操作后处理
- FAIL-Hooks:操作失败处理
-
钩子放置原则:
- 关键位置(dom0_ops.c、domain.c、grant_table.c等)
- 兼顾安全性和可维护性
(三)Flask模块(ACM的演进)
-
优势:
- 更完整的钩子实现(73个全部支持)
- 策略决策与执行逻辑分离
- 支持RBAC/TE和MLS/MCS多种模型
-
应用场景:
- 细粒度控制物理中断分配
- 细粒度控制domain间内存共享
- 细粒度控制IO资源分配
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)