CN102819712A - 保证虚拟机操作***安全性的方法及装置 - Google Patents
保证虚拟机操作***安全性的方法及装置 Download PDFInfo
- Publication number
- CN102819712A CN102819712A CN2012102716252A CN201210271625A CN102819712A CN 102819712 A CN102819712 A CN 102819712A CN 2012102716252 A CN2012102716252 A CN 2012102716252A CN 201210271625 A CN201210271625 A CN 201210271625A CN 102819712 A CN102819712 A CN 102819712A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- operating system
- address
- vme operating
- attitude
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种保证虚拟机操作***安全性的方法及装置。该方法包括:步骤a,将虚拟机操作***编译在管理态下能访问而用户态下不能访问的地址;步骤b,设置虚拟机监视器VMM,使宿主机在陷入虚拟机时,判断虚拟机的状态;步骤c,所述虚拟机在运行虚拟机操作***的状态下,虚拟机运行于管理态。本方法不需要修改硬件,仅需要重新编译虚拟机操作***和适当修改虚拟机监视器VMM便可以在MIPS架构安全的使用虚拟机操作***。
Description
技术领域
本发明涉及计算机硬件体系结构和***虚拟化领域,尤其涉及一种保证虚拟机操作***安全性的方法及装置。
背景技术
随着云计算的流行,***虚拟化得到了越来越快的发展,越来越多的架构尝试着增加虚拟化的支持,MIPS架构也不例外。
与其它架构不同的是,MIPS拥有自己一套保护操作***的方法:MIPS的特权段和非特权段访问的空间是分开的。以MIPS64构架为例:
核心态下能访问的空间是0x0000 0000 0000 0000到0xffff ffff ffffffff。
管理态下能访问的空间是0x0000 0000 0000 0000到0x7fff ffff ffffffff。
用户态下能访问的空间是0x0000 0000 0000 0000到0x3fff ffff ffffffff。
因此,只需要将虚拟机操作***编译到仅能在核心态下访问的地址,就能保证虚拟机操作***的安全性。但是虚拟机是不能运行于核心态下,可能会跟用户地址空间重叠,造成安全性问题。这是MIPS架构增加虚拟机支持必须解决的问题。
典型的处理方式是在CPU内部增加分段(Segment)机制,类似x86架构,通过分段机制使得虚拟机操作***和用户程序虽然访问相同地址,但是由于分段机制映射不一样,因此访问的地址也就不一样。然而当前主流的MIPS处理器中没有分段架构,因此这种方式在目前市场上的CPU均无法使用。并且,该方法复杂度很高。
所以,目前需要一种更简单有效的方式保证虚拟机操作***和用户程序的地址分区,以保证虚拟机操作***的安全性的方法。
发明内容
为实现上述目的,本发明提供了一种保证虚拟机操作***安全性的方法及装置。该方法包括:
步骤a,将虚拟机操作***编译在管理态下能访问而用户态下不能访问的地址;步骤b,设置虚拟机监视器VMM,使宿主机在陷入虚拟机时,判断虚拟机的状态;步骤c,所述虚拟机在运行虚拟机操作***的状态下,虚拟机运行于管理态。
其中,步骤a,具体包括:修改虚拟机操作***的编译地址,将虚拟机操作***默认的编译地址替换为管理态下能访问而用户态下不能访问的地址;同时,修改虚拟机操作***的使用地址,将虚拟机操作***内部使用的核心态地址全部替换为管理态地址。然后,将修改后的虚拟机操作***地址映射为对应的物理地址。所述将修改后的虚拟机操作***地址映射为对应的物理地址是通过修改虚拟机监视器VMM中的TLB miss函数实现的。
步骤b中,判断虚拟机状态是宿主机通过查看宿主机上的虚拟机虚拟协处理器的状态寄存器而实现的。
步骤c还包括,虚拟机在运行用户程序的状态下时,则虚拟机运行于用户态。
本发明提供的保证虚拟机操作***安全性的方法运用于MIPS架构的CPU。
相应的,本发明还提供一种保证虚拟机操作***安全性的装置。该保证虚拟机操作***安全性的装置包括:编译模块,用于将虚拟机操作***编译在管理态下能访问而用户态下不能访问的地址;判断模块,用于设置虚拟机监视器VMM,使宿主机在进入虚拟机时,判断虚拟机的状态;运行模块,用于在所述虚拟机在运行虚拟机操作***的状态下时,使虚拟机运行于管理态。
进一步的,所述编译模块包括:第一编译模块,用于修改虚拟机操作***的编译地址,将虚拟机操作***默认的编译地址替换为管理态下能访问而用户态下不能访问的地址;第二编译模块,用于修改虚拟机操作***的使用地址,将虚拟机操作***内部使用的核心态地址全部替换为管理态地址。
进一步的,所述运行模块还用于在所述虚拟机在运行用户程序的状态下时,使虚拟机运行于用户态。
本发明提供的用于保证虚拟机操作***安全性的方法及装置不需要修改硬件,仅需要重新编译虚拟机操作***和适当修改虚拟机监视器(VMM)便可以在MIPS架构安全的使用虚拟机操作***。并且,该方法适用于当前主流的任意一种MIPS架构的CPU。
附图说明
图1是根据本发明一个实施例中实现区分虚拟机操作***地址和用户程序地址方法的流程图;
图2是根据本发明一个实施例中Kseg0段修改前后的对应关系图;
图3是根据本发明一个实施例中修改后的Kseg0段与通过修改TLB miss函数得到的物理地址的映射关系图;
图4是根据本发明一个实施例的宿主机判断工作模式的流程图;
图5是根据本发明一个实施例的保证虚拟机操作***安全性的装置结构示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
通过调研发现在MIPS架构上的Linux,VxWorks等操作***默认的地址全部是在核心态下能访问的地址(即0x8000 0000 0000 0000到0xffff ffffffff ffff之间的地址)和用户态下能访问的地址(即0x 0000 0000 0000 0000到0x3ffff ffff ffff ffff之间的地址),而用户程序地址仅是在用户态下能访问的地址(即0x0000 0000 0000 0000到0x3ffff ffff ffff ffff之间的地址)。并没有用户程序地址是在管理态下能访问而在用户态下不能访问的地址(即0x4000 0000 0000 0000到0x7fff ffff ffff ffff之间的地址)。
基于上述思想,本发明提供了一种区分虚拟机操作***地址和用户程序地址,使其互相没有冲突,即虚拟机运行用户程序时,运行于用户态,而虚拟机运行虚拟机操作***时,运行于管理态,以保证虚拟机操作***安全性的方法。
图1为实现该方法的流程图,具体的实现步骤如下:
步骤101,将虚拟机操作***编译在管理态下能访问而用户态下不能访问的地址。
这一步骤主要包括两方面:一方面是修改虚拟机操作***的编译地址,使虚拟机操作***的编译地址修改为在管理态下能访问而用户态下不能访问的地址;另一方面是修改虚拟机操作***的使用地址,将虚拟机操作***内部使用的核心态地址全部替换为管理态地址。通过这两方面既保证了虚拟机操作***代码运行在管理态下,又保证了虚拟机操作***中数据的访问地址全部位于管理态下。
然后再修改VMM(虚拟机监视器)中相应的TLB miss函数,将修改后的虚拟机操作***地址映射为对应的物理地址是通过修改TLB miss函数来实现的。
一个具体的实施例中,以Linux操作***为例,修改操作***的编译地址方式如下:在操作***的vmlinux.lds.s文件规定了操作***的起始地址,在MIPS架构中默认的起始地址是从0xffff ffff 8000 0000到0xffff ffff9000 0000之间的某一地址,因此若要修改操作***的编译地址,只需要替换上述文件中的默认值即可。修改操作***的使用地址方式如下:操作***会显示使用的核心态下的地址,例如0xffff ffff 8000 000,用于生成操作***的使用地址,因此改变操作***的使用地址的方式是检索操作***内部所有在核心态下的使用地址,逐一替换,以确保操作***所有使用地址均不在核心态下。
因此,不论是修改虚拟机操作***编译地址还是修改虚拟机操作***使用地址都涉及到了地址的替换,下面具体描述在龙芯CPU上实现地址替换的过程:
以Kseg0(在MIPS架构中在核心态下0xffff ffff 8000 0000到0xffffffff a000 0000的地址段名称)为例,虚拟机操作***在MIPS架构默认的起始地址为Kseg0段中某一个值,即在核心态下才能访问。因为用户态下能访问的地址是0x0000 0000 0000 0000到0x3fff ffff ffff ffff之间的地址,因此对虚拟机操作***编译地址修改时,使用0x4000 0000 8000 0000到0x4000 0000 a000 0000这一地址段来替代Kseg0段,Kseg0段修改前后的对应关系如图2所示。将Kseg0段修改后,虚拟机操作***在MIPS架构默认的起始地址也相应变为0x4000 0000 8000 0000到0x4000 0000 a000 0000中的某一个值,使得虚拟机操作***编译到了在管理态下能访问而用户态下不能访问的地址。
同时,修改虚拟机操作***的使用地址,逐一的替换虚拟机操作***内部每个使用Kseg0段的使用地址,使得内核编译运行在0x4000 0000 8000 0000到0x4000 0000 9000 0000中的某一段连续地址内,即虚拟机操作***运行在管理态下能访问而用户态下不能访问的地址。
另外,修改虚拟监视器(VMM)中的TLB缺失(miss)处理函数使得0x40000000 8000 0000到0x4000 0000 a000 0000直接映射到0到2000 0000的虚拟机物理地址,以确保对应的物理地址的正确性。修改后的Kseg0段与通过修改TLB miss函数得到的物理地址的映射关系如图3所示。
通过步骤101,可以在管理态下完全模拟Kseg0段的特性。同样的,该方法不仅限于Kseg0段。其它类似的地址段如Kseg1等也可以通过上述方法将其编译并运行在管理态下能访问而用户态下不能访问的地址。
步骤102,设置VMM(虚拟机监视器),使宿主机在陷入虚拟机时,判断虚拟机的状态。
通过判断虚拟机的状态,来确定虚拟机运行于何种状态。
步骤103,如果虚拟机在运行虚拟机操作***的状态下,虚拟机运行于管理态;如果虚拟机运行在用户程序的状态下,虚拟机运行于用户态。
图4为宿主机判断工作模式的流程图。
宿主机在进入虚拟机之前,通过查看宿主机上的虚拟机虚拟协处理器0(Coprocessor 0)的状态寄存器来判断虚拟机的状态。一般情况下,如果虚拟机在运行虚拟机操作***的状态下,虚拟机应运行于核心态。但是因为在步骤101中已经将虚拟机操作***的编译地址和使用地址进行修改为管理态下能访问而用户态下不能访问的地址,所以虚拟机运行于管理态;如果虚拟机在运行用户程序的状态下,虚拟机运行于用户态。
由于切换操作模式在MIPS架构上属于敏感操作,肯定会被虚拟机监视器(VMM)捕捉到,因此可以保证在执行虚拟机操作***时一定是处于管理态。
按照上述三个步骤,实现了一种在MIPS架构下简单有效地保证虚拟机操作***安全性的方法。该方法使得用户程序运行在用户态下,而虚拟机操作***运行在管理态下,因此两者地址互不冲突。如果用户程序访问了虚拟机操作***地址,必定会产生异常,由此便保证了虚拟机操作***的安全性。
相应的,本发明提供一种保证虚拟机操作***安全性的装置,如图5所示,其为本实施例保证虚拟机操作***安全性的装置结构示意图。
该保证虚拟机操作***安全性的装置包括:编译模块510,判断模块520及运行模块530。
具体的,编译模块510用于将虚拟机操作***编译在管理态下能访问而用户态下不能访问的地址。
编译模块510还包括第一编译模块511和第二编译模块512。其中,第一编译模块511用于修改虚拟机操作***的编译地址,将虚拟机操作***默认的编译地址替换为管理态下能访问而用户态下不能访问的地址。第二编译模块512用于修改虚拟机操作***的使用地址,将虚拟机操作***内部使用的核心态地址全部替换为管理态地址。
判断模块520,用于设置虚拟机监视器VMM,使宿主机在进入虚拟机时,判断虚拟机的状态。
通过判断虚拟机的状态,来确定虚拟机运行于何种状态。
运行模块530,用于在虚拟机在运行虚拟机操作***的状态下时,使虚拟机运行于管理态。
如果虚拟机在运行虚拟机操作***的状态下,虚拟机应运行于核心态。但是因为在编译模块510已经将虚拟机操作***的编译地址和使用地址进行修改为管理态下能访问而用户态下不能访问的地址,所以第一运行模块530使虚拟机运行于管理态。
运行模块530还用于在虚拟机在运行用户程序的状态下时,使虚拟机运行于用户态。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种保证虚拟机操作***安全性的方法,其特征在于,包括:
步骤a,将虚拟机操作***编译在管理态下能访问而用户态下不能访问的地址;
步骤b,设置虚拟机监视器VMM,使宿主机在进入虚拟机时,判断虚拟机的状态;
步骤c,所述虚拟机在运行虚拟机操作***的状态下,虚拟机运行于管理态。
2.根据权利要求1中所述的方法,其特征在于,步骤a,具体包括:
修改虚拟机操作***的编译地址,将虚拟机操作***默认的编译地址替换为管理态下能访问而用户态下不能访问的地址;
同时,修改虚拟机操作***的使用地址,将虚拟机操作***内部使用的核心态地址全部替换为管理态地址。
3.根据权利要求2所述的方法,其特征在于,步骤a,还包括:
将修改后的虚拟机操作***地址映射为对应的物理地址。
4.根据权利要求3所述的方法,其特征在于,所述将修改后的虚拟机操作***地址映射为对应的物理地址是通过修改虚拟机监视器VMM中的TLBmiss函数实现的。
5.根据权利要求1中所述的方法,其特征在于,步骤b中,
所述判断虚拟机的状态是宿主机通过查看宿主机上的虚拟机虚拟协处理器的状态寄存器而实现的。
6.根据权利要求1中所述的方法,其特征在于,步骤c还包括:
所述虚拟机在运行用户程序的状态下,虚拟机运行于用户态。
7.根据权利要求1所述的方法,其特征在于,所述保证虚拟机操作***安全性的方法运用于MIPS架构的CPU。
8.一种虚拟机操作***安全性的装置,其特征在于,包括:
编译模块,用于将虚拟机操作***编译在管理态下能访问而用户态下不能访问的地址;
判断模块,用于设置虚拟机监视器VMM,使宿主机在进入虚拟机时,判断虚拟机的状态;
运行模块,用于在所述虚拟机在运行虚拟机操作***的状态下时,使虚拟机运行于管理态。
9.根据权利要求1所述的装置,其特征在于,所述编译模块包括:
第一编译模块,用于修改虚拟机操作***的编译地址,将虚拟机操作***默认的编译地址替换为管理态下能访问而用户态下不能访问的地址;
第二编译模块,用于修改虚拟机操作***的使用地址,将虚拟机操作***内部使用的核心态地址全部替换为管理态地址。
10.根据权利要求7所述的装置,其特征在于,所述运行模块还用于在所述虚拟机在运行用户程序的状态下时,使虚拟机运行于用户态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210271625.2A CN102819712B (zh) | 2012-08-01 | 2012-08-01 | 保证虚拟机操作***安全性的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210271625.2A CN102819712B (zh) | 2012-08-01 | 2012-08-01 | 保证虚拟机操作***安全性的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102819712A true CN102819712A (zh) | 2012-12-12 |
CN102819712B CN102819712B (zh) | 2014-11-26 |
Family
ID=47303822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210271625.2A Active CN102819712B (zh) | 2012-08-01 | 2012-08-01 | 保证虚拟机操作***安全性的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102819712B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104050017A (zh) * | 2014-07-01 | 2014-09-17 | 龙芯中科技术有限公司 | 运行虚拟机的控制方法和装置 |
US20220179662A1 (en) * | 2020-12-08 | 2022-06-09 | Citrix Systems, Inc. | Device identifier translation systems and methods |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101470633A (zh) * | 2007-12-24 | 2009-07-01 | 联想(北京)有限公司 | 一种虚拟机监视器、虚拟机***及其内存处理方法 |
CN101968746A (zh) * | 2010-09-02 | 2011-02-09 | 北京航空航天大学 | 一种内核虚拟机组织架构模式的实现方法 |
CN102402453A (zh) * | 2012-01-04 | 2012-04-04 | 北京航空航天大学 | 一种面向mips平台的***虚拟机 |
CN102567217A (zh) * | 2012-01-04 | 2012-07-11 | 北京航空航天大学 | 一种面向mips平台的内存虚拟化方法 |
-
2012
- 2012-08-01 CN CN201210271625.2A patent/CN102819712B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101470633A (zh) * | 2007-12-24 | 2009-07-01 | 联想(北京)有限公司 | 一种虚拟机监视器、虚拟机***及其内存处理方法 |
CN101968746A (zh) * | 2010-09-02 | 2011-02-09 | 北京航空航天大学 | 一种内核虚拟机组织架构模式的实现方法 |
CN102402453A (zh) * | 2012-01-04 | 2012-04-04 | 北京航空航天大学 | 一种面向mips平台的***虚拟机 |
CN102567217A (zh) * | 2012-01-04 | 2012-07-11 | 北京航空航天大学 | 一种面向mips平台的内存虚拟化方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104050017A (zh) * | 2014-07-01 | 2014-09-17 | 龙芯中科技术有限公司 | 运行虚拟机的控制方法和装置 |
CN104050017B (zh) * | 2014-07-01 | 2017-05-03 | 龙芯中科技术有限公司 | 运行虚拟机的控制方法和装置 |
US20220179662A1 (en) * | 2020-12-08 | 2022-06-09 | Citrix Systems, Inc. | Device identifier translation systems and methods |
US11513811B2 (en) * | 2020-12-08 | 2022-11-29 | Citrix Systems, Inc. | Device identifier translation systems and methods |
Also Published As
Publication number | Publication date |
---|---|
CN102819712B (zh) | 2014-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Qian et al. | {RAZOR}: A framework for post-deployment software debloating | |
US11841966B2 (en) | Inhibiting memory disclosure attacks using destructive code reads | |
US10445494B2 (en) | Attack protection for valid gadget control transfers | |
Olivier et al. | A binary-compatible unikernel | |
Abbasi et al. | Challenges in designing exploit mitigations for deeply embedded systems | |
US10740152B2 (en) | Technologies for dynamic acceleration of general-purpose code using binary translation targeted to hardware accelerators with runtime execution offload | |
JP6006248B2 (ja) | 命令エミュレーションプロセッサ、方法、およびシステム | |
CN109923546B (zh) | 虚拟机安全性应用程序的事件过滤 | |
US7886293B2 (en) | Optimizing system behavior in a virtual machine environment | |
US8719513B2 (en) | System and method for maintaining memory page sharing in a virtual environment | |
US9792222B2 (en) | Validating virtual address translation by virtual machine monitor utilizing address validation structure to validate tentative guest physical address and aborting based on flag in extended page table requiring an expected guest physical address in the address validation structure | |
Kim et al. | RevARM: A platform-agnostic ARM binary rewriter for security applications | |
Wang et al. | A General Persistent Code Caching Framework for Dynamic Binary Translation ({{{{{DBT}}}}}) | |
US7856547B1 (en) | Fast stub and frame technology for virtual machine optimization | |
US20160048458A1 (en) | Computer Security Systems and Methods Using Hardware-Accelerated Access To Guest Memory From Below The Operating System | |
CN114398172A (zh) | 资源配置方法、装置、电子设备及计算机可读存储介质 | |
CN107506623B (zh) | 应用程序的加固方法及装置、计算设备、计算机存储介质 | |
CN102819712A (zh) | 保证虚拟机操作***安全性的方法及装置 | |
CN105989758B (zh) | 地址翻译方法和装置 | |
CN104346275A (zh) | 内存测试***及方法 | |
US10372902B2 (en) | Control flow integrity | |
CN113449292B (zh) | 一种可信应用的运行方法、装置及设备 | |
CN112416821A (zh) | 在计算***中定义存储器信息泄漏区域的装置、***和方法 | |
d'Antras et al. | Hypermambo-x64: Using virtualization to support high-performance transparent binary translation | |
CN108958879B (zh) | 一种虚拟机的监控方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee after: Loongson Zhongke Technology Co.,Ltd. Address before: 100190 No. 10 South Road, Zhongguancun Academy of Sciences, Haidian District, Beijing Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd. |