CN102509048A - 防止操作系统中断流程被非法转移的方法 - Google Patents

防止操作系统中断流程被非法转移的方法 Download PDF

Info

Publication number
CN102509048A
CN102509048A CN201110359598XA CN201110359598A CN102509048A CN 102509048 A CN102509048 A CN 102509048A CN 201110359598X A CN201110359598X A CN 201110359598XA CN 201110359598 A CN201110359598 A CN 201110359598A CN 102509048 A CN102509048 A CN 102509048A
Authority
CN
China
Prior art keywords
operating system
register
virtual machine
machine manager
interrupt
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.)
Pending
Application number
CN201110359598XA
Other languages
English (en)
Inventor
李金库
谢琨
马建峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN201110359598XA priority Critical patent/CN102509048A/zh
Publication of CN102509048A publication Critical patent/CN102509048A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明公开一种防止操作系统中断流程被非法转移的方法,主要解决现有技术无法阻止攻击者非法转移操作系统中断流程的问题。其实现步骤是:修改操作系统中断处理流程,在中断发生和结束时向虚拟机管理器发送特定消息;修改虚拟机管理器,当它接收到中断发生消息时,保存操作系统当前栈上CS和IP寄存器的值到先入后出FILO队列,当它接收到中断结束消息时,取出FILO队列头部保存的CS和IP寄存器的值与操作系统当前栈上的值进行比较,如果两者的值不同,则终止操作系统的执行,以防止攻击者的非法转移。本发明借助于虚拟机管理保护中断上下文中的控制数据,使得攻击者无法通过篡改它们而转移操作系统的执行流程,可用于保护操作系统的安全。

Description

