CN108241801B - 处理系统调用的方法和装置 - Google Patents
处理系统调用的方法和装置 Download PDFInfo
- Publication number
- CN108241801B CN108241801B CN201611218930.XA CN201611218930A CN108241801B CN 108241801 B CN108241801 B CN 108241801B CN 201611218930 A CN201611218930 A CN 201611218930A CN 108241801 B CN108241801 B CN 108241801B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- system call
- host
- target virtual
- kernel
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/106—Enforcing content protection by specific content processing
- G06F21/1064—Restricting content processing at operating system level
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
本申请实施例公开一种处理系统调用的方法和装置,能够提高操作系统的安全性。该方法包括:主机内核对应用程序需要执行的系统调用进行拦截,并将拦截的系统调用转由目标虚拟机执行,其中,目标虚拟机与主机共享主机内核;主机内核根据目标虚拟机执行系统调用的执行结果和预设的第一策略,判断系统调用的合法性。
Description
技术领域
本申请实施例涉及软件技术领域,并且更具体地,涉及一种处理系统调用的方法和装置。
背景技术
操作系统对计算机的系统安全有非常关键的作用。一方面,操作系统提供的安全特性可以用于加强应用的安全,隔离恶意应用,检测应用有意或无意的非法访问。另一方面,操作系统的代码行数通常在千万行的数量级之上,因此,操作系统通常不可避免地包含一些漏洞,使得操作系统成为了一个可能被攻击的对象。一种常见的攻击方法是用户态的应用通过系统调用对操作系统的漏洞进行利用,获取更高的权限,进而控制整个操作系统。因此,提高操作系统的安全性对于计算机系统而言,是至关重要的。
发明内容
本申请提供一种处理系统调用的方法和装置,能够提高操作系统的安全性。
第一方面,本申请提供一种处理系统调用的方法,该方法包括:主机内核对应用程序需要执行的系统调用进行拦截,并将拦截的所述系统调用转由目标虚拟机执行,其中,目标虚拟机与主机共享主机内核;主机内核根据目标虚拟机执行系统调用的执行结果和预设的第一策略,判定系统调用的合法性。
在本申请实施例中,第一策略用于判定一个系统调用的合法性。其中,第一策略可以根据依据系统调用规范和运行在主机上的操作系统的已知漏洞进行设定。详细说明可参见说明书。
主机内核通过创建与主机内核具备完全相同的运行环境的目标虚拟机,并将可能存在潜在风险的系统调用转由目标虚拟机执行。从而,主机内核根据目标虚拟机执行该系统调用的执行结果和预设的第一策略,可以判定该系统调用的操作是否合法,以避免存在潜在风险的系统调用直接运行在主机内核,增强了系统调用的隔离性,从而能够提高操作系统的安全性。
在一种可能的实现方式中,主机内核对应用程序需要执行的系统调用进行拦截,包括:主机内核根据预设的第二策略,判定对所述系统调用进行拦截。
在本申请实施例中,第二策略为预先设定的用于判定是否对一个系统调用进行拦截的安全策略。第二策略可以根据系统调用号和系统调用的参数进行设定。例如,第二策略可以为一个需要进行拦截的系统调用的名单。
在一种可能的实现方式中,主机内核将系统调用转由目标虚拟机执行之前,该方法还包括:主机内核向虚拟机监控器发送创建请求,创建请求用于请求虚拟机监控器创建与主机共享主机内核的目标虚拟机。
在一种可能的实现方式中,主机上运行有虚拟机监控器和至少一个虚拟机,该目标虚拟机为虚拟机监控器修改第一虚拟机的控制寄存器CR3和第一虚拟机的扩展页表得到的,其中,修改后的第一虚拟机与主机共享该主机内核,第一虚拟机为该至少一个虚拟机中的任意一个。
需要说明的是,扩展页表(Extended Page Tables,EPT),是中央处理单元(Central Processing Unit,CPU)提供的一种加速虚拟机地址转换的硬件机制。在英特尔Intel的CPU上,这种机制被称为EPT。而在超微半导体(Advanced Micro Devices,AMD)的CPU上,这种机制被称为嵌套页表(Nested Page Tables,NPT)。本申请实施例中,以EPT作为示例对扩展页表进行说明。
在一种可能的实现方式中,该方法还包括:主机内核获取目标虚拟机执行系统调用时对主机内核的内存数据的读写行为;以及,主机内核根据目标虚拟机执行系统调用的执行结果和预设的第一策略,判定系统调用的合法性,包括:主机内核根据目标虚拟机执行系统调用时对主机内核的内存数据的读写行为和第一策略,判定系统调用的合法性。
具体地,虚拟机监控器记录该应用程序执行系统调用的执行结果,系统调用执行完成后,将目标虚拟机的执行结果通知主机内核。若应用程序在执行系统调用的过程中对主机内核的内存数据的读写行为,与第一策略中预设的该系统调用对内存数据的读写权限不一致,主机内核则判定该系统调用非法。反之,若应用程序在执行系统调用的过程中,该系统调用对主机内核的内存数据的读写行为与第一策略中预设的该系统调用对内存数据的读写权限是一致的,则判定该系统调用是合法的。
在本申请实施例中,虚拟机监控器修改第一虚拟机的扩展页表,以设置目标虚拟机对主机内核的内存数据的读写权限。具体地,虚拟机监控器设置目标虚拟机对主机内核的内存数据仅有读权限。这样,当目标虚拟机写主机内核的内存数据时,就会触发权限错误。虚拟机监控器获得权限错误消息后,会暂时将目标虚拟机暂时挂起。同时,虚拟机监控器为目标虚拟机分配物理页,并将主机内核的内存页中需要执行写操作的数据复制到该物理页中,并设置目标虚拟机对该物理页的写权限为可写。
在一种可能的实现方式中,第一策略是根据系统调用规范和运行在主机上的操作系统的已知漏洞预先配置的。
第二方面,本申请提供一种处理系统调用的装置,用于执行第一方面或第一方面的任意可能的实现方式中的方法。具体地,该装置包括执行第一方面或第一方面的任意可能的实现方式中的方法的单元。
第三方面,本申请提供一种终端,包括如第二方面所述的装置。
第四方面,本申请提供一种云服务器,包括如第二方面所述装置。
第五方面,本申请提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
在本申请实施例中,主机内核通过创建具备与主机内核完全相同的运行环境的目标虚拟机,并将可能存在潜在风险的系统调用转由目标虚拟机执行,从而由主机内核根据目标虚拟机执行该系统调用的执行结果和预设的第一策略,判定该系统调用的操作是否合法,以避免存在潜在风险的系统调用直接运行在主机内核,增强了系统调用的隔离性,从而能够提高操作系统的安全性。
附图说明
图1为本申请实施例提供的处理系统调用的方法100的流程图
图2为本申请实施例提供的处理系统调用的方法的示意图。
图3为本申请实施例提供的处理系统调用的装置400的示意性框图。
图4为本申请实施例提供的处理系统调用的设备500的示意性结构图。
具体实施方式
下面结合附图,对本申请实施例中的技术方案进行描述。
首先,对本申请实施例中涉及到的几个相关概念作简单介绍。
用户态和内核态
由于操作系统的资源是有限的,如果访问资源的操作过多,必然会消耗过多的资源。而如果不对这些操作加以区分,很可能会造成资源访问的冲突。为了减少有限资源的访问和使用冲突,Unix/Linux操作系统对不同的操作赋予不同的执行等级,即“特权”的概念。不同特权级别的程序对资源的访问能力不同。例如,与系统相关的一些特别关键的操作必须由最高特权的程序来完成。
例如,Intel的X86架构的CPU提供了0到3四个特权级,数字越小,特权越高。Linux操作系统主要采用0和3两个特权级,分别对应内核态和用户态。运行于用户态的进程可以执行的操作和访问的资源都受到极大的限制。而运行在内核态的进程则可以执行任何操作,并且在资源的使用上没有限制。
系统调用
有些程序一开始运行在用户态。但是在执行的过程中,一些操作需要在内核权限下才能执行,这时会涉及到从用户态到内核态的切换,这种机制称作系统调用。
系统调用实际上可以理解为内核为上层应用提供的访问资源的接口。系统调用把程序的请求传给内核,调用相应的内核函数完成程序需要执行的操作,将处理结果返回给程序。
图1为本申请实施例提供的处理系统调用的方法100的流程图。如图1所示,方法100包括步骤110-120。
110、主机内核对应用程序需要执行的系统调用进行拦截,并将拦截的系统调用转由目标虚拟机执行。
应理解,目标虚拟机是指虚拟机监控器创建的与主机共享主机内核的虚拟机。
需要说明的是,目标虚拟机与主机共享主机内核是指目标虚拟机与主机具有完全相同的内核环境。
目前,主流的虚拟机监控器(Virtual Machine Monitor,VMM)有两种类型。一种是位于操作系统的内核和硬件之间的Xen。另一种是作为操作系统的内核一部分的KVM。在KVM架构中,虚拟机机管理器本身是主机内核的一部分。
本申请实施例提供的处理系统调用的方法,既适用于虚拟机监控器独立于主机内核的架构。同时,也适用于虚拟机监控器为主机内核一部分的架构。
为了便于说明,本申请实施例中,以虚拟机监控器独立于主机内核作为示例进行说明。
在本申请实施例中,主机内核是否拦截一个系统调用,可以包括两种情况。
情况1
对所有的系统调用进行拦截。
情况2
根据预设的策略(即,第二策略),判定对一个系统调用是否进行拦截。
可选地,作为一个实施例,主机内核对应用程序需要执行的系统调用进行拦截,包括:
主机内核根据预设的第二策略,判定是否对应用程序需要执行的系统调用进行拦截。
即,为了提高操作系统的安全性,主机内核可以对应用程序执行的所有系统调用进行拦截,并转由目标虚拟机执行,以避免有潜在风险的系统调用直接运行在主机内核。或者,主机内核也可以基于预设的第二策略,判定是否对应用程序要执行的系统调用进行拦截。
应理解,主机内核根据预设的第二策略,拦截应用程序需要执行的系统调用,表明该系统调用可能存在潜在的安全风险。此时,主机内核拦截该系统调用,是为了防止该存在安全隐患的系统调用直接在主机内核执行操作,从而避免主机内核遭受恶意攻击的风险。
第二策略为预先设定的用于判定是否对一个系统调用进行拦截的安全策略。具体地,第二策略可以根据系统调用号和系统调用的参数等进行设定。
例如,第二策略可以是一个需要拦截的系统调用的名单。这个名单可以根据经验来进行设置。比如,有些系统调用非常简单,出现漏洞的可能性比较小,这样的系统调用就不需要进行监控(或者说,拦截)。反之,有些系统调用出现漏洞的可能性比较大,就应当将其设置在需要拦截的系统调用名单中。
可选地,作为一个实施例,主机内核将系统调用转由目标虚拟机执行之前,该方法还包括:
主机内核向虚拟机监控器发送创建请求,该创建请求用于请求虚拟机监控器创建与主机共享主机内核的目标虚拟机。
可选地,作为一个实施例,主机上运行有虚拟机监控器和至少一个虚拟机,目标虚拟机为虚拟机监控器修改第一虚拟机的控制寄存器CR3和第一虚拟机的扩展页表得到的,其中,修改后的第一虚拟机与主机共享主机内核,第一虚拟机为该至少一个虚拟机中的任意一个。
应理解,控制寄存器CR3为控制寄存器(CR0-CR3)中的一种,用于控制和确定处理器的操作模式以及当前执行任务的特性。CR3中含有页目录物理内存地址。因此,CR3寄存器也称为页目录基地址寄存器(Page-Directory Base address Register,PDBR)。
具体地,本申请实施例中,包括多种方式创建目标虚拟机。
方式1
虚拟机监控器创建目标虚拟机。
在方式1中,主机内核确定系统调用需要拦截时,向虚拟机监控器发送创建请求。虚拟机监控器基于该创建请求,创建一个虚拟机,并使得该虚拟机与主机共享主机内核。即,虚拟机具有与主机完全相同的内核运行环境。
方式2
虚拟机监控器将主机上运行的某个虚拟机修改为与主机共享主机内核的目标虚拟机。
在方式2中,虚拟机监控器可以从运行在主机上的虚拟机资源池中任意选择一个虚拟机(为了便于说明,记作虚拟机#A),通过修改虚拟机#A的CR3寄存器和虚拟机#A的扩展页表,使得修改后的虚拟机#A与主机共享主机内核。
具体地,虚拟机监控器通过修改虚拟机#A的扩展页表,可以设置虚拟机#A对主机内核的内存数据的读写权限。由于修改后的虚拟机#A(以下称为目标虚拟机)与主机共享主机内核,为了防止目标虚拟机在执行系统调用的过程中修改主机内核的内存数据,虚拟机管理器可以将虚拟机#A设置为对内存数据的访问权限仅包含读,而不包含写。这样,当目标虚拟机写主机内核的内存数据时,虚拟机监控器就会获得权限错误消息,并将目标虚拟机暂时挂起。同时,虚拟机监控器为目标虚拟机分配物理页,并将主机内核的内存页中需要修改的数据(即,需要执行写操作的数据)复制到该物理页中,并设置目标虚拟机对该物理页的写权限为可写。这样,目标虚拟机就可以对该内存数据进行修改了。
120、主机内核根据目标虚拟机执行系统调用的执行结果和预设的第一策略,判断系统调用的合法性。
在本申请实施例中,第一策略是用于判定主机内核所执行的系统调用的合法性的安全策略。
虚拟机监控器在创建目标虚拟机时,可以设置目标虚拟机对主机内核数据的读权限和写权限。后续,虚拟机监控器监控目标虚拟机的访问行为,一旦目标虚拟机在执行系统调用的过程中,对内存数据的实际的访问行为与第一策略中设置的该系统调用对内存数据的访问权限不符,主机内核即可判定该系统调用是非法的。
例如,主机内核设定目标虚拟机执行某个系统调用时不能写主机内核的所有数据,而目标虚拟机在执行该系统调用的过程中对主机内核执行了写操作,即可判定该系统调用是非法的。
在本申请实施例中,第一策略的设定主要源于两个方面。
(1)系统调用规范。
通过系统调用规范可以判断出系统调用执行过程中可能修改的数据和一定不会修改的数据。因此,如果主机内核发现系统调用规范中一定不会修改的数据被修改,就可以判定此次系统调用是非法的。
例如,sysinfo系统调用在被执行过程中,可以获取操作系统的系统运行时间等数据,但是不会修改任何内核数据。因此,当目标虚拟机在执行sysinfo系统调用的过程中,如果发现内核数据被修改,则可以判定sysinfo系统调用非法。
(2)操作系统的已知漏洞。
以容器Escape漏洞为例,恶意攻击者通过修改FS—STRUCT等内核数据结构,可能会达到访问主机资源的目的。
因此,可以通过设定专门监控FS—STRUCT内核数据的修改来设定第一策略,从而可以识别并阻止此类漏洞。
再例如,现有一种攻击行为是攻击者在容器中利用内核漏洞,通过系统调用修改了task_struct->ns_proxy数据结构,能够摆脱容器的限制,达到访问容器外的资源的目的。
根据系统调用规范的说明,仅有3个系统调用可能会修改task_struct->ns_proxy的数据结构,分别为clone、unshare、setns。基于此原因,第一策略可以设定为:如果一个系统调用修改了ns_proxy相关的数据,同时,这个系统调用也不是clone、unshare、setns中的任一个,主机内核可以判断这个系统调用是非法的。
再例如,有一种攻击行为是攻击者通过在容器中反复调用open_by_handle_at,直至到达主机某文件系统的根节点。然后,再从根节点出发访问该主机上的任一文件。基于此漏洞的特点,在设定第一策略时可以从下面两个方面作限定:(1)虚拟机监控器在创建目标虚拟机时,使目标虚拟机对主机文件系统的根节点相对应的内存不具有读权限;(2)如果一个系统调用在执行过程中调用了主机文件系统的根节点,则判定该系统调用是非法的。
从上述过程可以看出,在本申请实施例中,主机内核通过创建具备与主机内核完全相同的运行环境的目标虚拟机,并将可能存在潜在风险的系统调用转由目标虚拟机执行,从而由主机内核根据目标虚拟机执行该系统调用的执行结果和预设的安全策略(即,第一策略),判定该系统调用的操作是否合法,以避免存在潜在风险的系统调用直接运行在主机内核,增强了系统调用的隔离性,从而能够提高操作系统的安全性。
图2为本申请实施例提供的处理系统调用的方法300的示意图。如图2所示,方法300主要包括步骤301-310。
注意,以下的序号301-310分别对应图2中的序号①-⑩。
301、进程调用一个系统调用。
302、主机内核确定是否对系统调用进行拦截。
具体地,主机内核的系统调用入口函数根据传入的系统调用号在系统调用表中查找对应的系统调用处理函数,然后执行查找到的系统调用处理函数。
在本申请实施例中,通过修改系统调用入口函数,可以根据策略#A、系统调用号和系统调用的参数确定系统调用是否需要拦截。
这里的策略#A为第二策略的举例。
在步骤302,包括两种情况:
(1)若策略#A表明系统调用不需要被拦截,则正常执行系统调用。
(2)若策略#A表明系统调用应当被拦截,则主机内核使该进程进入睡眠,并执行步骤303。
即,根据策略#A、系统调用入口函数、系统调用号和系统调用的参数判断系统调用是否需要拦截。如果需要拦截,主机内核会通知虚拟机监控器创建和主机共享主机内核的虚拟机。如果不需要拦截,则按照执行系统调用的逻辑,执行系统调用表中的系统调用函数。
303、主机内核向虚拟机监控器发送创建请求,以请求虚拟机监控器创建目标虚拟机。
如前文所述,虚拟机监控器创建的目标虚拟机与主机共享主机内核。
304、虚拟机监控器接收主机内核发送的创建请求,并基于该创建请求创建虚拟机。
具体地,虚拟机监控器可以新创建一个虚拟机,使得该虚拟机与主机共享主机内核。或者,虚拟机监控器也可以从运行在主机上的虚拟机中选择一个虚拟机,通过修改该虚拟机内部的CR3寄存器和存储在虚拟机监控器上的扩展页表(Extended Page Table,EPT)使得该虚拟机共享主机内核。
同时,虚拟机监控器对目标虚拟机的读权限和写权限进行配置。例如,虚拟机通过填充和内存管理相关的数据结构中的访问位,使得虚拟机内核不能写主机内核,并且仅能查看某些主机内核的内存。
虚拟机监控器通过修改虚拟机内部的CR3寄存器,使得虚拟机内部CR3寄存器的值与主机的CR3寄存器的值相同,即虚拟机和主机的页表物理地址相同。并且。虚拟机监控器修改存储的EPT。通过EPT翻译后,使得客户机物理地址(Guest Physical Address,GPA)与主机物理地址(Host Physical Address,HPA)相同。
具体地,客户机虚拟地址(Guest Virtual Address,GVA)通过虚拟机内部页表翻译为客户机物理地址(Guest Physical Address,GPA)。GPA再经过EPT翻译为HPA。
通过以上两项修改,使得目标虚拟机与主机共享一个内核。
具体地,虚拟机监控器翻译虚拟机地址的过程可以参考现有技术,这里不作详述。
305、虚拟机监控器装载目标虚拟机数据,使得目标虚拟机一旦执行,则执行前述步骤301中的系统调用。
通过步骤304,使得目标虚拟机与主机共享主机内核。当目标虚拟机具有和主机相同的内核环境后,即可在目标虚拟机中执行系统调用。
具体的方法可以为,通过修改虚拟机控制结构(Virtual Machine ControlStructure,VMCS)中的指令地址寄存器(Instruction Address Register,EIP),使其指向指定的系统调用函数入口。当虚拟机启动后,虚拟机就开始执行指定的系统调用。
从上述过程可以看出,当主内内核确定需要对一个系统调用进行拦截后,通过虚拟机监控器创建目标虚拟机,将该拦截的系统调用转由目标虚拟机执行。
在目标虚拟机和主机共享内核的情况下,为了防止目标虚拟机在执行过程中修改主机内核的数据,虚拟机监控器在创建目标虚拟机时,修改EPT相关的数据结构,使得目标虚拟机对主机内核的所有内存页的访问权限都不包含写操作。
同样,为了防止目标虚拟机在执行过程中读到主机内核的某些数据,虚拟机监控器修改EPT相关的数据结构,使得目标虚拟机对主机内核的某些内存也的访问权限不包含读。
306、目标虚拟机执行系统调用。
在执行的过程中,步骤306具体可能包括如下几个子步骤:
(1)目标虚拟机违反内存访问许可的情况。
(2)虚拟机监控器记录目标虚拟机违规内存访问。
如果是写访问,虚拟机监控器为目标虚拟机分配新内存,并将目标虚拟机所要写的内存数据复制到新内存。同时,修改内存管理表,使目标虚拟机对新内存有写权限。
(3)异常返回。
注意,这里的步骤306对应图2中的标号⑥。其中,子步骤(1)、(2)和(3)分别对应图2图中所示的ⅰ、ⅱ和ⅲ。
具体地,在步骤305中,虚拟机监控器对目标虚拟机的访问权限进行了配置。通过配置目标虚拟机的访问权限(包括读权限和写权限),当目标虚拟机在写主机内核的任一数据,或者读主机内核的某些数据时,EPT违反(EPT Violation)异常就会发生。在虚拟机监控器的EPT Violation异常处理函数中会收集和记录非法访问的数据信息。如果是写访问,虚拟机监控器就进行写时拷贝(Copy-on-Write)操作。
写时拷贝操作是指,在目标虚拟机需要执行写操作时,虚拟机监控器为目标虚拟机分配一个物理页,将需要修改的数据拷贝到新的物理页中,并将该新的物理页配置为可写。之后,虚拟机监控器的异常处理函数结束操作,目标虚拟机在新的物理页上继续执行写操作。
307、目标虚拟机执行系统调用完成后,退出。
308、虚拟机监控器将虚拟机执行系统调用的结果和内存违规情况返回给主机内核。
309、主机内核根据策略#B判断系统调用是否合法。
这里的策略#B作为第一策略的示例。具体过程可以参见前述步骤120。
310、主机内核根据目标虚拟机的执行结果和策略#B生成相应的返回值,并将返回值返回给用户态进程。
在本申请实施例中,主机内核通过创建具备与主机内核完全相同的运行环境的目标虚拟机,并将可能存在潜在风险的系统调用转由目标虚拟机执行,从而由主机内核根据目标虚拟机执行该系统调用的执行结果和预设的第一策略,判定该系统调用的操作是否合法,以避免存在潜在风险的系统调用直接运行在主机内核,增强了系统调用的隔离性,从而能够提高操作系统的安全性。
图3为本申请实施例提供的处理系统调用的装置400的示意性框图。如图3所示,装置400包括:
处理单元410,用于对应用程序需要执行的系统调用进行拦截,并将拦截的系统调用转由目标虚拟机执行;
处理单元410,还用于根据目标虚拟机执行该系统调用的执行结果和预设的第一策略,判断该系统调用的合法性。
另外,装置400还可以包括发送单元420。
具体地,处理单元410可以为处理器,发送单元可以为发送器。
根据本申请实施例提供的装置400中的各单元和上述其它操作或功能分别为了实现本申请实施例提供的处理系统调用的方法100及各实施例中的相应流程。为了简洁,此处不再赘述。
图4为本申请实施例提供的处理系统调用的设备500的示意性结构图。如图4所示,设备500包括:存储器510、处理器520和通信接口530。
存储器510用于存储执行本申请方案的应用程序、代码或指令。处理器520用于执行存储器510中存储的应用程序、代码或指令,以完成处理系统调用的方法100以及各实施例的相应流程和/或操作。此处不再赘述。
应理解,图3中提供的处理系统调用的装置400,可以通过图4中所示的处理系统调用的设备500来实现。例如,图3中的处理单元410可以由图4中的处理器520实现。发送单元420可以由图4中所示的一个或多个通信接口530实现。
存储器510可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在。或者,存储器也可以和处理器集成在一起。
处理器520,可以为中央处理器(CPU)、微处理器、特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信接口530,可以是有线接口,例如光纤分布式数据接口(Fiber DistributedData Interface,FDDI)、千兆以太网(Gigabit Ethernet,GE)接口等,也可以是无线接口。本申请实施例对此不作特别限定。
另外,本申请提供一种终端设备和云服务器,包括上述实施例中所说的处理系统调用的装置。也或者说,终端设备或云服务器包括处理器,该处理器执行本申请实施例中提供的处理系统调用的方法。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种处理系统调用的方法,其特征在于,所述方法包括:
主机内核对应用程序需要执行的系统调用进行拦截,并将拦截的所述系统调用转由目标虚拟机执行,其中,所述目标虚拟机与主机共享所述主机内核,且所述目标虚拟机对所述主机内核的任何内存数据禁用写权限或所述目标虚拟机对所述主机内核的特定内存数据禁用读权限;
所述主机内核根据所述目标虚拟机执行所述系统调用的执行结果和预设的第一策略,判定所述系统调用的合法性,其中,所述第一策略用于判定一个系统调用的合法性,所述第一策略是根据系统调用规范和/或运行在所述主机上的操作系统的已知漏洞设定的。
2.根据权利要求1所述的方法,其特征在于,所述主机内核对应用程序需要执行的系统调用进行拦截,包括:
所述主机内核根据预设的第二策略,判定对所述系统调用进行拦截。
3.根据权利要求1或2所述的方法,其特征在于,所述主机内核将所述系统调用转由目标虚拟机执行之前,所述方法还包括:
所述主机内核向虚拟机监控器发送创建请求,所述创建请求用于请求所述虚拟机监控器创建与所述主机共享所述主机内核的所述目标虚拟机。
4.根据权利要求1或2所述的方法,其特征在于,所述主机上运行有虚拟机监控器和至少一个虚拟机,所述目标虚拟机是所述虚拟机监控器修改第一虚拟机的控制寄存器CR3和所述第一虚拟机的扩展页表得到的,其中,修改后的所述第一虚拟机与所述主机共享所述主机内核,所述第一虚拟机为所述至少一个虚拟机中的任意一个。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述主机内核获取所述目标虚拟机执行所述系统调用时对所述主机内核的内存数据的读写行为;
以及,所述主机内核根据所述目标虚拟机执行所述系统调用的执行结果和预设的第一策略,判断所述系统调用的合法性,包括:
所述主机内核根据所述目标虚拟机执行所述系统调用时对所述主机内核的内存数据的读写行为和所述第一策略,判断所述系统调用的合法性。
6.根据权利要求1或2所述的方法,其特征在于,所述第一策略是根据系统调用规范和运行在所述主机上的操作系统的已知漏洞预先配置的。
7.一种处理系统调用的装置,其特征在于,所述装置包括:
处理单元,用于对应用程序需要执行的系统调用进行拦截,并将拦截的所述系统调用转由目标虚拟机执行,其中,所述目标虚拟机与主机共享主机内核,且所述目标虚拟机对所述主机内核的任何内存数据禁用写权限或所述目标虚拟机对所述主机内核的特定内存数据禁用读权限;
所述处理单元,还用于根据所述目标虚拟机执行所述系统调用的执行结果和预设的第一策略,判定所述系统调用的合法性,其中,所述第一策略用于判定一个系统调用的合法性,所述第一策略是根据系统调用规范和/或运行在所述主机上的操作系统的已知漏洞设定的。
8.根据权利要求7所述的装置,其特征在于,所述处理单元具体用于:根据预设的第二策略,判定对所述系统调用进行拦截。
9.根据权利要求7或8所述的装置,其特征在于,所述装置还包括:
发送单元,用于在所述处理单元将所述系统调用转由所述目标虚拟机执行之前,向虚拟机监控器发送创建请求,所述创建请求用于请求所述虚拟机监控器创建与所述主机共享主机内核的所述目标虚拟机。
10.根据权利要求7或8所述的装置,其特征在于,所述主机上运行有虚拟机监控器和至少一个虚拟机,所述目标虚拟机是所述虚拟机监控器修改第一虚拟机的控制寄存器CR3和所述第一虚拟机的扩展页表得到的,其中,修改后的所述第一虚拟机与所述主机共享所述主机内核,所述第一虚拟机为所述至少一个虚拟机中的任意一个。
11.根据权利要求7或8所述的装置,其特征在于,所述处理单元还用于获取所述目标虚拟机执行所述系统调用时对所述主机内核的内存数据的读写行为;
以及,所述处理单元具体用于:
根据所述目标虚拟机执行所述系统调用时对所述主机内核的内存数据的读写行为和所述第一策略,判断所述系统调用的合法性。
12.根据权利要求7或8所述的装置,其特征在于,所述第一策略是根据系统调用规范和运行在所述主机上的操作系统的已知漏洞预先配置的。
13.一种终端设备,其特征在于,包括权利要求7至12中任一项所述的装置。
14.一种云服务器,其特征在于,包括权利要求7至12中任一项所述的装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201611218930.XA CN108241801B (zh) | 2016-12-26 | 2016-12-26 | 处理系统调用的方法和装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201611218930.XA CN108241801B (zh) | 2016-12-26 | 2016-12-26 | 处理系统调用的方法和装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN108241801A CN108241801A (zh) | 2018-07-03 |
| CN108241801B true CN108241801B (zh) | 2021-03-30 |
Family
ID=62701392
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201611218930.XA Active CN108241801B (zh) | 2016-12-26 | 2016-12-26 | 处理系统调用的方法和装置 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN108241801B (zh) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112395617A (zh) * | 2019-08-15 | 2021-02-23 | 奇安信安全技术(珠海)有限公司 | 防护docker逃逸漏洞的方法、装置、存储介质及计算机设备 |
| CN112596921A (zh) * | 2020-12-17 | 2021-04-02 | 海光信息技术股份有限公司 | 系统调用处理方法及处理装置 |
| CN119960893A (zh) * | 2023-11-07 | 2025-05-09 | 杭州阿里云飞天信息技术有限公司 | 一种虚拟机的安全管控方法、设备及存储介质 |
Citations (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101727348A (zh) * | 2008-10-10 | 2010-06-09 | 成都市华为赛门铁克科技有限公司 | 一种可疑代码分析方法及装置 |
| US20100192150A1 (en) * | 2005-08-09 | 2010-07-29 | Steven Grobman | Exclusive access for secure audio program |
| CN102096786A (zh) * | 2011-03-04 | 2011-06-15 | 上海交通大学 | 基于硬件虚拟化的跨平台安全保护系统 |
| EP2354995A1 (en) * | 2010-02-09 | 2011-08-10 | Siemens Aktiengesellschaft | Software licensing in a virtual computing environment |
| CN103778368A (zh) * | 2014-01-23 | 2014-05-07 | 重庆邮电大学 | 一种基于系统虚拟化技术的进程安全隔离方法 |
| CN104573422A (zh) * | 2015-01-08 | 2015-04-29 | 浪潮软件股份有限公司 | 一种基于虚拟机的应用进程运行方法及装置 |
| CN105068859A (zh) * | 2015-07-29 | 2015-11-18 | 上海谐桐信息技术有限公司 | 一种跨虚拟机的多服务调用方法及系统 |
| CN105393255A (zh) * | 2013-07-05 | 2016-03-09 | 比特梵德知识产权管理有限公司 | 用于虚拟机中的恶意软件检测的过程评估 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8099596B1 (en) * | 2011-06-30 | 2012-01-17 | Kaspersky Lab Zao | System and method for malware protection using virtualization |
-
2016
- 2016-12-26 CN CN201611218930.XA patent/CN108241801B/zh active Active
Patent Citations (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20100192150A1 (en) * | 2005-08-09 | 2010-07-29 | Steven Grobman | Exclusive access for secure audio program |
| CN101727348A (zh) * | 2008-10-10 | 2010-06-09 | 成都市华为赛门铁克科技有限公司 | 一种可疑代码分析方法及装置 |
| EP2354995A1 (en) * | 2010-02-09 | 2011-08-10 | Siemens Aktiengesellschaft | Software licensing in a virtual computing environment |
| CN102096786A (zh) * | 2011-03-04 | 2011-06-15 | 上海交通大学 | 基于硬件虚拟化的跨平台安全保护系统 |
| CN105393255A (zh) * | 2013-07-05 | 2016-03-09 | 比特梵德知识产权管理有限公司 | 用于虚拟机中的恶意软件检测的过程评估 |
| CN103778368A (zh) * | 2014-01-23 | 2014-05-07 | 重庆邮电大学 | 一种基于系统虚拟化技术的进程安全隔离方法 |
| CN104573422A (zh) * | 2015-01-08 | 2015-04-29 | 浪潮软件股份有限公司 | 一种基于虚拟机的应用进程运行方法及装置 |
| CN105068859A (zh) * | 2015-07-29 | 2015-11-18 | 上海谐桐信息技术有限公司 | 一种跨虚拟机的多服务调用方法及系统 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN108241801A (zh) | 2018-07-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10447728B1 (en) | Technique for protecting guest processes using a layered virtualization architecture | |
| JP5736090B2 (ja) | 仮想ゲストのメモリ保護の方法、システムおよびコンピュータプログラム | |
| US9946562B2 (en) | System and method for kernel rootkit protection in a hypervisor environment | |
| US9202046B2 (en) | Systems and methods for executing arbitrary applications in secure environments | |
| JP6378758B2 (ja) | 仮想マシンにおけるマルウェア検出のためのプロセス評価 | |
| KR102244645B1 (ko) | 인증된 변수의 관리 | |
| CA2922490C (en) | Virtual machine manager facilitated selective code integrity enforcement | |
| CN110383256B (zh) | 一种内核完整性保护方法及装置 | |
| KR20180099682A (ko) | 가상 머신 감사를 위한 시스템 및 방법들 | |
| US9183391B2 (en) | Managing device driver cross ring accesses | |
| WO2013055498A1 (en) | System and method for kernel rootkit protection in a hypervisor environment | |
| EP4020156B1 (en) | Reducing latency of hardware trusted execution environments | |
| CN113391881A (zh) | 中断的管理方法、装置、电子设备及计算机存储介质 | |
| CN108241801B (zh) | 处理系统调用的方法和装置 | |
| CN116561824A (zh) | 在机密计算架构中管理内存的方法和装置 | |
| EP3579106B1 (en) | Information protection method and device | |
| Gutstein | Towards Efficient and Effective IOMMU-based Protection from DMA Attacks | |
| US11934857B2 (en) | Supporting execution of a computer program by using a memory page of another computer program | |
| US12099862B2 (en) | Hypervisor-assisted secured memory sharing among host and guest operating system | |
| CN119622766A (zh) | 在机密计算架构中进行安全取证的方法和装置 | |
| CN116560787A (zh) | 用存储在虚拟安全处理器中的实例元数据来配置实例 | |
| WO2019148447A1 (zh) | 数据保护方法和数据保护装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |