CN109165509B - 软件实时可信度量的方法、设备、系统及存储介质 - Google Patents

软件实时可信度量的方法、设备、系统及存储介质 Download PDF

Info

Publication number
CN109165509B
CN109165509B CN201811009034.1A CN201811009034A CN109165509B CN 109165509 B CN109165509 B CN 109165509B CN 201811009034 A CN201811009034 A CN 201811009034A CN 109165509 B CN109165509 B CN 109165509B
Authority
CN
China
Prior art keywords
system call
behavior
real
software
expected behavior
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
Application number
CN201811009034.1A
Other languages
English (en)
Other versions
CN109165509A (zh
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.)
Wuhan Polytechnic University
Original Assignee
Wuhan Polytechnic 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 Wuhan Polytechnic University filed Critical Wuhan Polytechnic University
Priority to CN201811009034.1A priority Critical patent/CN109165509B/zh
Publication of CN109165509A publication Critical patent/CN109165509A/zh
Application granted granted Critical
Publication of CN109165509B publication Critical patent/CN109165509B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Abstract

本发明公开了一种软件实时可信度量的方法、设备、系统及存储介质。本发明在执行实时可信度量之前,首先为待度量软件编写并绑定预期行为规范以建立待度量软件的预期行为。在系统执行过程中,不断捕获待度量软件当前进程运行时的系统调用及其参数信息,基于所述系统调用及其参数信息建立所述当前进程的真实行为。然后,查找与待度量软件绑定的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为,将所述真实行为与所述预期行为进行匹配。在匹配成功时,判定所述待度量软件处于可信状态,否则处于不可信状态并实时报警。

Description

软件实时可信度量的方法、设备、系统及存储介质
技术领域
本发明涉及可信及安全监控技术领域,尤其涉及一种软件实时可信度量的方法、设备、系统及存储介质。
背景技术
当前,可信计算已经成为重要的安全支撑技术,应用在云计算安全、移动智能终端安全及网络安全等众多领域,因此,保证保信计算自身的可靠与是至关重要的。根据可信计算标准,可信计算有三大核心功能:度量、存储和报告,三者协同动作确保了第三方能够可靠地判定本机的可信性。其基本过程是:本机在运行的过程中不断度量自身的可信性,并将度量结果存储到专用安全芯片(TPM,Trusted Platform Module)和内存log当中。当其他机器想与本机通信时,由本机将存储的度量结果报告给对方,并由对方来判定本机的可信性。
在度量、存储和报告三大核心功能中,度量居于基础地位,存储和报告都是依据度量的结果而执行的。但是,如何实现软件实时可信度量仍然是一个有待解决的问题。这主要包括如下三方面的因素:(1)如何度量各类层出不穷的攻击方式。除了传统的多态/混淆/变形/编码等攻击之外,还需考虑新型攻击,如ROP(Return-Oriented Programming)攻击等,更进一步地,理论上甚至还需要能够度量尚未发现或者尚未公开的未知攻击等。(2)已有的方法大多是一种“事后被动发现”机制,换句话说,这种机制只能确保其他机器可靠地判定本机是否被攻击而处于不可信状态,但却无法度量到当前机器是否正在被攻击以及无法在发现攻击的情况下进行实时响应。“事前防御、事中审计、事后发现”应当作为环环相扣的整体,然而,现有的可信度量侧重于“事后被动发现”,而缺少“事前主动防御”的能力。(3)现有的工作大多局限于理论研究,难以应用在实时可信度量领域,以实现有效(effective andefficient)的度量。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种软件实时可信度量的方法、设备、系统及存储介质,旨在解决现有软件实时可信度量技术缺乏的问题。
为实现上述目的,本发明提供一种软件实时可信度量的方法,所述方法包括以下步骤:
获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为;
查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为;
将所述真实行为与所述预期行为进行匹配;
在匹配成功时,判定所述待度量软件处于可信状态。
优选地,所述查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为之前,所述方法还包括:
基于预先编制的语法规范,生成预期行为规范。
优选地,所述获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为,具体包括:
获取当前进程的进程标志符,通过Ptrace系统函数获取所述当前进程的系统调用及参数信息,基于所述系统调用及参数信息获取所述当前进程的真实行为。
优选地,所述获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为,具体包括:
获取待度量软件当前进程的系统调用序列,基于所述系统调用序列获取当前进程的真实行为序列;
相应地,所述查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为,具体包括:
分别查找与所述系统调用序列中各系统调用对应的预期行为规范,基于所述系统调用及与所述系统调用对应的预期行为规范,获得所述当前进程的预期行为序列。
优选地,所述将所述真实行为与所述预期行为进行匹配,具体包括:
遍历所述系统调用序列,将所述系统调用序列中各系统调用对应的真实行为与预期行为分别进行匹配。
优选地,所述获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为,具体包括:
获取待度量软件当前进程的当前系统调用,基于所述当前系统调用获取所述当前进程的当前真实行为;
相应地,所述查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为,具体包括:
查找与所述当前系统调用对应的预期行为规范,基于所述预期行为规范获得与所述当前真实行为对应的当前预期行为。
优选地,所述在匹配成功时,判定所述待度量软件处于可信状态之后,所述方法还包括:
基于安全需求变动实时更新所述预期行为规范。
此外,为实现上述目的,本发明还提供一种软件实时可信度量的设备,所述软件实时可信度量的设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的软件实时可信度量的程序,所述软件实时可信度量的程序配置为实现如上文所述的软件实时可信度量的方法的步骤。
此外,为实现上述目的,本发明还提供一种软件实时可信度量的系统,所述软件实时可信度量的系统包括:
获取模块,用于获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为;
查找模块,用于查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为;
匹配模块,用于将所述真实行为与所述预期行为进行匹配;
判定模块,用于在匹配成功时,判定所述待度量软件处于可信状态。
此外,为实现上述目的,本发明还提供一种存储介质,所述存储介质上存储有软件实时可信度量的程序,所述软件实时可信度量的程序被处理器执行时实现如上文所述的软件实时可信度量的方法的步骤。
本发明的设备首先获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为,查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为,将所述真实行为与所述预期行为进行匹配,在匹配成功时,判定所述待度量软件处于可信状态。本发明,在软件运行过程中,能够实时地获取软件当前进程的系统调用,基于预期行为规范,将软件的真实行为与预期行为进行对比,获得软件当前的状态,实现了对软件的行为进行实时可信度量,及时发现各种攻击,提高了软件对各种攻击进行主动防御及对攻击进行及时处理的能力。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的软件实时可信度量的设备结构示意图;
图2为本发明软件实时可信度量的方法第一实施例的流程示意图;
图3为本发明软件实时可信度量的系统第一实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的软件实时可信度量的设备的结构示意图。
如图1所示,该软件实时可信度量的设备可以包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏 (Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及软件实时可信度量的程序。
图1所示的软件实时可信度量的设备中,网络接口1004主要用于与外部网络进行数据通信;用户接口1003主要用于接收用户的输入指令;所述软件实时可信度量的设备通过处理器1001调用存储器1005中存储的软件实时可信度量的程序,并执行以下操作:
获取待度量软件当前进程的系统调用,基于所述当前系统调用获取所述当前进程的真实行为;
查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为;
将所述真实行为与所述预期行为进行匹配;
在匹配成功时,判定所述待度量软件处于可信状态。
进一步地,处理器1001可以调用存储器1005中存储的软件实时可信度量的程序,还执行以下操作:
基于预先编制的语法规范,生成预期行为规范。
进一步地,处理器1001可以调用存储器1005中存储的软件实时可信度量的程序,还执行以下操作:
获取当前进程的进程标志符,通过Ptrace系统函数获取所述当前进程的系统调用及参数信息,基于所述系统调用及参数信息获取所述当前进程的真实行为。
进一步地,处理器1001可以调用存储器1005中存储的软件实时可信度量的程序,还执行以下操作:
分别查找与所述系统调用序列中各系统调用对应的预期行为规范,基于所述系统调用及与所述系统调用对应的预期行为规范,获得所述当前进程的预期行为序列。
进一步地,处理器1001可以调用存储器1005中存储的软件实时可信度量的程序,还执行以下操作:
遍历所述系统调用序列,将所述系统调用序列中各系统调用对应的真实行为与预期行为分别进行匹配。
进一步地,处理器1001可以调用存储器1005中存储的软件实时可信度量的程序,还执行以下操作:
查找与所述当前系统调用对应的预期行为规范,基于所述预期行为规范获得与所述当前真实行为对应的当前预期行为。
进一步地,处理器1001可以调用存储器1005中存储的软件实时可信度量的程序,还执行以下操作:
基于安全需求变动实时更新所述预期行为规范。
本实施例通过上述方案,获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为,查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为,将所述真实行为与所述预期行为进行匹配,在匹配成功时,判定所述待度量软件处于可信状态。本发明,在软件运行过程中,能够实时地获取软件当前进程的系统调用,基于预期行为规范,将软件的真实行为与预期行为进行对比,获得软件当前的状态,实现了对软件行为的实时可信度量,提高了软件对各类攻击进行主动防御及对攻击进行即时响应的能力。
基于上述硬件结构,提出本发明软件实时可信度量的方法实施例。
参照图2,图2为本发明软件实时可信度量的方法第一实施例的流程示意图。
在第一实施例中,所述软件实时可信度量的方法包括以下步骤:
S10:获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为。
需要说明的是,大多数攻击都需要两个步骤:1)定位可利用的漏洞;2) 通过漏洞执行攻击代码。只要打断以上环环相扣的两个步骤中的任何一步,即可以有效防御攻击。大量研究发现,几乎所有的攻击代码都必须通过系统调用达成攻击,因此,本发明从第二步入手,通过获取待度量软件的系统调用以构建软件的真实行为,通过事先编写并与待度量软件绑定的预期行为规范建立软件的预期行为,通过实时比较软件的真实行为和预期行为之间的差异以发现攻击代码,从而实现对软件的实时可信度量。
获取软件的系统调用,在具体实现中,可以首先获取当前进程的进程标志符,通过Ptrace系统函数获取所述当前进程的系统调用及参数信息,基于所述系统调用及参数信息获取所述当前进程的真实行为。其中:
(1)EAX当中存储的是系统调用的索引号,亦即指明了具体的系统调用;
(2)在32位架构中,当系统调用参数的个数小于5个时,EBX、ECX、 EDX、ESI及EDI当中依次存储着系统调用所有的参数;当系统调用参数的个数大于5个时(这种情况不多见),EBX指向一块内存区域,这个区域中就依序存放着系统调用的所有参数。
(3)在64位架构当中,%rdi、%rsi、%rdx、%r10、%r8及%r9依次存放着系统调用参数信息。
可以理解的是,无论是寄存器EBX,ECX,EDX,ESI,EDI还是%rdi,%rsi,%rdx,%r10,%r8,%r9,都分别用于存储着不同系统调用的参数信息。根据以上的方法,不论是32位还是64位架构,对于任意进程的执行,均可以获得其完整的系统调用及参数信息,相应地,基于所述系统调用及其参数信息就可以获得当前进程的真实行为。
S20:查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为。
需要说明的是,本发明提供了一种预期行为规范的编写语法规范,以方便预期行为规范的编写。使用者只要具备基本的系统调用编程知识,即可以进行预期行为规范的编写,本发明提供的语法元素及具体的语法结构可参见表1及表2。
表1预期行为规范的主要语法元素
Figure RE-GDA0001846548820000071
Figure RE-GDA0001846548820000081
需要说明的是,本发明提供的构思可以应用到多种操作系统,包括但不限于:包括但不限于:Linux操作系统、Windows平台、类Unix平台、Android 平台及iOS平台等,本实施例以Linux操作系统为例,对具体的实施方式进行说明。
基于不同的功能,将Linux系统调用可以分类如下信息大类,包括:(1) 进程控制类(u0);(2)文件系统控制类(u1);(3)系统控制类(u2);(4) 内存管理类(u3);(5)网络管理类(u4);(6)网络Socket控制类(u5);(7) 用户管理类(u6);(8)进程间通信类(u7)。这八类系统调用可以看做八个不同的安全域,分别用u0~u7表示。由于系统调用之间的功能隔离关系,这八个安全域之间是互相无干扰的。
表1给出了预期行为规范的主要语法元素,表1中所有带下划线的参数都是实参,在编写时需要赋予真实的参数值,所有其他不带下划线的参数都是形参。表1中编号为1-9项详细的含义说明如下:
(1)ui(0≤i≤7)。八个安全域,对应着Linux内核的八个系统调用大类。
(2)u[i][j]={m1,m2,....,mn }。子安全域,其含义是:选择安全域ui中的部分系统调用组成子安全域,且子安全域的编号是j(子安全域可能有多个,用编号j予以区分)。
例如,不失一般性,假设有u[1][0]={5,7,9}和u[1][1]={1,2}两个子安全域,则:u[1][0]={5,7,9}的含义是,从u1安全域(i=1)中选择索引号为5, 7,9的系统调用构成子安全域,且该子安全域编号为0(j=0);u[1][1]={1,2} 的含义是,从u1安全域(i=1)中选择索引号为1,2的系统调用构成子安全域,且该子安全域编号为1(j=1)。
采用表驱动查找的方式查找Linux自带的系统调用说明表,可知u1安全域中索引号为5,7,9,的系统调用分别是“write,writev,pwrite”,故u[1][0]={write, writev,pwrite};类似可得u[1][1]={open,creat}。换句话说,u[1][0]和u[1][1]分别代表u1安全域中,“所有写文件操作的系统调用”和“所有打开文件操作的系统调用”构成的子安全域。构建不同子安全域是为了施加更细粒度的控制,如本例中可以通过u[1][0]和u[1]1]对u1中的“写文件操作”和“打开文件操作”施加不同的安全策略。
(3)FOR INDEX=mk 。表1中编号为3~7的语法元素需要联合使用(不单独使用),其目的是对系统调用的参数施加安全策略,以实现最细粒度的安全控制。
FOR INDEX=mk 的含义是:对u[i][j]mk 号系统调用的参数指定安全策略,具体地说,利用xparamx 指定mk 号系统调用的第x个参数能够使用paramx ;或者利用x!=paramx 指定第x个参数不能够使用paramx 。如果第x个参数是结构体类型,可以进一步利用xstruct-elemparamx 指定第x个参数的内部成员struct-elem能够使用paramx ;或者利用xstruct-elem!paramx 指定第x个参数的内部成员struct-elem不能够使用paramx
(4)xparamx x!=paramx xstruct-elemparamx xstruct-elem!paramx ,这些语法元素需要和FOR INDEX=mk 联用,上述(3)当中已经做了解释。
(5)syscall-ret。系统调用返回值,需要和WHERE连用。少数情况下,一个系统调用需要用另外一个系统调用的返回值作为参数,一个例子是:首先用open获取文件描述符fd,然后将fd作为write的第一个参数以实现对文件的写入,上述情形可以抽象为syscall-ret=open,然后write(syscall-ret,...)。
在编写预期行为规范的时候,对于上述情形需要用syscall-ret实现参数的传递。并且一般情况下,如果有多个相同的系统调用,应使用最近一次系统调用的返回值作为参数。
(6)WHERE。与syscall-ret连用,用来指明syscall-ret从哪个系统调用得到返回值。
表2预期行为规范的语法结构
Figure RE-GDA0001846548820000091
Figure RE-GDA0001846548820000101
表2中up代表实时进行可信度量的当前进程,表2中各项预期行为规范语法结构的含义如下:
(1)up∞ui(0≤i≤7)。进程up可以对ui安全域进行干扰,换句话说,进程 up可以调用ui中的任意系统调用。
(2)up∝ui(0≤i≤7)。进程up对ui安全域无干扰,换句话说,进程up不能调用ui中的任意系统调用。
(3)up∞u[i][j]={m1,m2,....mn }。进程up可以对子安全域u[i][j]进行干扰。u[i][j]由ui中索引号为m1,m2,....mn 的系统调用构成,进程up可以调用m1,m2,....mn 对应的任何系统调用。
(4)up∝u[i][j]={m1,m2,....mn }。进程up对子安全域u[i][j]无干扰。u[i][j]由ui中索引号为m1,m2,....mn 的系统调用构成,进程up不能调用m1,m2,....mn 对应的任何系统调用。
(5)编号5语法结构的含义是,进程up可以对满足如下参数条件的子安全域u[i][j]进行干扰:
对于u[i][j]中编号为m1 的系统调用,其第1个参数或者可以是实参param1 ([1=param1 ]),或者不能是实参param1 ([1!=param1]),或者对第1个参数不加控制(中括号表明是可选结构,因此第一个参数也可以两种情况均不选,亦即对第1个参数不施加安全策略);...;其第x个参数或者可以是实参paramx ([xparamx ]),或者不能是实参paramx ([x!=paramx ]),或者对第x个参数不加控制。上述第1~x个参数安全策略之间可以是“与”关系,也可以是“或”关系([∧|∨]),具体由EBS编写者根据实际安全需求确定。
对于编号为m2 ,...,mn 的系统调用,其参数的安全策略含义是如上类似的。
最后一行的WHERE指明,在上述m2 ,...,mn 个系统调用中,某个系统调用的参数来自mk (1≤k≤n)号系统调用的返回值,即syscall-ret=mk 。WHERE 是可选结构,不是必须的。
(6)编号6的语法结构的含义是,进程up对子安全域u[i][j]无干扰,其参数安全策略含义与编号5是相同的,此处不再重复。
可见,预期行为规范语法结构不仅考虑了系统调用及其参数的语义,也考虑了不同的安全策略控制粒度。表2中,编号为1和2的语法所描述的安全策略粒度最粗,其从整个系统调用大类进行安全控制;编号为3和4的安全策略粒度居中,其从系统调用大类中选择部分系统调用构成子类,对这些子类施加不同的安全控制;编号为5和6的安全策略粒度最细,其对特定系统调用的具体参数施加了安全控制。
由此,表1和表2说明了如何依据系统调用,编写具体的预期行为规范。
需要说明的是,本专利基于以上语法规范,编写所述预期行为规范,并与受保护软件进行绑定以建立起预期行为。所述预期行为规范分为两大类,一类是通用类,所述通用类适用于所有待度量软件,自动与所有软件绑定;一类是特定类,所述特定类适用于特定的待度量软件,只与特定的软件绑定。在编写所述预期行为规范时,安全管理人员可以同时使用如上所述通用类和特定类预期行为规范。
另外,Linux平台下系统调用有几百个,我们不是为每一个系统调用都编写一个规范,预期行为规范是和安全需求相关的,在具体实现中,可能只对这几百个系统调用当中的很少一部分编写规范。
S30:将所述真实行为与所述预期行为进行匹配。
本发明提供的方法是基于无干扰模型及无干扰理论的基础上提出的,本实施例的无干扰模型概括如下:
一个系统M可以用一个状态机表示,其包含如下元素。
(1)状态机S,其中包含一个唯一的初始状态s0;(2)一个原子动作集 A,其中包含了所有的原子动作;(3)一个行为集B,其中包含了所有由原子动作的连接所构成的行为。如果用“-”表示原子动作的连接,则一个行为的示例是α=a0-a1-a2-…-an,其中ai(0≤i≤n)∈A;(4)一个输出集O,其中包含了所有利用原子动作所观察到的输出结果;(5)一个安全域集D,其中包含了系统中所有的安全域;(6)干扰关系∞和无干扰关系∝,分别表示信息授权/禁止在两个安全域之间流动,两者互为补集;(7)动作-安全域映射函数 dom:A→D。返回每一个原子动作a∈A所属的安全域dom(a);(8)单步状态变迁函数:step:S×A→S,描述了系统M的单步状态变迁;(9)多步状态变迁函数::S×A→S。如果用ε表示空动作,multisteps可以右递归表示为:
Figure RE-GDA0001846548820000121
其描述了系统M从状态s∈S,执行行为(即多个原子动作序列) a=a0-a1-a2-…-an∈B之后,所到达的新状态;(10)行为结果函数(behavior consequence):behcon:S×A→O,给出了系统M在某个状态s∈S,外界利用动作a∈A所能观察到的结果o∈O。
约定使用s,t表示系统状态,约定使用α,β…表示行为(原子动作序列),使用u,v…表示安全域。
利用无干扰模型分析定义中的状态机是否可信,相应的判定等式可如等式(1)所示,
Figure RE-GDA0001846548820000122
关于什么是“可信”,国际上可信计算组织(Trusted Computing Group,TCG) 将可信定义为(1)“完整性”,或者(2)“行为符合预期”;国内有专家指出(3) “可信≈可靠+安全”。形式上,等式(1)对这些“可信”定义均可以进行解释:
(1)“完整性”的定义。等式(1)的左边表示行为α的实际执行结果;等式 (1)的右边表示在完整性策略控制下的行为wexpected(α,dom(a))的理论执行结果。如果等式成立,则表明真实执行结果与完整性策略控制下的执行结果一致,换句话说,当前的执行是符合完整性策略的。因而完整性没有遭到破坏。
(2)“行为符合预期”定义。类似的,等式(1)的左边表示行为α的实际执行结果;右边表示在安全策略控制下的行为wexpected(α,dom(a))的理论执行结果(预期执行结果)。如果等式成立,则表示真实执行结果与预期执行结果一致,换句话说,机器M是以预期的方式朝着预期的目标在执行,因而是可信的。
(3)“安全性(机密性)”定义。这是无干扰模型提出的本义,因而自然成立。
接下来通过定理1和定理2来验证如何将无干扰模型应用于实时动态系统中。
定理1无干扰属性验证展开定理。如果机器M满足如下属性:
(1)输出一致属性:
Figure RE-GDA0001846548820000131
(2)弱单步一致属性:
Figure RE-GDA0001846548820000132
(3)局部无干扰属性:
Figure RE-GDA0001846548820000133
则机器M是满足无干扰的,或者说可信的。
将等式(1)看做一个状态机,利用归纳法证明了定理1所示的展开定理。若我们将等式(1)的左右两边看做两个状态机,分别称为等价自动机EMA (Equivalent Machine'sAutomaton)和弱预期等价自动机WEMA(Weakly Equivalent Machine's Automaton)。不失一般性,假设左右两个状态机的状态集分别是S和T,则等式(1)中EMA和WEMA将从相同的初始状态s0=t0(so∈S ∧t0∈T)出发,分别执行行为α以及安全策略控制下的行为β=wexpected(α, dom(a))。利用EMA和WEMA,可以证明定理1三条属性的数学本质是:EMA 和WEMA在同步执行的过程中总是保持状态等价的。该数学本质可以形式地表达为如下定理2。
定理2无干扰(或者说可信)的状态递归定义。机器M是满足无干扰的,或者说可信的,当且仅当:
Figure RE-GDA0001846548820000134
定理2中的符号含义是:γ
(1)N。对于任意行为γ,N是γ中原子动作的个数。
例如,不失一般性,设γ=a1-a2-…am,则γ中共有m个原子动作,故N=m。
(2)γi(0≤i≤N)。对于任意行为γ,随着机器M对γ中原子动作的不断执行,用γi表示剩下的行为,称为“执行子行为串”,并令γ0=γ,γN=ε。
例如,不失一般性,设γ=a1-a2-…-am,则有:初始时γ0=γ=a1-a2-…-am;当机器M执行原子动作a1后有γ1=a0-a2-…-am;...;当机器M执行am-1后有γm-1=am=am-ε;当机器M执行am后有γm=γN=ε。
(3)ISγi。若用w表示等式(1)中dom(a),即w=dom(a),约定ISγi=interfsrcs(γi,w),即ISγi的含义是:所有对dom(a)有直接或者间接干扰的安全域构成的集合。
(4)si和si+1。si表示EMA的当前状态。si+1表示EMA从当前状态si,执行γi=ai+1-…-am中的第一个原子动作ai+1之后到达的新状态si+1=step(si,ai+1)。
(5)ti和ti+1。ti表示WEMA的当前状态。ti+1表示WEMA从当前状态 ti,执行βi=interfsrcs(γi,w)中的第一个原子动作之后到达的新状态ti+1。由γi=ai+1 -…-am,当dom(ai+1)∈interfsrcs(γi,w),即dom(ai+1)对w=dom(a)有直接或者间接干扰时,βi=wexpected(γi,w)的第一个原子动作为ai+1,此时ti+1=step(ti,ai+1);否则若dom(ai+1)
Figure RE-GDA0001846548820000143
interfsrcs(γi,w),即dom(ai+1)对w=dom(a)没有任何干扰时,βi=wexpected(γi,w)的第一个原子动作为ε,此时ti+1=step(ti,ε)=ti
综上,公式(2)的含义是:机器M是无干扰的,或者说可信的,当且仅当 EMA和WEMA两个状态机在同步运行的过程中总是保持状态等价的。
定理2可简化如下推论1。
推论1传递无干扰的状态递归定义。在传递无干扰安全策略下,机器M 是满足无干扰的,或者说可信的,当前仅当:
Figure RE-GDA0001846548820000141
其中,w=dom(a)是观察动作α所属的安全域。
证明:根据传递无干扰安全策略定义,所有对w发生干扰的安全域,无需通过任何中间(intermediate)媒介安全域,即可直接对w进行干扰。这意味着无需保证EMA和WEMA在中间安全域上的状态等价性,只要确保两者总是在w上等价即可。故公式(2)可以简化为
Figure RE-GDA0001846548820000142
推论得证。
前已说明,Linux系统调用的八个安全域之间互相无干扰。因此任何两个安全域之间都无法利用第三安全域作为中间安全域来间接传递信息,这本质上退化为传递无干扰,故使用推论1来对进程up的实时可信性进行验证。
不失一般性,设进程up的行为为α=a0-a1-…-an,则依照预期行为规范安全策略,计算α对应的预期行为β=wexpected(α,w)。这里w即等式(1)中的dom(a),且w由预期行为规范安全策略可以确定。最后,比较α和β在同步执行过程中是否总是在w上保持等价即可。上述过程可以表述为如下算法1。
算法1进程up实时可信度量(验证)算法
(1)任意时刻,实时获取进程up系统调用序列,得到行为α=a0-a1-…-an
(2)读取预期行为规范,计算进程up在预期行为规范控制下的预期行为β=wexpected(α,w)(w可由预期行为规范中安全域确定);
(3)比较α和β在同步执行过程中是否总是在w上保持等价。如果总是保持等价,则进程up可信,转步骤1;否则报警。
算法1结束。可以理解的是,待度量的软件当前进程从开始到当前时刻,所进行的系统调用肯定不止一个,在具体实现中,可以获取待度量软件当前进程的系统调用序列,基于所述系统调用序列获取当前进程的真实行为序列。比如,设当前时刻为T,则需要获取当前进程从初始执行时刻T0到当前时刻 T为止之前所有的系统调用,从而获取基于所述系统调用的真实行为序列,再依据系统调用序列,查找出与所述系统调用序列中各系统调用对应的预期行为规范,基于所述系统调用及与各系统调用对应的预期行为规范,获得当前进行从初始执行时刻到当前时刻的预期行为序列。可以看出,随着系统运行时间T的增加,进行的系统调用也会很多,实际的度量时间也会增大,而这也必然会影响软件可信度量的实时性。
为了提高度量的效果,需要对度量方法进行进一步地优化,前已提及,推论1(和定理2)的递归验证过程可以简化,其简化思想如下。不失一般性,以推论1为例(定理2是类似的),如下公式(4)和公式(5)是前后相继的两次验证:
Figure RE-GDA0001846548820000151
Figure RE-GDA0001846548820000152
注意只有公式(4)验证通过之后,才会验证公式(5),再注意到公式(5)的前件正好是公式(4)的后件,这意味着当验证公式(5)时,其前件必然成立,故而对公式(4)只需要验证后件即可。推而广之,在一般情况下,推论1进行递归验证时,其每一步验证实际上只需要验证后件即可。由此,推论1可以等价改为推论2。
推论2传递无干扰的状态递归定义。在传递无干扰安全策略下,机器M 是满足无干扰的,或者说可信的,当且仅当:
Figure RE-GDA0001846548820000153
对应地,算法1可以等价优化为如下算法2。
算法2改进的进程up实时可信度量(验证)算法
(1)任意时刻,实时获取进程up的本次系统调用,不失一般性,假设为本次执行的系统调用为a;
(2)遍历预期行为规范,计算原子动作a在预期行为规范控制下的预期执行动作β=wexpected(a,w),最终有:β=a(安全策略预期允许执行a)或者β=ε(安全策略预期不允许执行a);
(3)如果β=a,则进程真实执行与预期执行一致,根据推论1,up执行 a后可信,转步骤1;如果β=ε,则进程真实执行与预期执行不一致,up执行a后不可信,报警。
算法2结束。算法2只需要在每次系统调用a执行时,判定a是否被安全策略所允许即可,因而其时间复杂度为O(1)。O(1)完全满足了实时可信验证的要求。
由此,算法2解决了软件行为可信性的实时判定问题。
在具体实现中,获取待度量软件当前进程的当前系统调用,基于所述系统调用获取所述当前进程的当前真实行为,查找与所述当前系统对应的预期行为规范,基于所述预期行为规范获得与所述当前真实行为对应的当前预期行为。
进一步地,在获取了系统调用序列之后,遍历所述系统调用序列,将所述系统调用序列中的每次系统调用对应的真实行为与预期行为进行匹配。
S40:在匹配成功时,判定所述待度量软件处于可信状态。
只有每次都匹配成功,才能判定所述待度量软件处于可信状态,只要有一次匹配失败,则认为所述待度量软件处于不可信状态。
可以理解的是,在实际运行时,如果度量到软件可信,那么会放行软件继续运行,并将度量结果记录到TPM和log中;如果不可信,那么将会报警,并将度量结果记录到TPM和log中。
需要说明的是,生成的预期行为规范并不是一成不变的,对于任意进程,增加、删除或者修改其绑定的预期行为规范都较为方便。对于同一个受保护的软件,根据不同的安全需求,亦可以生成不同的预期行为规范。一旦发生紧急安全事件,还可以根据安全事件的行为特征快速生成预期行为规范进行应急响应。
在本实施例中,获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为,查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为,将所述真实行为与所述预期行为进行匹配,在匹配成功时,判定所述待度量软件处于可信状态。本发明,在软件运行过程中,能够实时地获取软件当前进程的系统调用,基于预期行为规范,将软件的真实行为与预期行为进行对比,获得软件当前的状态,实现了对软件的行为进行实时可信度量,及时发现各种攻击,提高了软件对各种攻击进行主动防御及对攻击进行及时处理的能力。
参照图3,图3为本发明软件实时可信度量的系统第一实施例的功能模块图,基于软件实时可信度量的方法,提出本发明软件实时可信度量的系统的第一实施例。
在本实施例中,所述软件实时可信度量的系统包括:
获取模块10,用于获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为。
获取软件的系统调用,在具体实现中,可以首先获取当前进程的进程标志符,通过Ptrace系统函数获取所述当前进程的系统调用及参数信息,基于所述系统调用及参数信息获取所述当前进程的真实行为。
查找模块20,用于查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为。
需要说明的是,本发明提供了一种预期行为规范的编写语法规范,以方便预期行为规范的编写。使用者只要具备基本的系统调用编程知识,即可以进行预期行为规范的编写,本发明提供的语法元素及具体的语法结构可参见表1及表2。
表1预期行为规范的主要语法元素
Figure RE-GDA0001846548820000171
Figure RE-GDA0001846548820000181
需要说明的是,本发明提供的构思可以应用到多种操作系统,包括但不限于:包括但不限于:Linux操作系统、Windows平台、类Unix平台、Android 平台及iOS平台等,本实施例以Linux操作系统为例,对具体的实施方式进行说明。
基于不同的功能,将Linux系统调用可以分类如下信息大类,包括:(1) 进程控制类(u0);(2)文件系统控制类(u1);(3)系统控制类(u2);(4) 内存管理类(u3);(5)网络管理类(u4);(6)网络Socket控制类(u5);(7) 用户管理类(u6);(8)进程间通信类(u7)。这八类系统调用可以看做八个不同的安全域,分别用u0~u7表示。由于系统调用之间的功能隔离关系,这八个安全域之间是互相无干扰的。
表1中编号为1-9项详细的含义说明如下:
(1)ui(0≤i≤7)。八个安全域,对应着Linux内核的八个系统调用大类。
(2)u[i][j]={m1,m2,....,mn }。子安全域,其含义是:选择安全域ui中的部分系统调用组成子安全域,且子安全域的编号是j(子安全域可能有多个,用编号j予以区分)。
(3)FOR INDEX=mk 。表1中编号为3~7的语法元素需要联合使用(不单独使用),其目的是对系统调用的参数施加安全策略,以实现最细粒度的安全控制。
FOR INDEX=mk 的含义是:对u[i][j]mk 号系统调用的参数指定安全策略,具体地说,利用xparamx 指定mk 号系统调用的第x个参数能够使用paramx ;或者利用x!=paramx 指定第x个参数不能够使用paramx 。如果第x个参数是结构体类型,可以进一步利用xstruct-elemparamx 指定第x个参数的内部成员struct-elem能够使用paramx ;或者利用xstruct-elem!paramx 指定第x个参数的内部成员struct-elem不能够使用paramx
(4)xparamx x!=paramx xstruct-elemparamx xstruct-elem!paramx ,这些语法元素需要和FOR INDEX=mk 联用,上述(3)当中已经做了解释。
(5)syscall-ret。系统调用返回值,需要和WHERE连用。少数情况下,一个系统调用需要用另外一个系统调用的返回值作为参数,一个例子是:首先用open获取文件描述符fd,然后将fd作为write的第一个参数以实现对文件的写入,上述情形可以抽象为syscall-ret=open,然后write(syscall-ret,...)。
在编写预期行为规范的时候,对于上述情形需要用syscall-ret实现参数的传递。并且一般情况下,如果有多个相同的系统调用,应使用最近一次系统调用的返回值作为参数。
(6)WHERE。与syscall-ret连用,用来指明syscall-ret从哪个系统调用得到返回值。
表2预期行为规范的语法结构
Figure RE-GDA0001846548820000191
Figure RE-GDA0001846548820000201
表2中up代表实时进行可信度量的当前进程,表2中各项预期行为规范语法结构的含义如下:
(1)up∞ui(0≤i≤7)。进程up可以对ui安全域进行干扰,换句话说,进程 up可以调用ui中的任意系统调用。
(2)up∝ui(0≤i≤7)。进程up对ui安全域无干扰,换句话说,进程up不能调用ui中的任意系统调用。
(3)up∞u[i][j]={m1,m2,....mn }。进程up可以对子安全域u[i][j]进行干扰。u[i][j]由ui中索引号为m1,m2,....mn 的系统调用构成,进程up可以调用m1,m2,....mn 对应的任何系统调用。
(4)up∝u[i][j]={m1,m2,....mn }。进程up对子安全域u[i][j]无干扰。u[i][j]由ui中索引号为m1,m2,....mn 的系统调用构成,进程up不能调用m1,m2,....mn 对应的任何系统调用。
(5)编号5语法结构的含义是,进程up可以对满足如下参数条件的子安全域u[i][j]进行干扰:
对于u[i][j]中编号为m1 的系统调用,其第1个参数或者可以是实参param1 ([1=param1 ]),或者不能是实参param1 ([1!=param1]),或者对第1个参数不加控制(中括号表明是可选结构,因此第一个参数也可以两种情况均不选,亦即对第1个参数不施加安全策略);...;其第x个参数或者可以是实参paramx ([xparamx ]),或者不能是实参paramx ([x!=paramx ]),或者对第x个参数不加控制。上述第1~x个参数安全策略之间可以是“与”关系,也可以是“或”关系([∧|∨]),具体由EBS编写者根据实际安全需求确定。
对于编号为m2 ,...,mn 的系统调用,其参数的安全策略含义是如上类似的。
最后一行的WHERE指明,在上述m2 ,...,mn 个系统调用中,某个系统调用的参数来自mk (1≤k≤n)号系统调用的返回值,即syscall-ret=mk 。WHERE 是可选结构,不是必须的。
(6)编号6的语法结构的含义是,进程up对子安全域u[i][j]无干扰,其参数安全策略含义与编号5是相同的,此处不再重复。
由此,表1和表2说明了如何依据系统调用,编写具体的预期行为规范。
匹配模块30,用于将所述真实行为与所述预期行为进行匹配。
本发明提供的方法是基于无干扰模型及无干扰理论的基础上提出的,本实施例的无干扰模型概括如下:
一个系统M可以用一个状态机表示,其包含如下元素。
(1)状态机S,其中包含一个唯一的初始状态s0;(2)一个原子动作集 A,其中包含了所有的原子动作;(3)一个行为集B,其中包含了所有由原子动作的连接所构成的行为。如果用“-”表示原子动作的连接,则一个行为的示例是α=a0-a1-a2-…-an,其中ai(0≤i≤n)∈A;(4)一个输出集O,其中包含了所有利用原子动作所观察到的输出结果;(5)一个安全域集D,其中包含了系统中所有的安全域;(6)干扰关系∞和无干扰关系∝,分别表示信息授权/禁止在两个安全域之间流动,两者互为补集;(7)动作-安全域映射函数 dom:A→D。返回每一个原子动作a∈A所属的安全域dom(a);(8)单步状态变迁函数:step:S×A→S,描述了系统M的单步状态变迁;(9)多步状态变迁函数::S×A→S。如果用ε表示空动作,multisteps可以右递归表示为:
Figure RE-GDA0001846548820000211
其描述了系统M从状态s∈S,执行行为(即多个原子动作序列) a=a0-a1-a2-…-an∈B之后,所到达的新状态;(10)行为结果函数(behavior consequence):behcon:S×A→O,给出了系统M在某个状态s∈S,外界利用动作a∈A所能观察到的结果o∈O。
约定使用s,t表示系统状态,约定使用α,β…表示行为(原子动作序列),使用u,v…表示安全域。
利用无干扰模型分析定义中的状态机是否可信,相应的判定等式可如等式(1)所示,
Figure RE-GDA0001846548820000221
等式(1)对“可信”的定义均进行如下解释:
(1)“完整性”的定义。等式(1)的左边表示行为α的实际执行结果;等式 (1)的右边表示在完整性策略控制下的行为wexpected(α,dom(a))的理论执行结果。如果等式成立,则表明真实执行结果与完整性策略控制下的执行结果一致。因而完整性没有遭到破坏。
(2)“行为符合预期”定义。类似的,等式(1)的左边表示行为α的实际执行结果;右边表示在安全策略控制下的行为wexpected(α,dom(a))的理论执行结果(预期执行结果)。如果等式成立,则表示真实执行结果与预期执行结果一致,因而是可信的。
(3)“安全性(机密性)”定义。这是无干扰模型提出的本义,因而自然成立。
接下来通过定理1和定理2来验证如何将无干扰模型应用于实时动态系统中。
定理1无干扰属性验证展开定理。如果机器M满足如下属性:
(1)输出一致属性:
Figure RE-GDA0001846548820000222
(2)弱单步一致属性:
Figure RE-GDA0001846548820000223
(3)局部无干扰属性:
Figure RE-GDA0001846548820000224
则机器M是满足无干扰的,或者说可信的。
将等式(1)看做一个状态机,利用归纳法证明了定理1所示的展开定理。若我们将等式(1)的左右两边看做两个状态机,分别称为等价自动机EMA (Equivalent Machine'sAutomaton)和弱预期等价自动机WEMA(Weakly Equivalent Machine's Automaton)。不失一般性,假设左右两个状态机的状态集分别是S和T,则等式(1)中EMA和WEMA将从相同的初始状态s0=t0(so∈S ∧t0∈T)出发,分别执行行为α以及安全策略控制下的行为β=wexpected(α, dom(a))。利用EMA和WEMA,可以证明定理1三条属性的数学本质是:EMA 和WEMA在同步执行的过程中总是保持状态等价的。该数学本质可以形式地表达为如下定理2。
定理2无干扰(或者说可信)的状态递归定义。机器M是满足无干扰的,或者说可信的,当且仅当:
Figure RE-GDA0001846548820000231
定理2中的符号含义是:γ
(1)N。对于任意行为γ,N是γ中原子动作的个数。
例如,不失一般性,设γ=a1-a2-…am,则γ中共有m个原子动作,故N=m。
(2)γi(0≤i≤N)。对于任意行为γ,随着机器M对γ中原子动作的不断执行,用γi表示剩下的行为,称为“执行子行为串”,并令γ0=γ,γN=ε。
例如,不失一般性,设γ=a1-a2-…-am,则有:初始时γ0=γ=a1-a2-…-am;当机器M执行原子动作a1后有γ1=a0-a2-…-am;...;当机器M执行am-1后有γm-1=am=am-ε;当机器M执行am后有γm=γN=ε。
(3)ISγi。若用w表示等式(1)中dom(a),即w=dom(a),约定ISγi=interfsrcs(γi,w),即ISγi的含义是:所有对dom(a)有直接或者间接干扰的安全域构成的集合。
(4)si和si+1。si表示EMA的当前状态。si+1表示EMA从当前状态si,执行γi=ai+1-…-am中的第一个原子动作ai+1之后到达的新状态si+1=step(si,ai+1)。
(5)ti和ti+1。ti表示WEMA的当前状态。ti+1表示WEMA从当前状态 ti,执行βi=interfsrcs(γi,w)中的第一个原子动作之后到达的新状态ti+1。由γi=ai+1 -…-am,当dom(ai+1)∈interfsrcs(γi,w),即dom(ai+1)对w=dom(a)有直接或者间接干扰时,βi=wexpected(γi,w)的第一个原子动作为ai+1,此时ti+1=step(ti,ai+1);否则若dom(ai+1)
Figure RE-GDA0001846548820000233
interfsrcs(γi,w),即dom(ai+1)对w=dom(a)没有任何干扰时,βi=wexpected(γi,w)的第一个原子动作为ε,此时ti+1=step(ti,ε)=ti
综上,公式(2)的含义是:机器M是无干扰的,或者说可信的,当且仅当 EMA和WEMA两个状态机在同步运行的过程中总是保持状态等价的。
定理2可简化如下推论1。
推论1传递无干扰的状态递归定义。在传递无干扰安全策略下,机器M 是满足无干扰的,或者说可信的,当且仅当:
Figure RE-GDA0001846548820000232
其中,w=dom(a)是观察动作α所属的安全域。
证明:根据传递无干扰安全策略定义,所有对w发生干扰的安全域,无需通过任何中间(intermediate)媒介安全域,即可直接对w进行干扰。这意味着无需保证EMA和WEMA在中间安全域上的状态等价性,只要确保两者总是在w上等价即可。故公式(2)可以简化为
Figure RE-GDA0001846548820000241
推论得证。
前已说明,Linux系统调用的八个安全域之间互相无干扰。因此任何两个安全域之间都无法利用第三安全域作为中间安全域来间接传递信息,这本质上退化为传递无干扰,故使用推论1来对进程up的实时可信性进行验证。
不失一般性,设进程up的行为为α=a0-a1-…-an,则依照预期行为规范安全策略,计算α对应的预期行为β=wexpected(α,w)。这里w即等式(1)中的dom(a) ,且w由预期行为规范安全策略可以确定。最后,比较α和β在同步执行过程中是否总是在w上保持等价即可。上述过程可以表述为如下算法1。
算法1进程up实时可信度量(验证)算法
(1)任意时刻,实时获取进程up系统调用序列,得到行为α=a0-a1-…-an
(2)读取预期行为规范,计算进程up在预期行为规范控制下的预期行为β=wexpected(α,w)(w可由预期行为规范中安全域确定);
(3)比较α和β在同步执行过程中是否总是在w上保持等价。如果总是保持等价,则进程up可信,转步骤1;否则报警。
算法1结束。
为了提高度量的效果,需要对度量方法进行进一步地优化,前已提及,推论1(和定理2)的递归验证过程可以简化,其简化思想如下。不失一般性,以推论1为例(定理2是类似的),如下公式(4)和公式(5)是前后相继的两次验证:
Figure RE-GDA0001846548820000242
Figure RE-GDA0001846548820000243
注意只有公式(4)验证通过之后,才会验证公式(5),再注意到公式(5)的前件正好是公式(4)的后件,这意味着当验证公式(5)时,其前件必然成立,故而对公式(4)只需要验证后件即可。推而广之,在一般情况下,推论1进行递归验证时,其每一步验证实际上只需要验证后件即可。由此,推论1可以等价改为推论2。
推论2传递无干扰的状态递归定义。在传递无干扰安全策略下,机器M 是满足无干扰的,或者说可信的,当且仅当:
Figure RE-GDA0001846548820000251
对应地,算法1可以等价优化为如下算法2。
算法2改进的进程up实时可信度量(验证)算法
(1)任意时刻,实时获取进程up的本次系统调用,不失一般性,假设为本次执行的系统调用为a;
(2)遍历预期行为规范,计算原子动作a在预期行为规范控制下的预期执行动作β=wexpected(a,w),最终有:β=a(安全策略预期允许执行a)或者β=ε(安全策略预期不允许执行a);
(3)如果β=a,则进程真实执行与预期执行一致,根据推论1,up执行 a后可信,转步骤1;如果β=ε,则进程真实执行与预期执行不一致,up执行 a后不可信,报警。
算法2结束。算法2只需要在每次系统调用a执行时,判定a是否被安全策略所允许即可,因而其时间复杂度为O(1)。O(1)完全满足了实时可信验证的要求。
由此,算法2解决了软件行为可信性的实时判定问题。
判定模块40,用于在匹配成功时,判定所述待度量软件处于可信状态。
只有每次都匹配成功,才能判定所述待度量软件处于可信状态,只要有一次匹配失败,则认为所述待度量软件处于不可信状态。
可以理解的是,在实际运行时,如果度量到软件可信,那么会放行软件继续运行,并将度量结果记录到TPM和log中;如果不可信,那么将会报警,并将度量结果记录到TPM和log中。
需要说明的是,生成的预期行为规范并不是一成不变的,对于任意进程,增加、删除或者修改其绑定的预期行为规范都较为方便。对于同一个受保护的软件,根据不同的安全需求,亦可以生成不同的预期行为规范。一旦发生紧急安全事件,还可以根据安全事件的行为特征快速生成预期行为规范进行应急响应。
在本实施例中,获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为,查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为,将所述真实行为与所述预期行为进行匹配,在匹配成功时,判定所述待度量软件处于可信状态。本发明,在软件运行过程中,能够实时地获取软件当前进程的系统调用,基于预期行为规范,将软件的真实行为与预期行为进行对比,获得软件当前的状态,实现了对软件的行为进行实时可信度量,及时发现各种攻击,提高了软件对各种攻击进行主动防御及对攻击进行及时处理的能力。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有软件实时可信度量的程序,所述软件实时可信度量的程序被处理器执行时实现如下操作:
获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为;
查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为;
将所述真实行为与所述预期行为进行匹配;
在匹配成功时,判定所述待度量软件处于可信状态。
进一步地,所述软件实时可信度量的程序被处理器执行时还实现如下操作:
基于预先编制的语法规范,生成预期行为规范。
进一步地,所述软件实时可信度量的程序被处理器执行时还实现如下操作:
获取当前进程的进程标志符,通过Ptrace系统函数获取所述当前进程的系统调用及参数信息,基于所述系统调用及参数信息获取所述当前进程的真实行为。
进一步地,所述软件实时可信度量的程序被处理器执行时还实现如下操作:
分别查找与所述系统调用序列中各系统调用对应的预期行为规范,基于所述系统调用及与所述系统调用对应的预期行为规范,获得所述当前进程的预期行为序列。
进一步地,所述软件实时可信度量的程序被处理器执行时还实现如下操作:
遍历所述系统调用序列,将所述系统调用序列中各系统调用对应的真实行为与预期行为分别进行匹配。
进一步地,所述软件实时可信度量的程序被处理器执行时还实现如下操作:
查找与所述当前系统调用对应的预期行为规范,基于所述预期行为规范获得与所述当前真实行为对应的当前预期行为。
进一步地,所述软件实时可信度量的程序被处理器执行时还实现如下操作:
检测到所述待度量软件进行更新时,更新所述预期行为规范。
本实施例通过上述方案,获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为,查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为,将所述真实行为与所述预期行为进行匹配,在匹配成功时,判定所述待度量软件处于可信状态。本发明,在软件运行过程中,能够实时地获取软件当前进程的系统调用,基于预期行为规范,将软件的真实行为与预期行为进行对比,获得软件当前的状态,实现了对软件的行为进行实时可信度量,及时发现各种攻击,提高了软件对各种攻击进行主动防御及对攻击进行及时处理的能力。
这里给出一些例子,说明如何应用本发明的方法构建针对一些特定操作的预期行为规范。
例1:预期不能生成shell。
生成的预期行为规范1:up∝u[0][0]={2}
FOR INDEX=2:{1=“/bin/bash”∨1=“/bin/sh”∨1=“/bin/tcsh”∨1=“/bin/csh”∨1=“/bin/dash”}
预期行为规范1的含义是:进程up预期对子安全域u[0][0]={2}无干扰。U0安全域为进程控制类系统调用,其中编号2对应execve,故u[0][0]={execve}。再结合FOR INDEX=2语句的参数安全策略,由于execve的第一个参数是字符串类型,指明了要运行的二进制文件名,因此规范1表明,进程up预期不能运行/bin目录下的bash、sh、tcsh、csh和dash文件以开启shell。
攻击者突破系统之后,一般需要开启shell以进一步执行命令。上述生成的预期行为规范1度量并禁止了这种行为,需要说明的是,Linux的shell并不只有上述5种类型,使用者可以根据实际安全需求容易地更新规范1。
例2:预期不能清空防火墙规则。
生成的预期行为规范2:up∝u[0][1]={2}
FOR INDEX=2:{1=/sbin/iptables}∧{2=[“/sbin/iptables”,“-F”]}
预期行为规范2的含义是:进程up预期对子安全域u[0][1]无干扰。由于规则1中u[0][0]和这里u[0][1]均是来自于u0的子安全域,因此两者赋予不同的编号,分别是j=0和j=1。规范2表明,进程up预期不能带参数“-F”执行/sbin/iptables 文件以清空所有防火墙规则。
由此,规范2度量并禁止了清空防火墙规则行为。
以上仅仅是为了方便理解本专利的技术而给出的示例,并不意味着本专利仅仅局限于上述示例。
在大规模实验中,我们测试了在现代ROP攻击,以及传统代码多态、代码混淆、代码变形和代码编码等攻击形式下对软件行为的可信度量和防护功能,实验表明,本专利的方法能够成功捕获这些shellocde攻击,并进行报警。表3给出了实验结果。
表3可实时度量和防护的攻击对抗方法
Figure RE-GDA0001846548820000281
表3中,ROP(Return-Oriented Programming)代表了现代攻击的发展趋势。ROP不寻求注入代码,而是从已有的“干净代码”中寻找合适的“指令片段” (gadgets),来链接形成完整的攻击代码以达成攻击目的。但是,ROP技术本身并不能攻击系统,其仍然需要通过构建合适的指令片段链来调用系统调用以达成攻击。因此本专利方法仍然可以发现利用ROP技术所发起的攻击。对于表3中余下的四种经典攻击代码对抗方法,实验表明亦可以有效度量。
从实验结果还可以发现,通过分析和抽取已有shellcode的特征,利用较少的预期行为规范(共7条),就可以覆盖主要的攻击流程和大量的攻击代码,实现对软件可信性的实时度量。
时间分析表明,在最坏的情况下,针对含大量系统调用的代码,换句话说,系统调用出现数量和频率均较高的代码,如shellcode等,本专利的方法所额外增加的时间负载约为1.5x~10x之间,平均约为5x。但是,一般情况下应用所含系统调用的出现数量和频率不会达到shellcode的强度。实际测试表明,对于交互强的应用,如浏览器等等,访问视频、音频、网页等的测试表明,本专利的方法额外增加的时间负载约为不到10%,即0.1x,这表明方法是高效的,完全可以应用于实时场景。交互测试证明了上述结论。