防止操作系统中断流程被非法转移的方法
技术领域
本发明属于计算机科学与技术领域,涉及恶意软件的防护,具体是一种基于虚拟机管理器的防止操作系统中断流程被非法转移的方法,可用于保护操作系统的安全。
背景技术
基于执行流程的攻击是当代黑客采用的一种典型攻击手段。它通过在某个关键点上将程序原有的执行流程进行非法转移,跳转到攻击者自己的恶意代码,或按照攻击者精心选定的次序来“滥用”原有的代码片段,达到恶意攻击的目的。
为了转移原有的执行流程,攻击者需要改写系统中的某个控制数据。所谓控制数据是指计算机程序在执行到某个时刻被载入CPU程序计数器中的数据,它决定了程序跳转时的执行路径。由于控制数据的特殊性,它们经常被攻击者利用来实施基于执行流程的攻击。为了抵御这些攻击,相关研究者提出了多种技术方法来保护操作系统中的控制数据,防止它们被恶意篡改。目前,针对操作系统中两种常用的控制数据:函数指针和返回地址,业界已经提出了一些解决方案。例如,Wang等提出的HookSafe系统[Wang et al.,ACM CCS 2009]和Li等提出的return-less系统[Li et al.,ACM EuroSys2010]通过间接索引的方式分别对函数指针和返回地址提供了基于硬件的页面级保护。
然而,在操作系统内核中存在着一种重要的例外情形,那就是中断上下文中控制数据的保护。当一个中断发生时,系统将暂停当前程序的执行,强制将执行流程转移给相应的中断处理程序。同时,系统保存当前正在运行程序的上下文相关信息,以便将来恢复运行。在中断上下文信息中,系统硬件将自动把被中断程序的断点地址压入系统栈中。由于这个断点地址决定了中断处理结束后的返回位置,所以将这个断点地址称为中断上下文中的控制数据。它由代码段寄存器CS和指令指针寄存器IP共同组成,通常用“CS:IP”表示。我们必须对这个断点地址进行保护,因为攻击者同样可以利用它来非法转移操作系统正常的执行流程。
中断的特殊性在于无法预先得知它所发生的具体时间和位置,因为它有可能发生在系统中几乎任意指令的边缘。理论上,中断上下文中对应CS和IP寄存器的位置有可能保存了系统中任意有效的指令地址。因此,对于操作系统中断流程的保护是个非常棘手的问题。
发明内容
针对操作系统中断流程被非法转移的问题,本发明提出了一种防止操作系统中断流程被非法转移的方法。该方法基于虚拟机管理器技术来保护中断上下文中的控制数据,阻止攻击者通过篡改该数据来非法转移操作系统的中断流程,保护操作系统的安全。
为了实现上述目的,本发明的防止操作系统中断流程被非法转移的方法,包括:
(1)操作系统中断处理流程修改步骤
(1.1)在操作系统中断处理程序的入口点增加超级调用hypercall 1,向虚拟机管理器发送Interrupt_Begin消息;
(1.2)在操作系统中断处理程序执行结束返回之前加入超级调用hypercall 2,向虚拟机管理器发送Interrupt_End消息;
(2)虚拟机管理器修改步骤
(2.1)初始化保存中断上下文中控制数据“CS:IP”的先入后出FILO队列;
(2.2)虚拟机管理器监听客户机操作系统发送来的消息,如果虚拟机管理器接收到客户机发送来的Interrupt_Begin消息,则执行步骤(2.3);如果虚拟机管理器接收到客户机发送来的Interrupt_End消息,则执行步骤(2.4);否则继续监听;
(2.3)虚拟机管理器复制操作系统栈上CS寄存器和IP寄存器的值到先入后出FILO队列的头部,返回步骤(2.2);
(2.4)虚拟机管理器取出先入后出FILO队列头部保存的CS寄存器和IP寄存器的值,并与操作系统当前栈上CS寄存器和IP寄存器的值分别进行比较,如果相同,表明中断上下文中的控制数据即CS寄存器和IP寄存器的值未被非法篡改,返回步骤(2.2);否则表明中断上下文中的控制数据即CS寄存器和/或IP寄存器的值被非法篡改,系统发生错误,停止操作系统的执行。
本发明与现有的技术相比,具有如下的有益效果:
1)本发明基于虚拟机管理器技术,借助于虚拟机管理器,通过修改客户机操作系统中断处理流程,提供了对操作系统中断上下文中控制数据的保护,从而阻止了攻击者通过篡改该数据来非法转移操作系统的中断流程;
2)本发明弥补了现有技术仅仅能对两种常用的控制数据,即函数指针和返回地址进行保护的缺陷,将本发明与现有控制数据保护技术相结合,可以从根本上防止针对操作系统执行流程的攻击行为,为计算机操作系统内核安全提供有力的保障。
附图说明
图1是本发明的原理示意图;
图2是本发明的流程图。
具体实施方式
本发明的原理如图1所示。它基于虚拟机管理器技术实现,具体实施时需要将操作系统运行于虚拟机管理器之上。虚拟机管理器,又称为hypervisor,是一种硬件虚拟化技术,它允许多个客户机同时运行在一台计算机主机上。虚拟机管理器本质上是在计算机硬件和操作系统之间引入的虚拟层,它可以为每个操作系统提供独立的运行环境,屏蔽硬件平台的动态性、分布性和异构性,支持硬件资源的共享和复用,并为每个客户机提供专属的、独立的、隔离的运行环境。引入虚拟机管理器以后,操作系统不再具有主机的最高权限,所有针对计算机硬件资源的访问都必须通过虚拟机管理器来完成。如果客户机操作系统想主动与虚拟机管理器通讯,它通过一种称为hypercall的超级调用来进行,hypercall类似于虚拟机管理器提供给客户机的系统调用。本发明的核心思想就是利用操作系统和虚拟机管理器之间的hypercall通讯机制对操作系统中断上下文中CS/IP寄存器的值进行保护和验证。
在操作系统中,当中断发生时,系统硬件会自动将CS寄存器和IP寄存器中的值压入栈中,然后保存系统中的其他上下文信息,比如系统堆栈的基地址、标识寄存器等;然后进入中断处理例程;中断处理例程结束后,恢复保存的其他上下文信息,并通过iret指令将栈中保存的CS寄存器和IP寄存器的值弹出,返回中断点,继续原程序的处理。
为了使得操作系统的中断流程不被非法转移,需要保证在中断返回时所使用的上下文中CS寄存器和IP寄存器中的值和中断发生时压入栈中的值相同。为此,本发明的设计思想是在操作系统中断发生的第一时间通过hypercall通知虚拟机管理器,虚拟机管理器接到通知后,将系统栈中CS寄存器和IP寄存器的值复制到一个由它直接控制的队列里,为了支持中断的嵌套处理,虚拟机管理器使用一个先进后出FILO队列来保存CS/IP寄存器的值;中断处理结束后,在中断返回即执行iret指令之前,操作系统通过另一个hypercall通知虚拟机管理器,虚拟机管理器接到通知后,从FILO队列的头部取出CS/IP寄存器的值,与iret指令所要使用的操作系统栈中CS/IP寄存器的值进行比较:如果它们的值不相同,系统发生错误,虚拟机管理器停止操作系统的执行。
在以上处理中,由于虚拟机管理器运行在客户机操作系统之下,客户机操作系统无权对虚拟机管理器保护的FILO队列进行改写,从而保证了本发明的可行性。另外,需要指出的是,如果客户机运行在一个对称多处理SMP机器上,在虚拟机管理器将栈上CS/IP寄存器的值保存到FILO队列之前,理论上存在一个很小的机会使得攻击者可以在另一个处理器上篡改它们的值。然而,这个机会非常小,而且结果难以预料,基本不具备可行性。同时,不用担心在本地处理器上CS/IP的值会在虚拟机管理器对它们进行复制之前而遭到篡改,因为中断发生后,在CS/IP寄存器被硬件自动压入系统栈之前,系统中断处于被禁止状态。
鉴于上述原理和思想,本发明的具体实现流程如图2所示。
参照图2,本发明包括操作系统中断处理流程修改和虚拟机管理器修改两部分:
一.操作系统中断处理流程修改
步骤1,在操作系统中断处理程序的入口点增加超级调用hypercall 1,向虚拟机管理器发送Interrupt_Begin消息,该Interrupt_Begin消息用来向虚拟机管理器通知客户机操作系统中断事件的发生。
步骤2,在操作系统中断处理程序执行结束返回之前,即中断处理程序中的iret指令执行之前加入超级调用hypercall 2,向虚拟机管理器发送Interrupt_End消息,该Interrupt_End消息用来向虚拟机管理器通知客户机操作系统中断事件的结束。
二.虚拟机管理器修改
步骤3,初始化保存中断上下文中控制数据“CS:IP”的先入后出FILO队列。
先入后出FILO队列中的每个成员包括两个变量域,分别用来保存操作系统中断上下文中CS寄存器和IP寄存器的值。队列初始化由虚拟机管理器调用系统内存分配函数,比如malloc为先入后出FILO队列申请一段内存空间,并在申请成功后调用内存清零函数,比如bzero将该队列初始化为全零。由于在操作系统中,某个低优先级的中断处理流程有可能会被高优先级的中断打断,只有在高优先级的中断处理流程结束后,才会继续低优先级中断的处理流程;为了支持这种中断嵌套的情形,需要对先保存的低优先级中断的CS寄存器和IP寄存器后验证,而对后保存的高优先级中断的CS寄存器和IP寄存器先验证,所以设计了此先入后出FILO队列。
步骤4,虚拟机管理器监听客户机操作系统发送来的消息,如果虚拟机管理器接收到客户机发送来的Interrupt_Begin消息,则执行步骤5;如果虚拟机管理器接收到客户机发送来的Interrupt_End消息,则执行步骤6;否则继续监听。
本发明定义了两个与中断相关的消息,即Interrupt_Begin消息和Interrupt_End消息,由客户机操作系统通过hypercall超级调用发送给虚拟机管理器;虚拟机管理器循环监听这两个消息,来捕捉中断事件的发生和结束。
步骤5,虚拟机管理器复制操作系统栈上CS寄存器和IP寄存器的值到先入后出FILO队列的头部,返回步骤4。
步骤6,虚拟机管理器取出先入后出FILO队列头部保存的CS寄存器和IP寄存器的值,并与操作系统当前栈上CS寄存器和IP寄存器的值分别进行比较,如果FILO队列保存的值和操作系统当前栈上的值相同,表明中断上下文中的控制数据即CS寄存器和IP寄存器的值未被非法篡改,返回步骤4;否则,如果FILO队列保存的值和操作系统当前栈上的值不相同,则表明中断上下文中的控制数据即CS寄存器和/或IP寄存器的值被非法篡改,系统发生错误,停止操作系统的执行。

