服务热线:010-65014696

安全研究

椒图关注 FOCUS ON JOWTO

强化应用软件安全性的方法及装置

[2014-11-14]

技术领域

  [0001] 本发明涉及软件安全技术领域,更具体地说,涉及一种强化应用软件安全性的方法及装置。

背景技术

  [0002] 随着商业操作系统厂商对操作系统自身安全性******力度的加大,并将软件安全开发生命周期等提高产品安全性的开发模型引入操作系统的开发过程后,操作系统的安全漏洞数量逐渐减少,漏洞利用难度越来越大,漏洞利用成本逐渐提高,使得黑客及病毒的制造者将视线逐渐转移到安全性相对较差的应用软件上。与操作系统厂商相比,应用软件的开发商普遍存在软件安全意识较差,安全成本******相对较少,针对应用软件的攻击逐年递增,应用软件的安全问题迫切需要解决。

  [0003] 目前,部分操作系统厂商为保护应用软件安全提供了基于虚拟操作系统的技术解决方案,即将自身操作系统划分为多个相互完全独立的虚拟操作系统,并通过将不同应用软件分别安装在各自的虚拟操作系统中,使得不同应用软件之间相互隔离,进而保证了可能存在安全问题的应用软件在遭受攻击后的影响被限制在其所在虚拟操作系统范围内,从而保证了操作系统自身及系统中其它应用软件的安全性。

  [0004] 虚拟机软件厂商也试图利用虚拟机技术解决应用软件的安全问题,通过在本地操作系统或者裸机上创建多个虚拟机,并将应用软件安装在不同的虚拟机中,从而达到隔离应用的目的。

  [0005] 在实现本发明的过程中,发明人发现现有的虚拟机软件厂商的基于虚拟机技术方案至少存在以下缺点:

  [0006] 1.需要重新部署现有应用软件,对现有业务系统影响较大,实施困难,甚至无法实施。

  [0007] 2.随着硬件厂商在计算机CPU、北桥芯片等硬件中增加了虚拟化能力,使得基于硬件虚拟化技术的虚拟机效率明显提升,但由于影子页表与物理页表切换、动态二进制翻译、特权指令陷入及模拟等实现虚拟机所必备技术的限制,其效率仍低于真实物理机。