Claims (10)

1.一种软件实时可信度量方法,其特征在于,所述方法包括以下步骤:
基于预先编制的语法规范,生成预期行为规范;其中,所述语法规范中的语法元素至少包括:
Figure DEST_PATH_IMAGE002
对应八个安全域,
Figure DEST_PATH_IMAGE004
对应安全域
Figure DEST_PATH_IMAGE006
,FOR INDEX=
Figure DEST_PATH_IMAGE008
表示对子安全域
Figure DEST_PATH_IMAGE010
中第
Figure DEST_PATH_IMAGE008A
个系统调用参数的预期使用方式施加细粒度的安全策略,这里
Figure DEST_PATH_IMAGE012
,x=paramx对应预期某个具体系统调用的第x个参数能够使用paramx,x!=paramx对应预期某个具体系统调用的第x个参数不能够使用paramx,syscall-ret对应系统调用返回值,需要和WHERE连用,WHERE与syscall-ret连用,用来指明syscall-ret从哪个系统调用得到返回值,进一步地,paramx,x!=paramx需要联合使用;
所述
Figure DEST_PATH_IMAGE002A
对应八个安全域包括:(1)进程控制类
Figure DEST_PATH_IMAGE014
;(2)文件系统控制类
Figure DEST_PATH_IMAGE016
;(3)系统控制类
Figure DEST_PATH_IMAGE018
;(4)内存管理类
Figure DEST_PATH_IMAGE020
;(5)网络管理类
Figure DEST_PATH_IMAGE022
;(6)网络Socket控制类
Figure DEST_PATH_IMAGE024
;(7)用户管理类
Figure DEST_PATH_IMAGE026
;(8)进程间通信类
Figure DEST_PATH_IMAGE028
获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为;
查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为;
将所述真实行为与所述预期行为进行匹配;
在匹配成功时,判定所述待度量软件处于可信状态。
2.如权利要求1所述的方法,其特征在于,所述查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为之前,所述方法还包括:
基于预先编制的语法规范,生成预期行为规范。
3.如权利要求2所述的方法,其特征在于,所述获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为,具体包括:
获取当前进程的进程标志符,通过Ptrace系统函数获取所述当前进程的系统调用及参数信息,基于所述系统调用及参数信息获取所述当前进程的真实行为。
4.如权利要求3所述的方法,其特征在于,所述获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为,具体包括:
获取待度量软件当前进程的系统调用序列,基于所述系统调用序列获取当前进程的真实行为序列;
相应地,所述查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得
与所述真实行为对应的预期行为,具体包括:
分别查找与所述系统调用序列中各系统调用对应的预期行为规范,基于所述系统调用及与所述系统调用对应的预期行为规范,获得所述当前进程的预期行为序列。
5.如权利要求4所述的方法,其特征在于,所述将所述真实行为与所述预期行为进行匹配,具体包括:
遍历所述系统调用序列,将所述系统调用序列中各系统调用对应的真实行为与预期行为分别进行匹配。
6.如权利要求3所述的方法,其特征在于,所述获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为,具体包括:
获取待度量软件当前进程的当前系统调用,基于所述当前系统调用获取所述当前进程的当前真实行为;
相应地,所述查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为,具体包括:
查找与所述当前系统调用对应的预期行为规范,基于所述预期行为规范获得与所述当前真实行为对应的当前预期行为。
7.如权利要求1-6任一项所述的方法,其特征在于,所述在匹配成功时,判定所述待度量软件处于可信状态之后,所述方法还包括:
基于安全需求变动实时更新所述预期行为规范。
8.一种软件实时可信度量的设备,其特征在于,所述软件实时可信度量的设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的软件实时可信度量的程序,所述软件实时可信度量的程序配置为实现如权利要求1至7中任一项所述的软件实时可信度量方法的步骤。
9.一种软件实时可信度量的系统,其特征在于,所述软件实时可信度量的系统包括:
基于预先编制的语法规范,生成预期行为规范;其中,所述语法规范中的语法元素至少包括:
Figure DEST_PATH_IMAGE002AA
对应八个安全域,
Figure DEST_PATH_IMAGE004A
对应安全域
Figure DEST_PATH_IMAGE006A
,FOR INDEX=
Figure DEST_PATH_IMAGE008AA
表示对子安全域
Figure DEST_PATH_IMAGE010A
中第
Figure DEST_PATH_IMAGE008AAA
个系统调用参数的预期使用方式施加细粒度的安全策略,这里
Figure DEST_PATH_IMAGE012A
,x=paramx对应预期某个具体系统调用的第x个参数能够使用paramx,x!=paramx对应预期某个具体系统调用的第x个参数不能够使用paramx,syscall-ret对应系统调用返回值,需要和WHERE连用,WHERE与syscall-ret连用,用来指明syscall-ret从哪个系统调用得到返回值,进一步地,paramx,x!=paramx需要联合使用;
所述
Figure DEST_PATH_IMAGE002AAA
对应八个安全域包括:(1)进程控制类
Figure DEST_PATH_IMAGE014A
;(2)文件系统控制类
Figure DEST_PATH_IMAGE016A
;(3)系统控制类
Figure DEST_PATH_IMAGE018A
;(4)内存管理类
Figure DEST_PATH_IMAGE020A
;(5)网络管理类
Figure DEST_PATH_IMAGE022A
;(6)网络Socket控制类
Figure DEST_PATH_IMAGE024A
;(7)用户管理类
Figure DEST_PATH_IMAGE026A
;(8)进程间通信类
Figure DEST_PATH_IMAGE028A
获取模块,用于获取待度量软件当前进程的系统调用,基于所述系统调用获取所述当前进程的真实行为;
查找模块,用于查找与所述系统调用对应的预期行为规范,基于所述预期行为规范获得与所述真实行为对应的预期行为;
匹配模块,用于将所述真实行为与所述预期行为进行匹配;
判定模块,用于在匹配成功时,判定所述待度量软件处于可信状态。
10.一种存储介质,其特征在于,所述存储介质上存储有软件实时可信度量的程序,所述软件实时可信度量的程序被处理器执行时实现如权利要求1至7中任一项所述的软件实时可信度量方法的步骤。
CN201811009034.1A 2018-08-31 2018-08-31 软件实时可信度量的方法、设备、系统及存储介质 Active CN109165509B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811009034.1A CN109165509B (zh) 2018-08-31 2018-08-31 软件实时可信度量的方法、设备、系统及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811009034.1A CN109165509B (zh) 2018-08-31 2018-08-31 软件实时可信度量的方法、设备、系统及存储介质