Claims (4)

1.一种防止操作系统中断流程被非法转移的方法,包括:
(1)操作系统中断处理流程修改步骤
(1.1)在操作系统中断处理程序的入口点增加超级调用hypercall 1,向虚拟机管理器发送Interrupt_Begin消息;
(1.2)在操作系统中断处理程序执行结束返回之前加入超级调用hypercall 2,向虚拟机管理器发送Interrupt_End消息;
(2)虚拟机管理器修改步骤
(2.1)初始化保存中断上下文中控制数据“CS:IP”的先入后出FILO队列;
(2.2)虚拟机管理器监听客户机操作系统发送来的消息,如果虚拟机管理器接收到客户机发送来的Interrupt_Begin消息,则执行步骤(2.3);如果虚拟机管理器接收到客户机发送来的Interrupt_End消息,则执行步骤(2.4);否则继续监听;
(2.3)虚拟机管理器复制操作系统栈上CS寄存器和IP寄存器的值到先入后出FILO队列的头部,返回步骤(2.2);
(2.4)虚拟机管理器取出先入后出FILO队列头部保存的CS寄存器和IP寄存器的值,并与操作系统当前栈上CS寄存器和IP寄存器的值分别进行比较,如果相同,表明中断上下文中的控制数据即CS寄存器和IP寄存器的值未被非法篡改,返回步骤(2.2);否则表明中断上下文中的控制数据即CS寄存器和/或IP寄存器的值被非法篡改,系统发生错误,停止操作系统的执行。
2.根据权利要求1所述的防止操作系统中断流程被非法转移的方法,其中步骤(1.2)所述的在操作系统中断处理程序执行结束返回之前,是指在中断处理程序中的iret指令执行之前。
3.根据权利要求1所述的防止操作系统中断流程被非法转移的方法,其中步骤(2.1)所涉及的先入后出FILO队列,是指队列中的每个成员包括两个变量域,分别用来保存操作系统中断上下文中CS寄存器和IP寄存器的值。
4.根据权利要求1所述的防止操作系统中断流程被非法转移的方法,其中步骤(2.1)所述的初始化保存中断上下文中控制数据“CS:IP”的先入后出FILO队列,是指由虚拟机管理器调用系统内存分配函数,比如malloc为先入后出FILO队列申请一段内存空间,并在申请成功后调用内存清零函数,比如bzero将该队列初始化为全零。
CN201110359598XA 2011-11-14 2011-11-14 防止操作系统中断流程被非法转移的方法 Pending CN102509048A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110359598XA CN102509048A (zh) 2011-11-14 2011-11-14 防止操作系统中断流程被非法转移的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110359598XA CN102509048A (zh) 2011-11-14 2011-11-14 防止操作系统中断流程被非法转移的方法

