CN108491249B - 一种基于模块权能的内核模块隔离方法及*** - Google Patents
一种基于模块权能的内核模块隔离方法及*** Download PDFInfo
- Publication number
- CN108491249B CN108491249B CN201810218944.4A CN201810218944A CN108491249B CN 108491249 B CN108491249 B CN 108491249B CN 201810218944 A CN201810218944 A CN 201810218944A CN 108491249 B CN108491249 B CN 108491249B
- Authority
- CN
- China
- Prior art keywords
- module
- kernel
- isolated
- capability
- isolation
- 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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供一种基于模块权能的内核模块隔离方法及***。该方法包括:获取待隔离内核模块的模块权能文件,所述模块权能文件用于存储所述待隔离内核模块的模块权能;根据所述待隔离内核模块的模块权能,确定所述待隔离内核模块的模块页表和slab标记;根据所述待隔离内核模块的模块页表和slab标记,对所述待隔离内核模块进行隔离。相应地,该***包括:模块分析单元、模块装入单元和模块隔离单元。本发明在不引入虚拟机监控器的前提下,通过为待隔离内核模块标记不同模块权能,在保证基本内核和内核模块必要交互的基础上,实现两者的隔离,以避免攻击者通过内核模块,对基本内核实施攻击,避免了过多的***开销。
Description
技术领域
本发明涉及计算机操作***技术领域,尤其涉及一种基于模块权能的内核模块隔离方法及***。
背景技术
Linux***采用了单内核的内核模型,这给攻击者提供了便利。单内核的设计目标是保证***性能,内核内部实体相互调用效率很高。然而,由于内核所有指令和数据均位于同一地址空间内部,内核内各个内部实体之间的界限并不特别清晰。而目前的大多数操作***也都只是提供进程级别的隔离和保护,并不能对操作***内核成分实施隔离和保护,这使得攻击者一旦进入内核就可以访问操作***的大部分数据和代码。相对于基本内核而言,可装载内核模块更具有威胁。这是因为Linux操作***允许加载模块至内核,使模块具有内核权限运行。但是,可装载内核模块可能由不同公司或个人开发,其安全性难以得到保证。为了保证Linux操作***内核安全,需要对装载入内核的可装载内核模块实施必要的隔离,以避免引入不可控的风险。
为了防止不可信的可装载模块对内核完整性造成破坏,目前有人提出了一种内核完整性保护模型─MOKIP,并部分构建了原型***。他们将操作***内核、可信的可装载内核模块和非可信的可装载内核模块设定为主体,将内核代码、内核数据等设定为客体,并参考Clark-Wilson-Lite等模型提出访问规则和转换规则。MOKIP原型***的***架构如图10所示。访问控制模块和实体标记模块在在虚拟机监控器层面构建,负责为内核代码、内核数据以及可装载内核模块进行标记和访问判定。MOKIP原型***利用Intel 扩展页表(EPT,extended page tables)技术来标识主客体的完整性,利用EPT页表权限来实现访问控制约束,并在开源的XEN平台上基本实现了MOKIP模型。
操作***大多为用户进程提供保护和隔离,但是对安全性能比较敏感的内核成分而言,操作***并不提供类似服务。为此,现有VirtuOS方案将操作***垂直分成若干服务域,每个服务域提供特定的服务,其***架构如图11所示。每个服务域位于不同的虚拟机客户机中,代表了操作***的一个用于特定功能的内核子集,例如进程管理与调度、用户内存管理等。每一个单独的服务域不会运行或干涉其他服务域提供的相关管理任务或用户进程,而一个进程的运行可能需要多个服务域的协作。为此,VirtuOS还设计了***调用分派模型,将一个进程需要调用的***调用,分派到不同服务域来完成,并将结果返回。为此,VirtuOS重写了libc库,以完成***调用分派和结果回收。
虚拟化技术具有良好的隔离特性,所以现有技术大都利用虚拟化技术来实现对操作***内核成分的隔离,但是这引入了极大的***性能开销。如图12所示,MOKIP原型***和VirtuOS***都依托虚拟机监控器,在虚拟机监控器层面来实现可装载内核模块与基本内核的隔离。由于在内核空间和硬件层多了一层虚拟机监控器,导致用户在访问任何硬件之前都必须要经过虚拟机监控器中转,也就是说,用户每次访问硬件都需依赖虚拟机监控器,这样就相当于引入了***执行环境的切换,从而导致***性能成倍下降。
发明内容
为解决现有技术中由于采用虚拟化技术对操作***内核成分进行隔离而导致***性能下降的问题,本发明提供一种基于模块权能的内核模块隔离方法及***。
一方面,本发明提供一种基于模块权能的内核模块隔离方法,该方法包括:
步骤1、对待隔离内核模块进行模块训练,确定所述待隔离内核模块的模块权能文件;当所述待隔离内核模块需要装入内核操作***中时,获取所述待隔离内核模块的模块权能文件,所述模块权能文件用于存储所述待隔离内核模块的模块权能;所述模块权能指所述待隔离内核模块对内核其它成分的读、写或执行权限的集合;
步骤2、根据所述待隔离内核模块的模块权能,确定所述待隔离内核模块的模块页表和slab标记;所述模块页表用于记录待隔离模块对内核资源的访问权限;所述slab标记指基于slab标注的待隔离模块能够访问的内核数据类型;
步骤3、根据所述待隔离内核模块的模块页表和slab标记为所述待隔离内核模块构建隔离环境,对所述待隔离内核模块进行隔离。
另一方面,本发明提供一种基于模块权能的内核模块隔离***,该***包括:
模块训练单元,用于对待隔离内核模块进行模块训练,确定所述待隔离内核模块的模块权能文件;所述模块权能指所述待隔离内核模块对内核其它成分的读、写或执行权限的集合;
模块分析单元,用于当所述待隔离内核模块需要装入内核操作***中时,获取所述待隔离内核模块的模块权能文件,所述模块权能文件用于存储所述待隔离内核模块的模块权能;
模块装入单元,用于根据所述待隔离内核模块的模块权能,确定所述待隔离内核模块的模块页表和slab标记;所述模块页表用于记录待隔离模块对内核资源的访问权限;所述slab标记指基于slab标注的待隔离模块能够访问的内核数据类型;
模块隔离单元,用于根据所述待隔离内核模块的模块页表和slab标记为所述待隔离内核模块构建隔离环境,对所述待隔离内核模块进行隔离。
本发明提供的基于模块权能的内核模块隔离方法及***,通过获取内核模块附带的模块权能,根据所述模块权能生成对应的模块页表和slab标记,从而根据所述模块页表和slab标记,实现内核模块与内核的隔离。即本发明通过对内核模块标记不同权能,在保证基本内核和内核模块必要交互的基础上,实现两者的隔离,以避免攻击者通过内核模块,对基本内核实施攻击。由于本发明仅在内核空间内,通过为内核模块标记不同权能,在不牺牲***性能的前提下,限制内核模块的权限来实现内核模块隔离,并不涉及内核空间与虚拟机监控器之间的执行环境切换,从而避免引入过多的***性能开销。
附图说明
图1为本发明实施例提供的基于模块权能的内核模块隔离方法的流程示意图;
图2为本发明实施例提供的内核数据对象的标记示意图;
图3为本发明实施例提供的生成模块权能的流程示意图;
图4为本发明实施例提供的权能膨胀方法的流程示意图;
图5为本发明实施例提供的待隔离内核模块装入内存的流程示意图;
图6为本发明实施例提供的隔离域示意图;
图7为本发明实施例提供的待隔离内核模块在隔离模式/正常模式下访问内核的权限示意图;
图8为本发明实施例提供的基于模块权能的内核模块隔离***的结构示意图;
图9为本发明实施例提供的内核模块隔离***的***架构示意图;
图10为现有技术中MOKIP原型的***架构示意图;
图11为现有技术中VirtuOS***的***架构示意图;
图12为现有技术的隔离方法的***架构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的基于模块权能的内核模块隔离方法的流程示意图。如图1所示,该方法包括以下步骤:
S101、获取待隔离内核模块的模块权能文件,所述模块权能文件用于存储所述待隔离内核模块的模块权能;
具体地,当待隔离内核模块需要装入内核操作***中时,内核模块隔离***会获取待隔离内核模块的模块权能文件。所谓模块权能指待隔离内核模块对内核其它成分的读、写或执行权限的集合。一般情况下,模块权能以文件的形式存在,即模块权能文件用于存储该待隔离内核模块的模块权能的相关信息。内核模块的正常工作一般并不需要访问所有内核代码和数据,只需要访问完成任务必需的资源,这些资源的读、写或执行权限反映了该模块的模块权能。为了保证模块的正常工作,***必须支持模块权能的要求。为了隔离模块,保护内核其它成分不被模块滥用,又必须限制模块权能,确保模块权能最小化。在本发明实施例中,所有待隔离的内核模块均附有模块权能文件,用于标明被隔离模块所依赖的内核成分。
S102、根据所述待隔离内核模块的模块权能,确定所述待隔离内核模块的模块页表和slab标记;
具体地,所述待隔离模块的装入过程,内核模块隔离***需要对该待隔离内核模块附属的模块权能文件进行解析,了解所述待隔离内核模块需要访问的***资源,从而确定其模块页表和slab标记。
所谓模块页表是指支持模块运行的页表,在该页表中,模块在其所占地址空间内具有执行权限。模块页表记录了待隔离模块对内核资源的访问权限。当待隔离内核模块被载入内存后,操作***内核会更新页表。首先,待隔离内核模块刚载入内存时,内核模块隔离***会为该待隔离内核模块分配一个初始化页表,例如用页表T表示。在页表T中,待隔离模块在内核地址空间无执行权限。内核模块隔离***复制页表T生成新的页表P,并根据所解析的模块权能,修改页表P的内容。在页表P中,待隔离模块在其所在内核地址空间内具有执行权限。页表P反映了待隔离模块访问内核资源的范围,所述页表P即模块页表。
所谓slab标记是指基于slab标注的待隔离模块能够访问的内核数据类型。一般情况下,大多数内核数据类型都采用slab来分配和回收。待隔离模块需要访问的内核数据对象也将由slab来分配和回收。slab标记的作用就是当slab在分配内核数据对象时,提示***当前内核数据对象属于待隔离模块能够访问的。本发明实施例中,为了方便内核数据对象的识别,可在该内核数据对象所在页面增加页面标识。每个页面所对应的页表项存在3个bit待用,可以用其中的第10bit表示当前页面包含允许待隔离内核模块所访问的数据对象。图2为本发明实施例提供的内核数据对象的标记示意图。当内核模块隔离***第一次请求slab标记时,slab还需要对当前内核的其它数据类型进行扫描,对已经分配且尚未标记的待隔离内核模块进行标记。所谓slab是Linux操作***的内存管理者之一,负责为新的***对象分配并释放内存的缓存。
S103、根据所述待隔离内核模块的模块页表和slab标记,对所述待隔离内核模块进行隔离;
具体地,待隔离内核模块运行时,由于该待隔离内核模块在内核地址空间不具备执行权限,会由于页面异常陷入中断异常。内核模块隔离***将根据模块页表和slab标记为待隔离内核模块构建隔离环境。当待隔离内核模块停止运行后,内核模块隔离***将撤销隔离环境。
若待隔离内核模块在运行过程中提出新的权能要求时,内核模块隔离***将权能要求提交给支撑接口,并进一步向上提交给用户接口,由用户接口决定是否同意该待隔离内核模块的权能要求。用户接口则通过支撑接口将结果返回至内核模块隔离***,以便内核模块隔离***将被用户接口允许的权能要求与该待隔离内核模块附属的模块权能进行合并,从而形成该模块新的模块权能。
本发明实施例提供的基于模块权能的内核模块隔离方法,通过获取内核模块附带的模块权能,根据所述模块权能生成对应的模块页表和slab标记,从而根据所述模块页表和slab标记,实现内核模块与内核的隔离。即本发明通过对内核模块标记不同权能,在保证基本内核和内核模块必要交互的基础上,实现两者的隔离,以避免攻击者通过内核模块,对基本内核实施攻击。由于本发明仅在内核空间内,通过为内核模块标记不同权能,在不牺牲***性能的前提下,限制内核模块的权限来实现内核模块隔离,并不涉及内核空间与虚拟机监控器之间的执行环境切换,从而避免引入过多的***性能开销。
在上述实施例的基础上,该方法还包括:对所述待隔离内核模块进行模块训练,确定所述待隔离内核模块的模块权能文件。
具体地,模块训练是为了获得模块正常运行所需要的权能。本发明实施例中,模块训练采用静态分析和动态训练相结合的方法。静态分析是指内核模块隔离***对待隔离内核模块的源码实施分析,记录待隔离内核模块所调用的内核函数以及读写的数据范围,生成访问记录集,并根据该访问记录集标识待隔离内核模块正常工作所需要的资源。动态训练是指采用模拟执行的方法,内核模块隔离***通过监控待隔离内核模块运行时所执行的内核代码以及读写的数据对象,标识待隔离内核模块正常工作所需要的资源。待隔离内核模块需要访问的上述资源将是生成模块权能的数据基础。
图3为本发明实施例提供的生成模块权能的流程示意图。如图3所示,本发明实施例采用基于虚拟机监控器的动态训练方法。动态训练的必要条件之一是,待隔离内核模块不能知道自己正在被监控,否则待隔离内核模块可能会隐藏某些恶意行为,从而逃避监控。虚拟化技术可以提供良好的隔离支持,并且运行在虚拟机客户机中的待隔离内核模块无法感知自己是否处于被监控状态。由于任何硬件访问都将经过虚拟机监控器,所以在虚拟机监控器层面可以有效监控待隔离内核模块的内存访问行为。
本发明实施例采用“权能膨胀”的方法来实施动态监控。图4为本发明实施例提供的权能膨胀方法的流程示意图。如图4所示,在初始状态下,待隔离内核模块只允许访问自己所属的地址空间。一般情况下,该地址空间并不能满足待隔离内核模块的运行要求,会访问内核其它地址空间。但是待隔离内核模块并不具备访问其它地址空间的权限,因此页面会产生异常,该待隔离内核模块则会陷入虚拟机监控器。此时,位于虚拟机监控器的监控器将被唤醒,修改虚拟机监控器页表,将相应页面授权给待隔离内核模块,并记录该待隔离内核模块的访问信息。需要注意的是,监控器修改的是虚拟机监控器层面的页表,而非虚拟机客户机内操作***的页表,如此才能保证待隔离内核模块无法得知自己是否处于被监控状态。通过逐步扩大待隔离内核模块的权能,使得待隔离内核模块不再由于内存访问陷入异常为止,例如在实际操作中可以设置时间阀值,在所述时间阈值内若待隔离内核模块没有陷入异常,则认为待隔离内核模块的模块权能已经收敛。
在实际操作中,内核模块隔离***根据访问记录集生成模块权能时需要区分待隔离内核模块访问内存时的对象。对于内核代码而言,由于其是静止的,监控器只需要记录访问的系列函数信息即可。对于内核数据而言,监控器需要记录访问的数据对象类型。对于内核栈等始终处于动态变化的内核数据区域而言,我们暂时并不记录,而是直接授权给内核模块。虽然不对内核栈作隔离保护,会降低隔离的强度,但是鉴于内核栈的频繁使用,对其所属页面反复设置权限,会影响***整体性能,故本发明实施例对此不作考虑。
本发明实施例可采用传统的静态分析方法来分析待隔离内核模块所访问的***资源。例如,内核模块隔离***以待隔离内核模块的源码为输入,通过分析源码中的访问行为,总结待隔离内核模块需要访问的内核函数列表以及内核数据对象。例如,内核模块隔离***也可采用反编译技术获得程序汇编指令集,依托程序汇编指令分析待隔离内核模块的访问行为,该方法可以作为在无法得到被隔离模块源码的情况下的补充。
本发明实施例提供的基于模块权能的内核模块隔离方法,通过对待隔离内核模块进行模块训练,可以准确地确定待隔离内核模块的模块权能,从而在后续过程中可以在保证其正常工作的前提下,又保证了内核的安全,并且避免了过多的***开销。
在上述各实施例的基础上,该方法中的模块权能文件具体包括:模块完整性指纹、访问的内核函数列表和访问的内核数据对象及类型列表。
具体地,模块权能以文件形式存在,记录模块运行所需要的内核资源以及模块的完整性指纹。本发明实施例中,模块权能在文件中存储的信息包括:模块完整性指纹、访问的内核函数列表和访问的内核数据对象及类型列表。
所谓模块完整性指纹是指模块权能所对应的模块的Hash值,其目的是为了建立模块权能与目标模块的对应关系,避免误用。所谓访问的内核函数列表是指目标模块正常工作所需要访问的内核函数集合。所谓访问的内核数据对象及访问类型列表是指目标模块正常工作所需要访问的内核数据对象集合以及操作类型。
在上述实施例的基础上,该方法中的所述根据所述待隔离内核模块的模块权能,确定所述待隔离内核模块的模块页表和slab标记,具体为:
根据模块完整性指纹,将所述模块权能与所述待隔离内核模块进行匹配验证;
若所述模块权能与所述待隔离内核模块完成匹配验证,则根据所述访问的内核数据对象及类型列表确定所述待隔离内核模块的slab标记;并根据所述访问的内核函数列表,确定所述待隔离内核模块的模块页表。
具体地,图5为本发明实施例提供的待隔离内核模块装入内存的流程示意图。如图5所示,待隔离内核模块装入内存的流程包括以下步骤:首先,待隔离内核模块被装入内存,内核模块隔离***计算模块的完整性指纹;然后,内核模块隔离***读取模块权能文件,根据模块权能所记录的模块完整性指纹完成与待隔离内核模块的匹配验证,在完成验证的基础上获取模块权能内的两个列表;其次,内核模块隔离***根据模块权能所记录的访问的内核数据对象及访问类型列表,与slab交互,完成slab标记,以保证所有新生成数据对象均被标记,并更新页面读/写权限;最后,内核模块隔离***再次与slab交互,对当前内核数据对象进行标记,并根据模块权能所记录的访问内核函数列表,生成该待隔离内核模块的模块页表待用。
在上述各实施例的基础上,该方法中的所述根据所述待隔离内核模块的模块页表和slab标记,对所述待隔离内核模块进行隔离,具体包括:
根据所述待隔离内核模块的模块页表和slab标记,确定待隔离内核模块的隔离域;
根据所述待隔离内核模块的隔离域和内核的执行模式,对所述待隔离内核模块与所述内核进行隔离。
具体地,本发明实施例中,内核模块隔离***并非只是将内核外部扩展的内核模块隔离,为了保证待隔离内核模块的正常工作,保证它与其它内核成分的交互,内核模块隔离***也需将其所依赖的内核成分进行隔离。图6为本发明实施例提供的隔离域示意图。如图6所示的待隔离成分,不仅包括待隔离内核模块,也包括基本内核的一部分,还包括其它模块的一部分。本发明实施例将被隔离的范围称为隔离域,即隔离域是指待隔离内核模块的隔离范围,通常包括待隔离内核模块自身以及其运行所必依赖的其它内核成分。
在实际操作中,内核模块隔离***可以将内核地址空间划分为三部分:待隔离内核模块所占地址空间、支撑模块运行的内核成分所占地址空间以及其它内核成分所占地址空间。支撑模块运行的内核成分是指待隔离内核模块正常工作所需要访问的内核函数、内核数据对象等内核资源。内核模块隔离***通过变换上述三部分地址空间的访问权限来限制待隔离内核模块对内核空间其它成分的访问。
图7为本发明实施例提供的待隔离内核模块在隔离模式/正常模式下访问内核的权限示意图。如图7所示,操作***内核具备两种工作模式:隔离模式和正常模式。内核模块隔离***划分这两种工作模式的关键是待隔离内核模块是否具有执行权限。在隔离模式下,待隔离内核模块具有执行权限,同时根据模块权能文件,与该待隔离内核模块有交互的相关内核成分也有相应的执行权限。相对应的,在正常模式下,待隔离内核模块不具有执行权限。在隔离模式下,支撑成分可能具有执行权限。例如,当待隔离内核模块正常访问部分内核函数,那么这些内核函数所在页面也具有执行权限,避免它干扰内核其它成分正常工作。当然,支撑成分所占页面也可能具有读、写或执行权限。
当待隔离内核模块被初次装入内存,操作***内核处于正常模式,待隔离内核模块并不具备执行权限。当待隔离内核模块要求执行时,会产生页面异常,内核模块隔离***装入模块页表,替换常规页表。所谓常规页表指传统操作***的页表,是与模块页表相对的概念。在该页表中,待隔离内核模块所占地址空间不具有执行权限。内核模块隔离***完成页表切换后,操作***内核从正常模式转换为隔离模式,此时待隔离内核模块具有执行权限,开始正常工作。当待隔离内核模块完成工作后,退出执行后,操作***内核会继续执行,直到存在其它成分的执行请求后,内核模块隔离***会再次完成页表切换。
在实际操作中,由于内核页表始终处于动态变化的过程,模块页表和常规页表存在同步问题。为了解决该问题,本发明实施例采用模块页表和常规页表共享一个实体页表,构建模块页表变化日志,通过即用即更新的方式,以实体页表为主构建模块页表和常规页表。简单的来说,当操作***内核切换到隔离模式时,操作***内核以常规页表为基准,根据模块页表变化日志,将模块权能信息更新到常规页表中,得到模块页表;当操作***内核切换到常规模式时,操作***内核以模块页表为基准,根据模块页表变化日志,将模块权能信息从页表中撤消,从而还原常规页表。
需要注意的是,内核模块隔离***必须实时维护支撑成分。支撑成分变化的第一种情况是slab分配了新的数据对象,而该数据对象是待隔离内核模块需要访问的,此时内核模块隔离***根据slab标记,将数据对象所在页面按要求设置权限。支撑成分变化的第二种情况是由于前期模块权能不完备造成的,待隔离内核模块提出新的资源访问请求。在这种情况下,内核模块隔离***通过内核的支撑接口,向用户接口提交待隔离内核模块扩展权能的请求和相关细节,由用户决定是否扩展权能。无论哪种情况,内核模块隔离***必须实时维护支撑成分,以保障待隔离内核模块的正常运行。
可选地,当操作***内核接收到诸如rmmod(即移除指定模块)指令,要求撤出待隔离内核模块时,内核模块隔离***需完成以下工作:首先,判断当前是否处于隔离模式,如果是则切换至常规模式。然后,停止slab标注,不再对新生成内核数据对象进行标注,但已经标注的内核对象不再取消标注。接下来,按照传统的方法将被隔离模块移出内存。最后,判定模块权能是否在模块执行过程中被用户所更新,如果是则更新模块权能文件,否则结束模块卸载流程。
本发明实施例提供的基于模块权能的内核模块隔离方法,通过获取内核模块附带的模块权能,根据所述模块权能生成对应的模块页表和slab标记,从而根据所述模块页表和slab标记,实现内核模块与内核的隔离。即本发明通过对内核模块标记不同权能,在保证基本内核和内核模块必要交互的基础上,实现两者的隔离,以避免攻击者通过内核模块,对基本内核实施攻击。由于本发明仅在内核空间内,通过为内核模块标记不同权能,在不牺牲***性能的前提下,限制内核模块的权限来实现内核模块隔离,并不涉及内核空间与虚拟机监控器之间的执行环境切换,从而避免引入过多的***性能开销。
图8为本发明实施例提供的基于模块权能的内核模块隔离***的结构示意图。如图8所示,该内核模块隔离***包括:模块分析单元801、模块装入单元802和模块隔离单元803;其中,所述模块分析单元801用于获取待隔离内核模块的模块权能文件,所述模块权能文件用于存储所述待隔离内核模块的模块权能;所述模块装入单元802用于根据所述待隔离内核模块的模块权能,确定所述待隔离内核模块的模块页表和slab标记;所述模块隔离单元803用于根据所述待隔离内核模块的模块页表和slab标记,对所述待隔离内核模块进行隔离。
具体地,当待隔离内核模块需要装入内核操作***中时,模块分析单元801会获取待隔离内核模块的模块权能。所述待隔离内核模块的装入过程中,模块装入单元802需要对该待隔离内核模块附属的模块权能进行解析,了解所述待隔离内核模块需要访问的***资源,从而确定其模块页表和slab标记。待隔离内核模块运行时,由于该待隔离内核模块在内核地址空间不具备执行权限,会由于页面异常陷入中断异常。模块隔离单元803将根据模块页表和slab标记为待隔离内核模块构建隔离环境。可选地,当待隔离内核模块停止运行后,模块隔离单元803将撤销隔离环境。需要说明的是,本发明实施例提供的基于模块权能的内核模块隔离***是为了实现上述方法实施例的,其功能具体可参考上述方法实施例,此处不再赘述。
图9为本发明实施例提供的内核模块隔离***的***架构示意图。如图9所示,所有待隔离内核模块均附有模块权能文件,用于标明待隔离内核模块所依赖的内核成分。模块装入单元在传统的模块装载功能基础上,需要根据模块权能的提示,为待隔离内核模块构建模块页表和slab标记。待隔离内核模块运行时,会由于页面异常陷入中断异常,模块隔离单元将根据模块页表,为待隔离内核模块构建隔离环境。当待隔离内核模块停止运行后,模块隔离单元将撤销隔离环境。一旦待隔离内核模块提出新的权能要求时,模块隔离单元将权能要求提交给支撑接口,并进一步向上提交给用户接口,由用户接口决定是否同意待隔离内核模块权能要求。模块隔离单元将被用户接口允许的权能要求,以及该模块附属的模块权能合并,形成该模块新的模块权能。
本发明实施例提供的基于模块权能的内核模块隔离***,模块分析单元获取内核模块附带的模块权能,模块装入单元根据所述模块权能生成对应的模块页表和slab标记,模块隔离单元从而根据所述模块页表和slab标记,实现内核模块与内核的隔离。即本发明通过对内核模块标记不同权能,在保证基本内核和内核模块必要交互的基础上,实现两者的隔离,以避免攻击者通过内核模块,对基本内核实施攻击。由于本发明仅在内核空间内,通过为内核模块标记不同权能,在不牺牲***性能的前提下,限制内核模块的权限来实现内核模块隔离,并不涉及内核空间与虚拟机监控器之间的执行环境切换,从而避免引入过多的***性能开销。
在上述实施例的基础上,该***还包括:模块训练单元,用于对所述待隔离内核模块进行模块训练,确定所述待隔离内核模块的模块权能文件。
具体地,模块训练单元是为了获得模块正常运行所需要的权能。本发明实施例中,模块训练单元采用静态分析和动态训练相结合的方法对待隔离内核模块进行模块训练。静态分析是指模块训练单元804对待隔离内核模块的源码实施分析,记录待隔离内核模块所调用的内核函数以及读写的数据范围,生成访问记录集,并根据该访问记录集标识待隔离内核模块正常工作所需要的资源。动态训练是指采用模拟执行的方法,模块训练单元通过监控待隔离内核模块运行时所执行的内核代码以及读写的数据对象,标识待隔离内核模块正常工作所需要的资源。待隔离内核模块需要访问的上述资源将是生成模块权能的数据基础。
在上述实施例的基础上,该***中的所述模块装入单元具体包括:
模块验证子单元,用于根据模块完整性指纹,将所述模块权能与所述待隔离内核模块进行匹配验证;
模块页表和slab标记确定子单元,若所述模块权能与所述待隔离内核模块完成匹配验证,则根据所述访问的内核数据对象及类型列表确定所述待隔离内核模块的slab标记;并根据所述访问的内核函数列表,确定所述待隔离内核模块的模块页表。
具体地,待隔离内核模块装入内存的流程包括以下步骤:首先,模块被装入内存,模块验证子单元计算模块的完整性指纹;然后,模块验证子单元读取模块权能文件,根据模块权能所记录的模块完整性指纹完成与待隔离内核模块的匹配验证,在完成验证的基础上获取模块权能内的两个列表;其次,模块页表和slab标记确定子单元根据模块权能所记录的访问的内核数据对象及访问类型列表,与slab交互,完成slab标记,以保证所有新生成数据对象均被标记,并更新页面读/写权限;最后,模块页表和slab标记确定子单元再次与slab交互,对当前内核数据对象进行标记,并根据模块权能所记录的访问内核函数列表,生成该待隔离内核模块的模块页表待用。
在上述各实施例的基础上,该***中的模块隔离单元具体包括:
确定隔离域子单元,根据所述待隔离内核模块的模块页表和slab标记,确定待隔离内核模块的隔离域;
内核模块隔离子单元,根据所述待隔离内核模块的隔离域和内核的执行模式,对所述待隔离内核模块与所述内核进行隔离。
本发明实施例提供的基于模块权能的内核模块隔离***,依赖操作***自身构建隔离模块,充分利用基于页面的访问控制机制来限制模块对内核其它成分的访问,确保***性能不受影响。在隔离强度来看,虽然本发明所提供的方法弱于基于虚拟化监控器的方法,但是仍然可以在一定程度上保证模块无法突破隔离的范围。在性能开销来看,本发明避免了虚拟机监控器所带来的性能开销,较传统操作***而言,主要增加页面切换的性能开销,而该性能开销对***整体性能影响有限。总的来看,本发明牺牲了部分隔离强度,以提高整体性能开销。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种基于模块权能的内核模块隔离方法,其特征在于,包括:
步骤1、对待隔离内核模块进行模块训练,确定所述待隔离内核模块的模块权能文件;当所述待隔离内核模块需要装入内核操作***中时,获取所述待隔离内核模块的模块权能文件,所述模块权能文件用于存储所述待隔离内核模块的模块权能,所述模块权能指所述待隔离内核模块对内核其它成分的读、写或执行权限的集合;
步骤2、根据所述待隔离内核模块的模块权能,确定所述待隔离内核模块的模块页表和slab标记;所述模块页表用于记录待隔离模块对内核资源的访问权限;所述slab标记指基于slab标注的待隔离模块能够访问的内核数据类型;
步骤3、根据所述待隔离内核模块的模块页表和slab标记为所述待隔离内核模块构建隔离环境,对所述待隔离内核模块进行隔离。
2.根据权利要求1所述的方法,其特征在于,所述模块权能文件具体包括:模块完整性指纹、访问的内核函数列表和访问的内核数据对象及类型列表。
3.根据权利要求2所述的方法,其特征在于,所述步骤2具体为:
根据模块完整性指纹,将所述模块权能与所述待隔离内核模块进行匹配验证;
若所述模块权能与所述待隔离内核模块完成匹配验证,则根据所述访问的内核数据对象及类型列表确定所述待隔离内核模块的slab标记;并根据所述访问的内核函数列表,确定所述待隔离内核模块的模块页表。
4.根据权利要求1所述的方法,其特征在于,所述步骤3具体包括:
根据所述待隔离内核模块的模块页表和slab标记,确定所述待隔离内核模块的隔离域;
根据所述待隔离内核模块的隔离域和内核的执行模式,对所述待隔离内核模块与所述内核进行隔离。
5.一种基于模块权能的内核模块隔离***,其特征在于,包括:
模块训练单元,用于对待隔离内核模块进行模块训练,确定所述待隔离内核模块的模块权能文件;所述模块权能指所述待隔离内核模块对内核其它成分的读、写或执行权限的集合;
模块分析单元,用于当所述待隔离内核模块需要装入内核操作***中时,获取所述待隔离内核模块的模块权能文件,所述模块权能文件用于存储所述待隔离内核模块的模块权能;
模块装入单元,用于根据所述待隔离内核模块的模块权能,确定所述待隔离内核模块的模块页表和slab标记;所述模块页表用于记录待隔离模块对内核资源的访问权限;所述slab标记指基于slab标注的待隔离模块能够访问的内核数据类型;
模块隔离单元,用于根据所述待隔离内核模块的模块页表和slab标记为所述待隔离内核模块构建隔离环境,对所述待隔离内核模块进行隔离。
6.根据权利要求5所述的***,其特征在于,所述模块权能文件具体包括:模块完整性指纹、访问的内核函数列表和访问的内核数据对象及类型列表。
7.根据权利要求6所述的***,其特征在于,所述模块装入单元具体包括:
模块验证子单元,用于根据模块完整性指纹,将所述模块权能与所述待隔离内核模块进行匹配验证;
模块页表和slab标记确定子单元,若所述模块权能与所述待隔离内核模块完成匹配验证,则根据所述访问的内核数据对象及类型列表确定所述待隔离内核模块的slab标记;并根据所述访问的内核函数列表,确定所述待隔离内核模块的模块页表。
8.根据权利要求5所述的***,其特征在于,所述模块隔离单元具体包括:
确定隔离域子单元,根据所述待隔离内核模块的模块页表和slab标记,确定所述待隔离内核模块的隔离域;
内核模块隔离子单元,根据所述待隔离内核模块的隔离域和内核的执行模式,对所述待隔离内核模块与所述内核进行隔离。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810218944.4A CN108491249B (zh) | 2018-03-16 | 2018-03-16 | 一种基于模块权能的内核模块隔离方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810218944.4A CN108491249B (zh) | 2018-03-16 | 2018-03-16 | 一种基于模块权能的内核模块隔离方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108491249A CN108491249A (zh) | 2018-09-04 |
CN108491249B true CN108491249B (zh) | 2020-11-10 |
Family
ID=63339491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810218944.4A Active CN108491249B (zh) | 2018-03-16 | 2018-03-16 | 一种基于模块权能的内核模块隔离方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108491249B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117113378A (zh) * | 2023-09-12 | 2023-11-24 | 腾云创威信息科技(威海)有限公司 | 基于权能的负载空间隔离方法及其*** |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8090919B2 (en) * | 2007-12-31 | 2012-01-03 | Intel Corporation | System and method for high performance secure access to a trusted platform module on a hardware virtualization platform |
CN102938035B (zh) * | 2012-11-08 | 2015-05-27 | 西安交通大学 | 一种在虚拟机内部的驱动隔离***与方法 |
US9569612B2 (en) * | 2013-03-14 | 2017-02-14 | Daniel Shawcross Wilkerson | Hard object: lightweight hardware enforcement of encapsulation, unforgeability, and transactionality |
CN104036185B (zh) * | 2014-06-23 | 2017-04-12 | 常熟理工学院 | 基于虚拟化的宏内核操作***载入模块权能隔离方法 |
CN104732140A (zh) * | 2015-04-13 | 2015-06-24 | 成都睿峰科技有限公司 | 一种程序数据处理方法 |
CN107085535B (zh) * | 2017-03-30 | 2020-10-27 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN107203410B (zh) * | 2017-04-14 | 2020-02-14 | 华中科技大学 | 一种基于***调用重定向的vmi方法及*** |
-
2018
- 2018-03-16 CN CN201810218944.4A patent/CN108491249B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108491249A (zh) | 2018-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109558211B (zh) | 保护可信应用与普通应用的交互完整性和保密性的方法 | |
US7380049B2 (en) | Memory protection within a virtual partition | |
CN109522754B (zh) | 一种移动终端可信隔离环境核心控制方法 | |
US8464252B2 (en) | Per process virtual machines | |
JP6484255B2 (ja) | 信頼実行環境を含むホストのアテステーション | |
JP5487479B2 (ja) | オペレーティングシステム(os)に依存しないウイルス対策(av)スキャナに対して強制的なセキュリティポリシーを実施する方法および装置 | |
KR102255767B1 (ko) | 가상 머신 감사를 위한 시스템 및 방법들 | |
KR100927750B1 (ko) | 무단 변경 방지 방법, 무단 변경 방지 프로세서, 무단 변경방지 제품, 무단 변경 방지 시스템 | |
KR101946982B1 (ko) | 가상 머신에서 멀웨어 탐지를 위한 프로세스 평가 | |
EP2764434B1 (en) | Security in virtualized computer programs | |
CN100533385C (zh) | 用于提供***完整性和遗留环境模拟的方法及装置 | |
US9202062B2 (en) | Virtual machine validation | |
US7975117B2 (en) | Enforcing isolation among plural operating systems | |
US10831889B2 (en) | Secure memory implementation for secure execution of virtual machines | |
CN109858288B (zh) | 实现虚拟机安全隔离的方法与装置 | |
KR20170067740A (ko) | 운영 체제 공격으로부터 애플리케이션 기밀사항을 보호하는 기법 | |
KR101323858B1 (ko) | 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법 | |
WO2012084837A1 (en) | Virtual machine validation | |
Gold et al. | A security retrofit of VM/370 | |
Gold et al. | KVM/370 in retrospect | |
CN106911814A (zh) | 大规模数据分布式存储方法 | |
TW202038104A (zh) | 安全儲存隔離 | |
CN108491249B (zh) | 一种基于模块权能的内核模块隔离方法及*** | |
CN110348234A (zh) | Mils架构中的强制访问安全策略实现方法及管理方法 | |
CN107169375B (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 |