首页 / 专利库 / 软件 / 补丁 / 热补丁 / 一种基于Xen虚拟化平台的漏洞热修复方法

一种基于Xen虚拟化平台的漏洞热修复方法

阅读:539发布:2020-05-13

专利汇可以提供一种基于Xen虚拟化平台的漏洞热修复方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种基于Xen虚拟化平台的漏洞热修复方法。该方法通过特权域Dom0修复Xen平台漏洞,无需重启机器和暂停平台上 虚拟机 的运行,实现了基于Xen的虚拟化平台漏洞热修复功能;该方法通过特权域Dom0完成 补丁 的插入和应用,保证了补丁的可控性和安全性;该方法中新增的Xen超级调用操作,用来实现Xen与Dom0间通信,在补丁插入前和插入后分别设置标志位,不包含补丁的增删改查操作,避免了恶意攻击者利用虚拟机 申请 超级调用的方式破坏Xen 内核 函数。本发明能够准确地修复虚拟化平台漏洞,无需重启机器,保证了虚拟化平台上虚拟机的正常运行,且利用Dom0进行修复更加安全。,下面是一种基于Xen虚拟化平台的漏洞热修复方法专利的具体信息内容。

1.一种基于Xen虚拟化平台的漏洞热修复方法,其特征在于,包括以下步骤:
1)根据Xen系统的e820表计算Xen物理内存起始地址;
2)根据计算出的物理内存起始地址及Xen内存分布,计算待修复函数的虚拟地址所映射到的物理地址;
3)通过特权域Dom0获取补丁机器码,并将补丁写入内存,记录补丁函数所在物理内存地址;
4)特权域Dom0使用超级调用通知Xen有补丁需要插入;
5)Xen处理特权域Dom0的超级调用请求,通知Dom0插入补丁;
6)补丁插入成功后,特权域Dom0使用超级调用通知Xen补丁插入完成,即完成漏洞热修复;
虚拟机运行过程中不断产生超级调用请求和VMEXIT、VMENTRY操作,其中VMEXIT是指虚拟机执行特权指令时,需要陷入到Xen中由Xen处理;Xen执行完特权指令后将结果返回到虚拟机中,执行VMENTRY操作切换到虚拟机中运行;
在补丁插入前和插入后分别设置标志位,用于保证插入补丁过程中待修复函数正确运行,即:Xen首先设置标志位,然后通知Dom0插入补丁;在补丁插入完成后,Xen重置标志位;
所述标志位包括livepatch_work和works_to_do,分别用来标识当前有补丁需要插入和正在执行补丁插入操作;为避免补丁插入过程中待修复函数被调用,在Xen的VMEXIT处理函数中首先判断livepatch_work标志位,若被设置,则存在补丁需要插入,继续判断works_to_do标志位,若被设置,则存在CPU正在执行补丁插入操作,此时暂停该VMEXIT处理过程,等待补丁插入操作完成,同时调度其他虚拟机运行;补丁插入完成后,Xen重置标志位livepatch_work和works_to_do,继续被暂停的VMEXIT处理过程。
2.如权利要求1所述的方法,其特征在于:特权域Dom0插入补丁时,Xen拦截VMEXIT请求,等待补丁插入完成。
3.如权利要求1所述的方法,其特征在于:补丁的插入利用特权域Dom0的DMA操作完成,将待修复函数所在内存虚拟地址映射到的物理地址作为DMA操作的物理内存地址。
4.如权利要求1所述的方法,其特征在于:Xen与特权域Dom0通过超级调用和事件通知的方式通信,当Xen的客户机需要执行更高权限的操作时,通过调用超级调用交给Xen来完成。
5.如权利要求1所述的方法,其特征在于:增加一个虚拟中断用于Xen和Dom0之间的通信,Xen向Dom0发送一个事件通知即虚拟中断请求,特权域Dom0处理该虚拟中断。

说明书全文

一种基于Xen虚拟化平台的漏洞热修复方法

技术领域

[0001] 本发明属于计算安全技术领域,涉及一种虚拟化平台漏洞修复的方法,特别涉及基于Xen虚拟化平台的漏洞热修复方法。

背景技术

[0002] 云计算作为一种迅速崛起的计算模式,受到了政府、工业界、学术界的广泛关注,正在给整个IT行业带来彻底的变革。云计算是指应用以服务形式通过互联网交付使用,并且数据中心硬件软件能够提供这些服务。云计算帮助企业、政府、公共机构、私营机构和研究机构形成更有效的、有需求驱动的计算系统。虚拟化技术作为云计算的基本组件,是支撑云计算最重要的技术基石。
[0003] 虚拟化带来了一定程度的可自定义性和可控性,实质上是一种创建不同计算环境的技术。三种最为常用的虚拟化技术是基于软件的完全虚拟化、硬件辅助虚拟化及类虚拟化技术。虚拟化技术经过多年的发展,出现了很多成熟的产品,应用也从最初的服务器到了桌面等更宽的领域。虚拟化软件的主流厂商包括VMware、Xen、KVM及Microsoft。其中,作为一个起源于英国剑桥大学的社区驱动的开源软件项目,Xen吸引了许多公司和科研院所的开发者,发展非常迅速。Xen最初的虚拟化思路是类虚拟化,通过修改Linux内核,实现处理器和内存的虚拟化,通过引入输入输出前后端驱动架构实现设备的类虚拟化。随着Xen社区的发展壮大,硬件完全虚拟化技术也被加入到Xen中。Xen目前已经非常成熟,基于Xen的虚拟化产品也很多,如Ctrix、Virtuallron、Redhat和Novell、阿里云等都有相应的产品。
[0004] 虚拟化技术飞速发展的同时,也不可避免的带来了很多安全问题,利用虚拟化平台漏洞进行攻击的恶意行为层出不穷,严重损害了云服务厂商和云服务使用者的利益。漏洞一旦曝光,为了不影响业务安全,需要云计算公司对漏洞进行快速修复。目前存在冷启动和热修复两种Xen漏洞修复方式。顾名思义,冷启动方式,指通过修改及编译Xen源码并重启机器的方式修复Xen平台系统漏洞。冷启动方式实现简单粗暴,但服务器的重启必然影响上层使用者业务的正常运行。热修复方式,指服务器运行期间,更改系统内存插入补丁。热修复方式不影响上层云服务使用者业务运行,技术槛高,同时需要考虑多种软硬件组合,给云计算厂商带来了极大挑战。因此有必要提出一种虚拟化平台漏洞热修复的方法,高效的修复虚拟化平台漏洞,避免恶意攻击的发生。

发明内容

[0005] 针对虚拟化平台漏洞修复问题,本发明提出了一种基于Xen虚拟化平台的漏洞热修复方法。在对Xen虚拟化平台进行环境搭建、使用及源码分析后,可以发现Xen虚拟化平台下存在特权域Dom0,Dom0的DMA操作可以访问Xen内存。本发明主要利用特权域Dom0对Xen漏洞进行内存修复。
[0006] 本发明采用的技术方案如下:
[0007] 一种基于Xen虚拟化平台的漏洞热修复方法,其步骤包括:
[0008] 1)根据Xen系统的e820表计算Xen物理内存起始地址,其中Xen系统的e820表为系统物理内存分布表,在Xen启动过程中生成并输出到系统日志中;
[0009] 2)根据计算出的物理内存起始地址及Xen内存分布,计算待修复函数的虚拟地址所映射到的物理地址,其中Xen内存分布为系统虚拟地址空间的内存分布,在Xen源码中有明确规定;
[0010] 3)通过特权域Dom0获取补丁机器码,并将补丁写入内存,记录补丁函数的物理地址;
[0011] 4)特权域Dom0使用超级调用通知Xen有补丁需要插入;
[0012] 5)Xen处理特权域Dom0的超级调用请求,设置标志位,通知Dom0插入补丁;
[0013] 6)特权域Dom0插入补丁,同时,Xen拦截VMEXIT请求,等待补丁插入完成;
[0014] 7)补丁插入成功后,特权域Dom0使用超级调用通知Xen补丁插入完成;
[0015] 8)Xen处理特权域Dom0超级调用请求,重置标志位。
[0016] 上述方法中,补丁的插入利用特权域Dom0的DMA(Direct Memory Access,直接内存访问)操作完成,需要计算待修复函数所在内存虚拟地址映射到的物理地址,作为DMA操作的物理内存地址。同时,所有补丁以机器码的形式写入内存。
[0017] 上述方法中,Xen与特权域Dom0通过超级调用和事件通知的方式通信。当Xen的客户机需要执行更高权限的操作时,如页表的更新、对物理资源的访问等,由于自身在非特权域无法完成这些操作,则需要通过调用超级调用交给Xen来完成。
[0018] 上述方法中,全虚拟化下虚拟机执行特权指令时,需要执行VMEXIT操作陷入到Xen,Xen执行内核函数代替虚拟机处理特权指令。
[0019] 本发明的有益效果是:
[0020] 1.本发明通过特权域Dom0修复Xen平台漏洞,无需重启机器和暂停平台上虚拟机的运行,实现了基于Xen的虚拟化平台漏洞热修复功能。
[0021] 2.本发明通过特权域Dom0完成补丁的插入和应用,保证了补丁的可控性和安全性。
[0022] 3.本发明新增的Xen超级调用操作,仅用来实现Xen与Dom0间通信,在补丁插入前和插入后分别设置标志位,不包含补丁的增删改查操作,避免了恶意攻击者利用虚拟机申请超级调用的方式破坏Xen内核函数。
[0023] 综上,本发明提出的基于Xen虚拟化平台的漏洞热修复方法,能够较准确地修复虚拟化平台漏洞,无需重启机器,保证了虚拟化平台上虚拟机的正常运行,且利用Dom0进行修复更加安全。附图说明
[0024] 图1为基于Xen虚拟化平台的漏洞热修复方法的流程示意图。