Publications (1)

Publication Number Publication Date
CN102509048A true CN102509048A (zh) 2012-06-20

Family

ID=46221129

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110359598XA Pending CN102509048A (zh) 2011-11-14 2011-11-14 防止操作系统中断流程被非法转移的方法

Country Status (1)

Country Link
CN (1) CN102509048A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104714857A (zh) * 2013-12-13 2015-06-17 上海华虹集成电路有限责任公司 防止智能卡启动序列被修改的方法
CN109785537A (zh) * 2018-12-29 2019-05-21 360企业安全技术(珠海)有限公司 一种atm机的安全防护方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1309351A (zh) * 2000-02-14 2001-08-22 株式会社东芝 抗干预微处理器
CN101101575A (zh) * 2006-07-04 2008-01-09 联想(北京)有限公司 一种数据安全存储的方法及装置
US20090241189A1 (en) * 2008-03-18 2009-09-24 Vedvyas Shanbhogue Efficient handling of interrupts in a computing environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1309351A (zh) * 2000-02-14 2001-08-22 株式会社东芝 抗干预微处理器
CN101101575A (zh) * 2006-07-04 2008-01-09 联想(北京)有限公司 一种数据安全存储的方法及装置
US20090241189A1 (en) * 2008-03-18 2009-09-24 Vedvyas Shanbhogue Efficient handling of interrupts in a computing environment

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
蒋俊等: "ARM中断处理的安全性与高效性研究", 《单片机与嵌入式系统应用》, no. 5, 31 December 2009 (2009-12-31), pages 78 - 81 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104714857A (zh) * 2013-12-13 2015-06-17 上海华虹集成电路有限责任公司 防止智能卡启动序列被修改的方法
CN109785537A (zh) * 2018-12-29 2019-05-21 360企业安全技术(珠海)有限公司 一种atm机的安全防护方法及装置
CN109785537B (zh) * 2018-12-29 2022-09-30 奇安信安全技术(珠海)有限公司 一种atm机的安全防护方法及装置

Similar Documents

Publication Publication Date Title
US10949247B2 (en) Systems and methods for auditing a virtual machine
US10445498B2 (en) Systems and methods of application control in virtualized environments
EP3201820B1 (en) Protecting application secrets from operating system attacks
EP3017392B1 (en) Process evaluation for malware detection in virtual machines
CN107690645B (zh) 使用解释器虚拟机的行为恶意软件检测
JP7036821B2 (ja) 仮想マシンセキュリティ適用例のためのイベントフィルタ処理
CN107025405A (zh) 使用安全堡垒提高云可用性和硅隔离的方法
US20080244747A1 (en) Network context triggers for activating virtualized computer applications
EP2902937B1 (en) Method, apparatus, and system for triggering virtual machine introspection
US11442770B2 (en) Formally verified trusted computing base with active security and policy enforcement
CN110874468A (zh) 应用程序安全保护方法以及相关设备
CN102509048A (zh) 防止操作系统中断流程被非法转移的方法
US8650579B1 (en) Containment for computer-software update installation processes
CN102521547B (zh) 虚拟域内访问控制系统的保护系统
Nimgaonkar et al. Ctrust: A framework for secure and trustworthy application execution in cloud computing
CN108459899B (zh) 信息保护方法及装置
Ding How to Resuscitate a Sick VM in the Cloud

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20120620