Publications (2)

Publication Number Publication Date
CN109165509A CN109165509A (zh) 2019-01-08
CN109165509B true CN109165509B (zh) 2023-03-10

Family

ID=64893658

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811009034.1A Active CN109165509B (zh) 2018-08-31 2018-08-31 软件实时可信度量的方法、设备、系统及存储介质

Country Status (1)

Country Link
CN (1) CN109165509B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110909362B (zh) * 2019-11-12 2022-04-29 中国科学院微电子研究所 系统检测方法、装置、电子设备及存储介质
CN111310162B (zh) * 2020-01-20 2023-12-26 深圳力维智联技术有限公司 基于可信计算的设备接入控制方法、装置、产品及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073816A (zh) * 2010-12-31 2011-05-25 兰雨晴 基于行为的软件可信度量系统及方法
CN104517057A (zh) * 2014-12-22 2015-04-15 中国人民解放军信息工程大学 基于可信计算的软件混合度量方法
CN105718796A (zh) * 2016-01-21 2016-06-29 西安电子科技大学 一种安卓用户隐私数据访问的系统调用级监控方法
CN108171061A (zh) * 2018-01-16 2018-06-15 武汉轻工大学 一种安卓系统内核安全检测方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073816A (zh) * 2010-12-31 2011-05-25 兰雨晴 基于行为的软件可信度量系统及方法
CN104517057A (zh) * 2014-12-22 2015-04-15 中国人民解放军信息工程大学 基于可信计算的软件混合度量方法
CN105718796A (zh) * 2016-01-21 2016-06-29 西安电子科技大学 一种安卓用户隐私数据访问的系统调用级监控方法
CN108171061A (zh) * 2018-01-16 2018-06-15 武汉轻工大学 一种安卓系统内核安全检测方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
入侵检测技术研究综述;杨智君 等;《计算机工程与设计》;20060630;第27卷(第12期);第2121页左栏第4段 *