发明内容

  [0008] 本发明实施例针对现有技术中存在的上述问题,提供一种强化应用软件安全性的方法及装置,在不影响应用软件运行效率且无需重新部署应用软件及其所在的业务系统的基础上,保证应用软件的安全性。

  [0009] 为此,本发明实施例提供如下技术方案:

  [0010] 一种强化应用软件安全性的方法,包括:

  [0011] 为操作系统中每个被保护应用软件创建一个虚拟的安全域;

  [0012] 将所述被保护应用软件的应用进程、所需资源以及安全需求映射为所述应用软件对应的安全域内的主体、客体和域内安全属性,所述域内安全属性包括域内主体安全属性和域内客体安全属性,并将所述操作系统中的其它应用进程及资源映射为域外主体和域外客体;

  [0013] 拦截所述操作系统中应用进程发送的资源请求,所述资源请求中包括资源请求权限及所需资源的信息;

  [0014] 如果所述应用进程映射的主体在安全域内,则根据所述资源请求权限及所述域内安全属性控制所述应用进程映射的主体对所述所需资源映射的客体的访问。

  [0015] 可选地,同一安全域内有一个或多个域内主体、以及一个或多个域内客体。

  [0016] 优选地,所述域内主体安全属性包括逃离门属性,所述逃离门属性表示本安全域内主体访问非本安全域内客体的能力;所述域内客体安全属性包括闯入门属性和域内访问属性,所述闯入门属性表示非本域中主体访问本安全域内客体的能力,所述域内访问属性表示本安全域内客体被本安全域内主体访问的能力;每一个域内访问属性都唯一对应一个域内主体。

  [0017] 优选地,所述根据所述资源请求权限及所述域内安全属性控制所述应用进程映射的安全域内主体对所述所需资源映射的客体的访问包括:

  [0018] 如果所述客体在安全域内,并且与所述主体属于同一安全域,则根据所述资源请求权限及所述客体对应所述主体的域内访问属牲控制所述主体对所述客体的访问;

  [0019] 如果所述客体在安全域内,并且与所述主体属于不同安全域,则根据所述资源请求权限、以及所述主体的逃离门属性和所述客体的闯入门属性控制所述主体对所述客体的访问;

  [0020] 如果所述客体不在安全域内,则根据所述资源请求权限及所述主体的逃离门属性控制所述主体对所述客体的访问。

  [0021] 优选地,所述应用进程映射的安全域内主体同时存在于多个安全域内,和/或所述所需资源映射的客体同时存在于多个安全域内,每个安全域具有一个安全级别;

  [0022] 如果一对所述应用进程映射的安全域内主体和所述所需资源映射的安全域内客体同时存在于多个安全域内,并且这些安全域具有不同的安全级别,则所述客体在不同安全域内针对所述主体的域内访问属性为具有最高安全级别的安全域内针对所述主体的域内访问属性;

  [0023] 如果一对所述应用进程映射的安全域内主体和所述所需资源映射的安全域内客体同时存在于多个安全域内,并且这些安全域具有相同的安全级别,则所述客体在不同安全域内针对所述主体的域内访问属性为这些安全域内针对所述主体的域内访问属性的交集。

  [0024] 优选地,所述方法还包括:

  [0025] 如果所述应用进程映射的主体不在任何安全域内,但所述所需资源映射的客体在安全域内,则根据所述资源请求权限及所述客体的闯入门属性控制所述应用进程对所述客体的访问。

  [0026] 一种强化应用软件安全性的装置,包括:

  [0027] 安全域配置管理模块,用于为操作系统中每个被保护应用软件创建一个虚拟的安全域,并将所述被保护应用软件的应用进程、所需资源以及安全需求映射为所述应用软件对应的安全域内的主体、客体和域内安全属性,所述域内安全属性包括域内主体安全属性和域内客体安全属性,并将所述操作系统中的其它应用进程及资源映射为域外主体和域外客体;

  [0028] 资源请求拦截模块,用于拦截所述操作系统中应用进程发送的资源请求,所述资源请求中包括资源请求权限及所需资源的信息;

  [0029] 安全域访问约束审查模块,用于根据其内部设置的主客体访问约束算法对所述资源请求进行审查,确定所述应用进程映射的主体在安全域内,根据所述资源请求权限及所述域内安全属性控制所述应用进程映射的主体对所述所需资源映射的客体的访问。

  [0030] 优选地,所述域内主体安全属性包括逃离门属性,所述逃离门属性表示本安全域内主体访问非本安全域内客体的能力;所述域内客体安全属性包括闯入门属性和域内访问属性,所述闯入门属性表示非本域中主体访问本安全域内客体的能力,所述域内访问属性表示本安全域内客体被本安全域内主体访问的能力;每一个域内访问属性都唯一对应一个域内主体;

  [0031] 所述安全域访问约束审查模块根据所述资源请求权限及所述域内安全属性控制所述应用进程映射的安全域内主体对所述所需资源映射的客体的访问包括:

  [0032] 如果所述客体在安全域内,并且与所述主体属于同一安全域,则根据所述资源请求权限及所述客体对应所述主体的域内访问属性控制所述主体对所述客体的访问;

  [0033] 如果所述客体在安全域内,并且与所述主体属于不同安全域,则根据所述资源请求权限、以及所述主体的逃离门属性和所述客体的闯入门属性控制所述主体对所述客体的访问;

  [0034] 如果所述客体不在安全域内,则根据所述资源请求权限及所述主体的逃离门属性控制所述主体对所述客体的访问。

  [0035] 优选地,所述应用进程映射的安全域内主体同时存在于多个安全域内,和/或所述所需资源映射的客体同时存在于多个安全域内,每个安全域具有一个安全级别;

  [0036] 如果一对所述应用进程映射的安全域内主体和所述所需资源映射的安全域内客体同时存在于多个安全域内,并且这些安全域具有不同的安全级别,则所述客体在不同安全域内针对所述主体的域内访问属性为具有最高安全级别的安全域内针对所述主体的域内访问属性;

  [0037] 如果一对所述应用进程映射的安全域内主体和所述所需资源映射的安全域内客体同时存在于多个安全域内,并且这些安全域具有相同的安全级别,则所述客体在不同安全域内针对所述主体的域内访问属性为这些安全域内针对所述主体的域内访问属性的交集。

  [0038] 优选地,所述安全域访问约束审查模块,还用于确定所述应用进程映射的主体不在任何安全域内,但所述所需资源映射的客体在安全域内,根据所述资源请求权限及所述客体的闯入门属性控制所述应用进程对所述客体的访问。

  [0039] 优选地,所述装置还包括:

  [0040] 实体资源分配及虚拟化模块,用于根据所述安全域访问约束审查模块的审查结果为所述应用进程分配实体资源或虚拟出实体资源的虚拟化安全副本。

  [0041] 优选地,所述装置还包括:

  [0042] 安全审计模块,用于将所述安全域访问约束审查模块的控制结果存储到日志数据库中,并根据审计策略对所述日志数据库进行审计。

  [0043] 本发明实施例强化应用软件安全性的方法及装置,通过为每个被保护应用软件创建一个虚拟的安全域;将所述应用软件的应用进程、所需资源以及安全需求映射为所述应用软件对应的安全域内的主体、客体和域内安全属性;拦截操作系统中应用进程请求资源的行为,并将其映射为安全域内主体对客体的访问,利用资源请求中的资源请求权限及所述域内安全属性控制主体对客体的访问,从而保证了安全域与外部空间、以及安全域之间的安全隔离,保证了被保护应用软件的安全性。

  附图说明

  [0044] 图l是本发明实施例强化应用软件安全性的方法的流程图;

  [0045] 图2是本发明实施例中安全域的示意图;

  [0046] 图3是本发明实施例中主客体访问约束示意图;

  [0047] 图4是本发明实施例强化应用软件安全性的方法的一种具体应用流程图;

  [0048] 图5是本发明实施例强化应用软件安全性的装置的工作原理图;

  [0049] 图6是本发明实施例强化应用软件安全性的装置的一种结构示意图;

  [0050] 图7是本发明实施例强化应用软件安全性的装置的另一种结构示意图。