具体实施方式

[0025] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,可以理解的是,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0026] 实现本发明的一种具体实施方式如下,基于Xen虚拟化平台的漏洞热修复方法,其步骤为:
[0027] 1)根据Xen系统的e820表计算Xen物理内存起始地址;
[0028] 2)根据上述计算出的物理内存起始地址及Xen内存分布,计算待修复函数的虚拟地址所映射到的物理地址;
[0029] 3)通过特权域Dom0获取补丁机器码,并将补丁写入内存,记录补丁函数所在物理内存地址;
[0030] 4)特权域Dom0使用超级调用通知Xen有补丁需要插入;
[0031] 5)Xen处理特权域Dom0的超级调用请求,设置标志位,通知Dom0插入补丁;
[0032] 6)特权域Dom0插入补丁,同时,Xen拦截VMEXIT请求,等待补丁插入完成;
[0033] 7)补丁插入成功后,特权域Dom0使用超级调用通知Xen补丁插入完成;
[0034] 8)Xen处理特权域Dom0超级调用请求,重置标志位。
[0035] 本方法采用的虚拟化环境为Xen虚拟化平台,在Xen平台下虚拟机分为特权虚拟机Dom0和非特权虚拟机DomU。Xen系统内存为严格隔离的内存,在Xen 4.0版本以前,特权域Dom0的DMA操作可以访问到Xen系统内存。
[0036] Xen系统的e820表指当前系统物理内存分布表,描述当前系统物理内存的使用情况,在Xen启动过程中生成并输出到系统日志中。
[0037] Xen物理内存起始地址,是指Xen启动后内核函数的首地址。Xen启动后将内核动态重映射到一个高端的物理地址。
[0038] 待修复函数的虚拟地址所映射到的物理地址,是指待修复函数在物理内存中的位置,本发明通过特权域Dom0的DMA操作访问Xen系统内存,DMA操作使用的地址为物理内存地址。
[0039] 特权域Dom0和Xen之间使用超级调用和事件通知进行通信。特权域Dom0的用户从程序使用一个特殊的内核驱动程序privcmd申请超级调用,经内核处理后,交由下层Xen处理超级调用请求。
[0040] Xen向特权域Dom0发送事件通知,以虚拟中断的形式,Dom0收到事件通知后,处理过程和处理物理中断类似。
[0041] 虚拟机运行过程中会不断产生超级调用请求和VMEXIT、VMENTRY操作。VMEXIT是指虚拟机执行特权指令时,需要陷入到Xen中由Xen处理。Xen执行完特权指令后将结果返回到虚拟机中,执行VMENTRY操作切换到虚拟机中运行。其中VMEXIT的处理过程包括保存虚拟机寄存器状态,加载宿主机寄存器状态,执行VMEXIT处理函数,执行VMENTRY继续调度虚拟机运行。
[0042] 图1是上述基于Xen虚拟化平台的漏洞热修复方法的流程示意图,对其各步骤详细说明如下:
[0043] 1.计算Xen物理内存起始地址。
[0044] 启动过程中Xen Hypervisor被动态装载到内存的高端地址xen_phys_start。该高端地址通过以下公式确定:
[0045] xen_phys_start=end-reloc_size;
[0046] 其中end代表物理地址空间中,4G之内最大可用内存首地址。reloc_size为Xen的代码和数据段所占的内存空间的大小,默认为4M。在本发明的一实施例中,我们通过在另一台主机源码编译安装同一版本Xen,获得reloc_size大小值。
[0047] 2.计算待修复函数所在的内存物理地址。
[0048] Xen Hypervisor页面线性映射到高端虚拟地址,在本发明的一实施例中,通过查看Xen内存分布获得Xen内存虚拟起始地址xen_virt_start,另通过查看Xen-syms文件获得待修复函数虚拟地址VA,根据上述所得Xen物理内存起始地址,推算出待修复内存函数物理地址PA的计算公式:
[0049] ①offset=VA-xen_virt_start
[0050] ②PA=xen_phys_start+offset
[0051] 3.获取补丁机器码。
[0052] 因为补丁需要直接写入物理内存,所以要保证补丁机器码与内存函数机器码的格式一致。本发明结合已有的Linux下内核修复方法kpatch和kgraft实现原理,在同一主机上修复内核函数源码,重新编译安装Xen,最后通过特权域Dom0读取Xen二进制文件获取补丁函数的机器码。特权域Dom0执行DMA写操作将补丁机器码写入内存。
[0053] 在其它实施例中,也可通过在另一主机上修复内核函数源码,重新编译安装Xen,最后通过特权域Dom0的DMA操作读取补丁函数的机器码。补丁的写入可通过特权域Dom0的读文件操作将机器码写入kmalloc操作申请到的内核空间。
[0054] 4.特权域Dom0请求插入补丁。
[0055] 特权域Dom0和Xen通过超级调用和事件通知进行通信。超级调用和Linux下的系统调用类似,特权域Dom0的用户程序可以使用一个特殊的内核驱动程序privcmd申请超级调用。本发明新增一个超级调用操作HYPERVISOR_set_worktodo及两个子操作,分别用来设置标志位和清除标志位。
[0056] Xen处理Dom0的超级调用请求,设置标志位,并向特权域Dom0发送事件通知,通知Dom0可以进行补丁插入操作。本发明新增一个虚拟中断,用于Xen和Dom0之间的通信。Xen向Dom0发送一个事件通知即虚拟中断请求,特权域Dom0处理该虚拟中断,处理过程与物理中断相似。
[0057] 5.特权域Dom0插入补丁。
[0058] 为实现Xen运行过程中动态替换Xen Hypervisor内存函数,本发明通过特权域Dom0的一次DMA读操作,将原函数机器码前五个字节更改为一次JMP跳转指令,原函数执行时,指令从原函数跳转到新函数继续执行。
[0059] 为保证插入补丁过程中待修复函数正确运行,本发明通过设置标志位livepatch_work和works_to_do,分别用来标识当前有补丁需要插入和正在执行补丁插入操作。
[0060] 虚拟机运行过程中会不断产生超级调用请求和VMEXIT、VMENTRY操作。VMEXIT是指虚拟机执行特权指令时,需要陷入到Xen中由Xen处理。为避免补丁插入过程中待修复函数被调用,本发明在Xen的VMEXIT处理函数中首先判断livepatch_work标志位,若被设置,则存在补丁需要插入,继续判断works_to_do标志位,若被设置,则存在CPU正在执行补丁插入操作,此时暂停该VMEXIT处理过程,等待补丁插入操作完成,同时调度其他虚拟机运行。
[0061] 6.特权域Dom0通知Xen补丁插入完成。
[0062] 特权域Dom0通过一次DMA操作将补丁插入Xen内存,DMA操作结束时,特权域Dom0发送超级调用请求,通知Xen补丁插入完成,Xen重置标志位livepatch_work和works_to_do,继续被暂停的VMEXIT处理过程。
[0063] 实验结果:
[0064] 首先对基于Xen虚拟化平台的漏洞热修复方法进行功能有效性测试,测试结果表明通过本发明提出的方法可以在无需重启系统和暂停虚拟机的前提下修复Xen虚拟化平台漏洞,符合本发明的设计目标。
[0065] 其次为了衡量该方法给虚拟机带来的性能影响,对以下两种情况下的性能进行了分析和评估:没有进行热修复时虚拟机性能和热修复过程中虚拟机性能。内存读写为能够反映系统性能的典型操作,结果表明,使用该方法进行漏洞修复的虚拟化平台与原始平台在性能上虽出现差异,与现有的一些方法在保证修复Xen虚拟化平台漏洞的同时暂停虚拟机运行相比,本发明实验结果对虚拟机性能损失在可接受范围内,且修复完成后系统性能恢复,本发明方法的检测效果更好。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