Also Published As

Publication number Publication date
CN109165509A (zh) 2019-01-08

Similar Documents

Publication Publication Date Title
Manès et al. The art, science, and engineering of fuzzing: A survey
Wu et al. Eliminating timing side-channel leaks using program repair
Sheyner Scenario graphs and attack graphs
EP2092424B1 (en) Locating security vulnerabilities in source code
Xu et al. Probabilistic program modeling for high-precision anomaly classification
Lee et al. Design and implementation of the secure compiler and virtual machine for developing secure IoT services
Xu et al. Remote attestation with domain-based integrity model and policy analysis
Yang et al. Finding consensus bugs in ethereum via multi-transaction differential fuzzing
Bossi et al. A system for profiling and monitoring database access patterns by application programs for anomaly detection
Corin et al. Taint analysis of security code in the KLEE symbolic execution engine
CN109165509B (zh) 软件实时可信度量的方法、设备、系统及存储介质
Li et al. An approach to model network exploitations using exploitation graphs
Baumann et al. On compositional information flow aware refinement
Rocha et al. Towards static flow-based declassification for legacy and untrusted programs
Hamadouche et al. Virus in a smart card: Myth or reality?
Liu et al. A smart contract vulnerability detection mechanism based on deep learning and expert rules
CN113779578A (zh) 移动端应用的智能混淆方法和系统
Kang et al. Iotbox: Sandbox mining to prevent interaction threats in iot systems
Li et al. SmartFast: an accurate and robust formal analysis tool for Ethereum smart contracts
Zhou et al. The final security problem in IOT: Don’t count on the canary!
Cabodi et al. Secure path verification
Ecarot et al. Apparmor for health data access control: Assessing risks and benefits
Liang et al. K-LEAK: Towards Automating the Generation of Multi-Step Infoleak Exploits against the Linux Kernel
Song et al. Finding Tizen security bugs through whole-system static analysis
Xiang et al. Ghost in the binder: Binder transaction redirection attacks in Android system services

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