具体实施方式

  [0051] 为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。

  [0052] 本发明实施例强化应用软件安全性的方法及装置,在现有操作系统空间中针对不同的被保护应用软件分别创建出多个虚拟空间,每个虚拟空间作为一个安全域,将被保护应用软件的应用进程、所需资源以及安全需求映射进被保护应用软件所对应的安全域中,分别成为该安全域的域内主体、域内客体以及域内安全属性(所谓映射,是指为客观对象及其特性在安全域中建立一个对应的元素,用于在安全域中表示该客观对象),而操作系统空间中的其它进程及资源则分别被映射为域外主体和域外客体。然后,通过拦截操作系统中进程请求资源的行为,将该请求资源的行为映射为主体对客体的访问行为,并通过遵循主客体访问约束保证安全域与外部空间、安全域之间的安全隔离。

  [0053] 如图1所示,是本发明实施例强化应用软件安全性的方法的流程图,包括以下步骤:

  [0054] 步骤101,为操作系统中每个被保护应用软件创建一个虚拟的安全域。

  [0055] 如图2所示,是本发明实施例中的安全域的示意图。

  [0056] 该安全域是在现有操作系统空间中针对被保护应用软件创建的虚拟空间。同一操作泵统空间中可以分离出多个相互独立的安全域。安全域之间通过安全域标识(如安全域ID)进行区分。

  [0057] 步骤102,将所述被保护应用软件的应用进程、所需资源以及安全需求映射为所述应用软件对应的安全域内的主体、客体和域内安全属性,所述域内安全属性包括域内主体安全属性和域内客体安全属性,并将所述操作系统中的其它应用进程及资源映射为域外主体和域外客体。

  [0058] 上述主体表示被映射进安全域中的各种进程,主体间通过主体标识进行区分。为了描述方便,将主体分为域内主体和域外主体,域内主体是指被映射进入某个安全域中的主体,域外主体是指未被映射进任何安全域中的主体。

  [0059] 上述客体表示被映射进安全域中的各种资源,如各种文件、网络端口、系统设备等,客体间通过客体标识进行区分。同样,为了描述方便,也将客体分为域内客体和域外客体,域内客体是指被映射进入某个安全域中的客体,域外客体是指未被映射进任何安全域中的客体。

  [0060] 上述域内安全属性是域内主体安全属性和域内客体安全属性的统称。域内主体安全属性表示该安全域内的主体为完成正常业务功能所必需具备的最严能力需求。

  [0061] 步骤103,拦截所述操作系统中应用进程发送的资源请求,所述资源请求中包括资源请求权限及所需资源的信息。

  [0062] 步骤104,如果所述应用进程映射的主体在安全域内,则根据所述资源请求权限及所述域内安全属性控制所述应用进程映射的主体对所述所需资源映射的客体的访问。

  [0063] 上述域内主体安全属性包括Gout(逃离门)属性和特权属性。Gout属性界定了安全域内主体逃离其所在安全域后所剩余的访问能力即访问非本域中客体的能力(如访问权限等)。每一个域内主体都必须具备一个Gout(逃离门)属性。特权属性限定了域内主体除访问能力外的特殊能力需求,如调试能力、备份能力、加载驱动模块能力等,该属性对于域内主体可选。域内客体安全属性包括域内访问属性和Gin(闯入门)属性。域内访问属性限定了该安全域内的客体为使同一安全域内主体完成正常业务功能所必需提供给主体的访问能力(如访问权限等)。每个域内客体可以具备零到多个域内访问属性,每一个域内访问属性都唯一对应一个域内主体。Gin属性界定了非本域中主体在闯入客体所在安全域后对该客体所剩余的访问能力(如访问权限)。每一个域内客体都必须具备一个Gin属性。

  [0064] 在本发明实施例中,为了保证被保护应用软件的安全性,可以按照以下原则对主体访问客体的行为进行约束,为了描述方便,将其称为主客体访问约束条件,主要包括:

  [0065] (1)当安全域内主体对同一安全域内的域内客体进行访问时,遵循该被访问客体的域内访问属性。当被访问域内客体针对该访问主体的域内访问属性未设置时,该访问仅遵循操作系统的资源请求约束。

  [0066] (2)当安全域内主休跨域访问非同一安全域内的客体时,通过遵循该域内主体的Gout属性和被访问安全域内的域内客体的Gin属性,剥离该主体对客体的访问能力,即当域内主体试图逃离其所在安全域并闯入其它安全域时必须先通过逃离门且通过后剥离其不安全的访问能力,再通过闯入门进入被访问的安全域且进一步剥离其不安全访问能力,从而限制了安全域间的破坏能力,起到安全隔离不同安全域的作用。

  [0067] (3)当安全域内主体试图逃离所在安全域访问域外客体时,通过遵循该域内主体的Gout属性,剥离其对域外客体的访问能力,即当域内主体试图逃离其所在安全域时必须通过逃离门且通过后将剥离其不安全的访问能力,从而限制安全域对域外空间的破坏能力,起到安全隔离的作用。

  [0068] 为此,在上述步骤104中,在应用进程对所需资源进行访问时,根据上述资源请求中的资源请求权限及域内安全属性控制所述应用进程映射的主体对所述所需资源映射的客体的访问,具体可以有以下几种情况:

  [0069] 如果所述客体在安全域内,并且与所述主体属于同一安全域,则根据所述资源请求权限及所述客体对应所述主体的域内访问属性控制所述主体对所述客体的访问;

  [0070] 如果所述客体在安全域内,并且与所述主体属于不同安全域,则根据所述资源请求权限、以及所述主体的逃离门属性和所述客体的闯入门属性控制所述主体对所述客体的访问;

  [0071] 如果所述客体不在安全域内,则根据所述资源请求权限及所述主体的逃离门属性控制所述主体对所述客体的访问。

  [0072] 可见,本发明实施例强化应用软件安全性的方法,通过为每个被保护应用软件创建一个虚拟的安全域;将所述应用软件的应用进程、所需资源以及安全需求映射为所述应用软件对应的安全域内的主体、客体和域内安全属性;拦截操作系统中应用进程请求资源的行为,并将其映射为安全域内主体对客体的访问,利用资源请求中的资源请求权限及所述域内安全属性控制主体对客体的访问,从而保证了安全域与外部空间、以及安全域之间的安全隔离,保证了被保护应用软件的安全性。而且,由于安全域的划分、应用进程、所需资源以及它们的安全需求到域内主、客体及其安全属性的映射,资源请求到安全域内主体对客体访问的映射对于应用软件及应用环境(即操作系统)是透明的,因此无需重新部署应用软件及其所在业务系统。另外,本发明实施例中位于安全域中的应用软件及安全域所在的操作系统运行在真实的物理机上,与现有的虚拟机技术方案相比,提高了应用软件的运行效率。

  [0073] 进一步地,现有的基于虚拟机技术方案对于相互依赖性较大,且相互间需要共享资源的多个应用软件影响较大,需将共享资源在多个虚拟操作系统中都虚拟出一份实例,且这些资源实例之间的同步困难、同步成本高。而本发明实施例的方案通过基于应用软件的客观安全需求映射的主体的Gout属性和客体的Gin属性以及主客体访问约束,在起到安全隔离不同安全域的同时,还可以保证不同应用软件间安全的共享资源。

  [0074] 另外,现有的基于虚拟机技术方案中,应用软件在虚拟操作系统和虚拟机内部的权限仍然未受到限制,一旦应用软件被攻击,其影响虽然可被限制在虚拟操作系统或虚拟机范围内,但却无法控制入侵者对应用软件所在业务系统数据的攻击。而本发明实施例的方案,由于客体的域内访问属性针对同一安全域中的不同主体分别进行了符合其安全需求的设置,进而保证了当安全域申某个应用进程被攻击时,它的破坏能力被限制在最小的范围内。

  [0075] 在本发明实施例中,同一安全域内可以有多个域内主体和多个域内客体。一个域内主体可以同时存在于多个安全域中,同样,一个域内客体也可以同时存在于多个安全域中。因此,上述应用进程可以映射到多个安全域内的主体,同样,上述所需资源也可以映射到多个安全域内的客体。当然上述所需资源也可以是域外资源,下面只针对域内客体的情况,也就是说,上述应用进程和该应用进程请求访问的资源可以映射为多对存在于不同安全域的主客体。

  [0076] 针对这种情况,在本发明实施例中,可以为每一个安全域设置一个安全级别,具体可以通过数值表示,安全域级别的高低通过数值大小比较实现。

  [0077] 当一对主、客体同时存在于多个安全域中时,该主体对客体的访问能力遵循高级别安全域中该客体针对该主体的域内访问属性。也就是说,如果一对所述应用进程映射的安全域内主体和所述所需资源映射的安全域内客体同时存在于多个安全域内,并且这些安全域具有不同的安全级别,则所述客体在不同安全域内针对所述主体的域内访问属性为具有最高安全级别的安全域内针对所述主体的域内访问属性;

  [0078] 当一对主、客体同时存在于多个安全域中且这些安全域具有相同的安全级别时,该主体对客体的访问能力遵循该客体在每个安全域中针对该主体的域内访问属性的交集,域内访问属性的交集通过与运算获得。也就是说,如果一对所述应用进程映射的安全域内主体和所述所需资源映射的安全域内客体同时存在于多个安全域内,并且这些安全域具有相同的安全级别,则所述客体在不同安全域内针对所述主体的域内访问属性为这些安全域内针对所述主体的域内访问属性的交集。

  [0079] 在实际应用环境中,可以根据需要对操作系统中的全部或部分应用软件进行保护。因此,如果只为部分被保护软件创建了虚拟的安全域,则在上述步骤103中拦截应用进程请求资源的行为时,该应用进程还有可能是未被保护应用软件的应用进程,也就是说,该应用进程映射的主体不在任何安全域内,对于这种情况,为了保证被保护应用软件所处应用环境及该应用环境中其他应用软件的安全性,还可以增加以下的主客体访问约束条件:

  [0080] (4)当安全域外主体试图闯入安全域内访问该安全域的域内客体时,通过遵循该域内客体的Gin属性,剥离其对域内客体的访问能力,即当域外主体试图闯入安全域时必须通过闯入门且通过后将剥离其不安全的访问能力,从而限制域外空间对安全域的破坏能力,起到安全隔离的作用。

  [0081] (5)当安全域外主体访问域外客体时,因主、客体均未在任何安全域内,该访问仅遵循应用软件所在操作系统的资源请求约束。

  [0082] 为此,在本发明强化应用软件安全性的方法的另一实施例中,相对于图1所示实施例,还可进一步包括以下步骤:如果上述应用进程映射的主体不在任何安全域内,但上述所需资源映射的客体在安全域内,则根据资源请求中的资源请求权限及所述客体的闯入门属性控制所述应用进程对所述客体的访问。

  [0083] 这样,不仅可以保证被保护应用软件自身的安全性,还可以保证被保护应用软件所处应用环境(即操作环境)及该应用环境中其他应用软件的安全性。

  [0084] 如图3所示,是本发明实施例中主客体访问约束示意图。

  [0085] 其中,Zl与22分别代表两个不同的安全域,他们的属性是域安全级别;图中的A,B,C,D,E五条虚线箭头代表了同一安全域内的主体对客体的访问,其中主体Sl与客体01同时存在于安全域Zl和安全域22中,当客体01在安全域Zl中针对主体Sl的域内访问属性与其在安全域22中针对主体Sl的域内访问属性不同时,需要比较安全域Zl与安全域22的安全级别,有以下三种情况:

  [0086] (1)如果安全域Zl的安全级别>安全域22的安全级别,则主体Sl对客体01的访问遵循客体01在安全域Zl中针对主体Sl的域内访问属性。

  [0087] (2)如果安全域Zl的安全级别<安全域22的安全级别,则主体Sl对客体01的访问遵循客体01在安全域22中针对主体Sl的域内访问属性。

  [0088] (3)如果安全域Zl的安全级别=安全域22的安全级别,则主体Sl对客体01的访问遵循客体01在安全域Zl中针对主体Sl的域内访问属性与客体01在安全域22中针对CN 主体Sl的域内访问属性的交集。

  [0089] 虚线箭头H代表安全域Zl内主体S3跨域访问安全域22内的客体03的情况下,必须同时遵循S3的Gout属性和03的Gin属性,即先通过逃离门,再通过闯入门,进行不安全访问能力的双重剥离,保证了安全域Zl与安全域22间的安全隔离。

  [0090] 虚线箭头G代表安全域22内主体Sl试图逃离22访问域外客体05的情况下,必须遵循Sl的Gout安全属性,通过逃离门,剥离其不安全的访问能力,防止逃离安全域后对域外进行破坏。

  [0091] 虚线箭头F代表域外主体S5试图闯入安全域Zl内访问客体01的情况下,必须遵循01的Gin安全属性,通过闯入门,剥离其不安全的访问能力,防止进入安全域后对该安全域进行破坏。

  [0092] 如图4所示,是本发明实施例强化应用软件安全性的方法的一种具体应用流程图,包括以下步骤:

  [0093] 步骤401,拦截操作系统中应用进程发送的资源请求。

  [0094] 步骤402,判断上述应用进程映射的主体是否在安全域内;如果是,则执行步骤405;否则,执行步骤403;

  [0095] 步骤403,判断被请求资源是否为域内资源;如果是,则执行步骤404;否则,执行步骤414;

  [0096] 步骤404,获得被请求资源映射的客体的Gin属性;然后执行步骤412;

  [0097] 步骤405,判断被请求资源是否为域内资源;如果是,则执行步骤407;否则执行步骤406;

  [0098] 步骤406,获得应用进程映射的主体的Gout属性;然后执行步骤412;

  [0099] 步骤407,判断是否为域内访问;如果是,则执行步骤408;否则,执行步骤409;

  [0100] 步骤408,获得被请求资源映射的客体的域内访问属性;然后执行步骤412;

  [0101] 步骤409,获得应用进程映射的主体的Gout属性;

  [0102] 步骤410,获得被请求资源映射的客体的Gin属性;

  [0103] 步骤411,取Gout属性与Gin属性与运算结果;

  [0104] 步骤412,将资源请求中的资源请求权限与获得的域内安全属性进行与运算;

  [0105] 步骤413,审查运算结果与资源请求权限是否允许访问请求资源;如果是,则执行步骤414;否则,执行步骤415;

  [0106] 步骤414,返回请求的资源;

  [0107] 步骤415,拒绝返回资源。

  [0108] 当然,在上述流程中只描述了应用迸程及请求的资源映射后的主、客体存在于一个安全域的情况,在一对主、客体同时存在于多个安全域中的情况下,还需要考虑每个安全域的安全级别做相应的处理,具体可参照前面的描述。

  [0109] 可见,应用本发明实施例强化应用软件安全性的方法,不仅可以保证被保护应用软件自身的安全性,还可以保证被保护应用软件所处应用环境及该应用环境中其他应用软件的安全性。

  [0110] 为了解决应用软件的实际实现与其客观安全需求不符导致的兼容性问题,在本发明施例中,还可以针对主体和客体分别设置虚拟化标识,虚拟化标识可以分别作为主体的特权属性和客体的域内访问属性的一部分。

  [0111] 相应地,在上述图4所示流程中,在步骤412之前,还可先进行虚拟化检查,即判断针对该资源请求是否需要对被请求资源创建虚拟化安全副本,如果针对被请求资源已设置虚拟化标识,则可以虚拟出相应的实体资源的虚拟化安全副本,以便在应用进程无权访问其所需特定资源时,将该副本分配给发起请求的应用进程。

  [0112] 另外,在本发明实施例中,在步骤412之前,还可进行资源监视检查,即判断该资源请求过程是否需要被记录日志,如果需要记录日志,则设置资源监视器,将该资源请求及对资源请求的审查结果以日志的形式进行记录。

  [0113] 相应地,本发明实施例还提供一种强化应用软件安全性的装置,如图5所示,是该装置的工作原理图。

  [0114] 当应用进程向其所处应用环境请求资源时,本发明实施例的装置500拦截该应用进程的资源请求,根据应用进程及其请求的资源是否被映射进某个安全域内、请求行为是否符合主、客体访问约束来进行实体资源的访问控制。

  [0115] 如图6所示,是本发明实施例强化应用软件安全性的装置的一种结构示意图。

  [0116] 在该实施例中,所述装置包括:

  [0117] 安全域配置管理模块601,用于为操作系统中每个被保护应用软件创建一个虚拟的安全域,并将所述被保护应用软件的应用进程、所需资源以及安全需求映射为所述应用软件对应的安全域内的主体、客体和域内安全属性,所述域内安全属性包括域内主体安全属性和域内客体安全属性,并将所述操作系统中的其它应用进程及资源映射为域外主体和域外客体;

  [0118] 资源请求拦截模块602,用于拦截所述操作系统中应用进程发送的资源请求,所述资源请求中包括资源请求权限及所需资源的信息;

  [0119] 安全域访问约束审查模块603,用于根据其内部设置的主客体访问约束算法对所述资源请求进行审查,确定所述应用进程映射的主体在安全域内,根据所述资源请求权限及所述域内安全属性控制所述应用进程映射的主体对所述所需资源映射的客体的访问。

  [0120] 上述安全域配置管理模块601负责安全域的创建、删除、应用进程到安全域内主体的映射、应用进程所需资源到安全域内客体的映射、应用进程及所需资源的安全需求到主客体域内安全属性的映射以及这些安全域配置信息的存储。

  [0121] 上述应用进程到安全域内主体的映射可以是在安全域内创建一个主体元素,该主体可以用“应用进程全路径召+用户ID”进行标识。

  [0122] 上述应用进程所需资源到安全域内客体的映射可以是在安全域内创建一个客体元素,该客体可以用“资源名称”进行标识。

  [0123] 上述安全需求到主客体域内安全属性的映射可以是将应用进程对域外资源的最严访问权限设置为其对应主体的Gout安全属性,例如将Gout安全属性设置为只读权限表示该应用进程对域外的资源只能进行读取,不能进行改写,防止了其对外部资源环境的破坏;将应用进程的特殊权限需求设置为对应主体的特权属性;将应用进程所需资源对来自域外进程的访问权限的限制设置为其对应客体的Gin安全属性,例如将Gin安全属性设置为只读权限表示非本域内的进程只能对本资源进行读取,不能进行改写,在不破坏本资源的情况下,可以完成域内与域外以及域间的资源共享;若应用进程及资源已被映射进同一安全域内,将资源对来自进程的最严的访问权限的限制设置为本资源对应客体针对进程对应主体的域内访问属性。

  [0124] 需要说明的是,在本发明实施例中,同一安全域内可以有一个或多个域内主体、以及一个或多个域内客体。上述域内主、客体安全属性的详细说明可参照前本发明实施例强化应用软件安全性的方法中的描述,在此不再赘述。

  [0125] 上述资源请求拦截模块602位于整个装置的最前端,通过使用内核拦截技术与操作系统进行无缝连接,针对不同的操作系统的不同资源类型可以使用不同的拦截方式拦截操作系统中与资源访问相关的操作,并将拦截到的资源访问内容封装成数据包的形式,传送至安全域访问约束审查模块603,即完成资源请求到主体对客体访问的映射。

  [0126] 上述数据包的内容可以包含:请求的资源类型(如文件、进程、网络等),请求的资源的具体内容(如文件名、进程ID等),请求权限等。

  [0127] 上述安全域访问约束审查模块603基于安全域配置管理模块601中存储的安全域配置信息,通过其内部设置的主客体访问约束算法对资源请求拦截模块602传入的请求包进行审查,获取应用进程所能使用的资源,并将该资源返回给资源请求拦截模块602,

  [0128] 比如,安全域访问约束审查模块603在确定所述应用进程映射的主体在安全域内后,根据所述资源请求权限及所述域内安全属性控制所述应用进程映射的主体对所述所需资源映射的客体的访问,具体有以下几种情况:

  [0129] 如果所述客体在安全域内,并且与所述主体属于同一安全域,则根据所述资源请求权限及所述客体对应所述主体的域内访问属性控制所述主体对所述客体的访问;

  [0130] 如果所述客体在安全域内,并且与所述主体属于不同安全域,则根据所述资源请求权限、以及所述主体的逃离门属性和所述客体的闯入门属性控制所述主体对所述客体的访问;

  [0131] 如果所述客体不在安全域内,则根据所述资源请求权限及所述主体的逃离门属性控制所述主体对所述客体的访问。

  [0132] 需要说明的是,本发明实施例中,应用进程映射的安全域内主体可以同时存在于多个安全域内,和/或所需资源映射的客体也可以同时存在于多个安全域内,每个安全域具有一个安全级别。在这种情况下,如果一对所述应用进程映射的安全域内主体和所述所需资源映射的安全域内客体同时存在于多个安全域内,并且这些安全域具有不同的安全级别,则所述客体在不同安全域内针对所述主体的域内访问属性为具有最高安全级别的安全域内针对所述主体的域内访问属性;如果一对所述应用进程映射的安全域内主体和所述所需资源映射的安全域内客体同时存在于多个安全域内,并且这些安全域具有相同的安全级别,则所述客体在不同安全域内针对所述主体的域内访问属性为这些安全域内针对所述主体的域内访问属性的交集。

  [0133] 在本发明另一实施例中,所述安全域访问约束审查模块603还用于确定所述应用进程映射的主体不在任何安全域内,但所述所需资源映射的客体在安全域内,根据所述资源请求权限及所述客体的闯入门属性控制所述应用进程对所述客体的访问。

  [0134] 下面结合图6说明本发明实施例强化应用软件安全性的装置的一种具体工作过程。

  [0135] 资源请求拦截模块602将拦截到的资源请求内容封装成数据包的形式传递给安全域访问约束审查模块603,安全域访问约束审查模块603基于安全域配置管理模块601中存储的安全域配置信息接收的资源请求数据包进行审查,并根据审查结果控制资源请求映射后的主体对客体的访问,分为如下四种情况:

  [0136] (1)被请求资源与应用进程属于同一安全域的请求:当该资源对应客体针对该应用进程对应主体设置了域内访问属性(即访问权限)时,将资源请求中的资源请求权限与域内访问属性进行与运算(相当于求交集),并通过判断与运算后剩余的权限与资源请求中的资源请求权限是否相同产生审查结果,如果相同则允许访问资源,如果不同则拒绝访问资源。当该资源对应客体针对该应用进程对应主体未设置域内访问属性(即访问权限)时,审查结果为允许访问资源。

  [0137] (2)被请求资源与应用进程属于不同安全域的请求:该请求属于跨域请求。首先获取该应用进程对应主体的Gout属性(即访问权限),其次获取被请求资源对应客体的Gin属性(即访问权限),将Gout属性与Gin属性进行与运算(相当于求交集),并将运算后的结果再与资源请求中的资源请求权限进行与运算,并通过判断与运算后剩余的权限与资源请求中的资源请求权限是否相同严生审查结果,如果相同则允许访问资源,如果不同则拒绝访问资源。

  [0138] (3)域外应用进程请求域内资源:此时,应用进程映射的主体并未在任何安全域内,而其请求的资源映射的客体却在某个安全域内。将资源请求中的资源请求权限与被请求资源对应客体的Gin属性(即访问权限)进行与运算(相当于求交集),并通过判断与运算后剩余的权限与资源请求中的资源请求权限是否相同产生审查结果,如果相同则允许访问资源,如果不同则拒绝访问资源。

  [0139] (4)域内应用进程请求域外资源:此时,应用进程映射的主体在某个安全域内,而其请求的资源映射的客体却不在任何安全域内。将资源请求中的资源请求权限与该应用进程对应主体的Gout属性(即访问权限)进行与运算(相当于求交集),并通过判断与运算后剩余的权限与资源请求中的资源请求权限是否相同产生审查结果,如果相同则允许访问资源,如果不同则拒绝访问资源。

  [0140] 安全域访问约束审查模块603将允许访问的资源返回给资源请求拦截模块602,资源请求拦截模块602再将该资源返回给相应的应用进程。

  [0141] 可见,本发明实施例强化应用软件安全性的装置,通过为每个被保护应用软件创建一个虚揪的安全域;将所述应用软件的应用进程、所需资源以及安全需求映射为所述应用软件对应的安全域内的主体、客体和域内安全属性;拦截操作系统中应用进程请求资源的行为,并将其映射为主体对客体的访问,利用资源请求中的资源请求权限及所述域内安全属性控制主体对客体的访问,从而保证了安全域与外部空间、以及安全域之间的安全隔离,保证了被保护应用软件的安全性。而且,由于安全域的划分、应用进程、所需资源以及它们的安全需求到域内主、客体及其安全属性的映射,资源请求到安全域内主体对客体访问的映射对于应用软件及应用环境是透明度的,因此无需重新部署应用软件及其所在业务系统。另外,本发明实施例中位于安全域中的应用软件及安全域所在的操作系统运行在真实的物理机上,与现有的虚拟机技术方案相比,提高了应用软件的运行效率。

  [0142] 进一步地,现有的基于虚拟机技术方案对于相互依赖性较大,且相互间需要共享资源的多个应用软件影响较大,需将共享资源在多个虚拟操作系统中都虚拟出一份实例,且这些资源实例之间的同步困难、同步成本高。而本发明实施例的方案通过基于应用软件的客观安全需求映射的主体的Gout属性和客体的Gin属性以及主客体访问约束,在起到安全隔离不同安全域的同时,还可以保证不同应用软件间安全的共享资源。

  [0143] 另外,现有的基于虚拟机技术方案中,应用软件在虚拟操作系统和虚拟机内部的权限仍然未受到限制,一旦应用软件被攻击,其影响虽然可被限制在虚拟操作系统或虚拟机范围内,但却无法控制入侵者对应用软件所在业务系统数据的攻击。而本发明实施例的方案,由于客体的域内访问属性针对同一安全域中的不同主体分别进行了符合其安全需求的设置,进而保证了当安全域中某个应用进程被攻击时,它的破坏能力被限制在最小的范围内。

  [0144] 如图7所示,是本发明实施例强化应用软件安全性的装置的另一种结构示意图。

  [0145] 与图6所示实施例不同的是,在该实施例中,所述装置还包括:实体资源分配及虚拟化模块701和安全审计模块702。其中:

  [0146] 实体资源分配及虚拟化模块701负责根据安全域访问约束审查模块603的审查结果分配实体资源或虚拟出实体资源的虚拟化安全副本。当审查结果是允许应用进程访问其所需特定资源时,实体资源分配及虚拟化模块701为其分配该资源的实体。当审查结果是拒绝应用进程访问其所需特定资源时,并且针对该资源未设置虚拟化标识时,实体资源分配及虚拟化模块701拒绝为其分配实体资源,应用进程对该资源的请求会失败。当审查结果是拒绝应用进程访问其所需特定资源,但针对该资源已设置虚拟化标识时,实体资源分配及虚拟化模块701首先虚拟出该实体资源的虚拟化安全副本,并将该副本分配给发起请求的应用进程。

  [0147] 所谓虚拟化安全副本是指根据安全域访问约束审查模块603的审查结果(即授予该访问动作的权限)对动态生成的原始实体资源的复制品进行处理后的产物,例如:对于需要只读权限的文件在创建其副本时可以直接复制该文件,对于需要禁止读的文件在创建其副本时可以创建一个相同大小的空文件。它使得应用进程在使用该安全副本期间既遵守安全域访问约束条件保证原始实体资源的安全性,又能保证应用软件的正常运行。

  [0148] 上述虚拟化标识的设置是为了解决应用软件的实际实现与其客观安全需求不符导致的兼容性问题,在本发明施例中,还可以针对主体和客体分别设置虚拟化标识,虚拟化标识可以分别作为主体的特权属性和客休的域内访问属性的一部分。例如,Web服务器进程只需要对服务器配置文件进行读取操作就可以完成正常功能,则该配置文件最严客观安全需求为只读权限,当Web服务器进程对该配置文件请求读写访问时,存在两种可能:一种是该Web服务器进程被攻击且攻击者获得了进程的控制权试图修改配置文件完成对Web服务器的进一步控制;另一种是Web服务器开发人员编写程序不规范,对安全需求的认识有偏差或完全没有安全意识,在请求该文件资源时超出其客观安全需求,这两种情况下安全域访问约束审查模块603都会将该请求视为违背访问约束,如果该配置文件未设置虚拟化标识,则实体资源分配及虚拟化模块701会拒绝为应用进程分配该配置文件资源,针对第一种可能会导致进一步攻击失败,而针对第二种可能则会导致Web服务器运行出现兼容性问题。然而,如果对该配置文件设置了虚拟化标识,则实体资源分配及虚拟化模块701会动态创建该配置文件的虚拟化安全副本,并将该副本分配给Web服务器进程,由于Web服务器进程请求到了其想要的资源,所以可以继续正常运行,兼容性问题得到了解决。同时,对于第一种可能中的攻击者来说虽然其获得了资源,但其获得的是一个原始配置文件的虚拟化安全副本,对该副本的任何修改都不会对Web服务器起到作用,同样迫使了进一步攻击的失败。

  [0149] 安全审计模块702负责将安全域访问约束审查模块603所产生的约束结果存储到日志数据库中,并根据审计策略对该日志数据库进行审计。

  [0150] 由上述描述可见,本发明实施例强化应用软件安全性的方法及装置,将被保护应用软件的应用进程、所需资源以及安全需求映射到被保护应用软件所对应的安全域中,分别成为该安全域的域内主体、域内客体以及域内安全属性,通过拦截操作系统中进程请求资源的行为,并将该请求资源的行为映射为主体对客体的访问行为,通过遵循主客体访问约束保证安全域与外部空间、安全域之间的安全隔离。一方面,由于各安全域之间、安全域与外部操作系统空间之间相互隔离,即来自外部空间(包括外部操作系统空间和其它安全域)的威胁无法破坏处于该安全域中的应用进程及资源,而该安全域内的应用进程在遭受到攻击后也无法脱离该安全域对外部空间进行破坏;另一方面,处于安全域内的应用进程在请求同一空间中的资源时遵循安全需求(即客体的域内访问属性).即使在应用进程存在安全问题并且遭受到攻击的情况下,仍能保证其对自身所在安全域中资源的破坏达到最小化。

  [0151] 由于应用进程所需资源以及它的客观安全需求是以映射的方式加入到安全域内,安全域中仅包括它的标识和安全属性,并非资源实体,所以可以通过将同一资源实体映射为多个安全域的域内客体的方式保证处于不同安全域中且存在相互依赖的应用软件能共享该资源实体。另外,可以根据该实体资源在不同安全域内安全需求的不同,分别将这些安全需求映射为相应安全域内的域内访问属性,进而保证不同应用软件在共享资源时的安全性。无论是安全域的划分、域内主客体及其安全属性的映射,还是对应用进程资源请求行为的拦截,这些对于应用软件来说都是透明完成的,从而在无需重新部署应用软件及其所在业务系统的前提下以安全域的形式为应用软件提供了一个安全的运行环境,即ASVE (Application Security VirtualizationEnvironment,应用安全虚拟化环境)。

  [0152] 另外,无论是现有的虚拟操作还是虚拟机,它们的外部都存在一个母操作系统,母操作系统虽位于它们的外部,但对它们中的资源是可见且可以完全控制的。一旦母操作系统被攻破,由于缺少必要的安全控制,位于它们内部的应用软件的安全性也会岌岌可危,将完全暴露在攻击者的眼前。而本明实施例的方法及装置中,安全域内客体的Gin属性及主客体访问约束保证了即使域外系统被攻破,仍然无法破坏到安全域内的资源。

  [0153] 另外,本明实施例的方法及装置仅对符合应用软件安全需求的资源请求予以放行,对于不符合安全需求的资源请求一律拒绝,属于白名单机制,保护效果要好于使用黑名单机制的安全防护软件。

  [0154] 进一步地,本明实施例的方法及装置中,为解决应用软件的实际实现与其客观安全需求不符导致的兼容性问题所采用的虚拟出该实体资源的虚拟化安全副本的方法,既保证了应用软件的安全性,又提高了本发明方案与应用软件的兼容性。

  [0155] 本说明书中的各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

  [0156] 以上公开的仅为本发明的优选实施方式,但本发明并非局限于此,任何本领域的技术人员能思之的没有创造性的变化,以及在不脱离本发明原理前提下所作的若干改进和润饰,都应落在本发明的保护范围内。

说明书附图

\

图1

\

图2

\

图3

\

图4

\

图5

\

图6

\

图7