CN111428241B - 一种多安全访问策略控制方法及计算设备 - Google Patents
一种多安全访问策略控制方法及计算设备 Download PDFInfo
- Publication number
- CN111428241B CN111428241B CN201911206473.6A CN201911206473A CN111428241B CN 111428241 B CN111428241 B CN 111428241B CN 201911206473 A CN201911206473 A CN 201911206473A CN 111428241 B CN111428241 B CN 111428241B
- Authority
- CN
- China
- Prior art keywords
- function
- linked list
- kernel
- hook
- hook function
- 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
- 238000000034 method Methods 0.000 title claims abstract description 117
- 230000006870 function Effects 0.000 claims description 504
- 238000000547 structure data Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 7
- 230000009191 jumping Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000007723 transport mechanism Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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 Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种多安全访问策略控制方法,在计算设备中执行,包括步骤:在目标安全访问策略模块中,为目标内核函数设置挂钩函数;获取目标内核函数的挂钩函数链表地址,将挂钩函数的地址***挂钩函数链表的尾部;以及将目标内核函数的回调信息添加至目标安全访问策略模块的回调信息数组中,其中,回调信息数组中的每一个元素对应于一个内核函数的回调信息,回调信息包括内核函数的挂钩函数链表地址、挂钩函数在挂钩函数链表中的位置以及挂钩函数的地址。本发明一并公开了相应的安全访问方法和计算设备。
Description
技术领域
本发明涉及Linux安全访问策略控制技术领域,尤其涉及一种用于多安全访问策略控制方法、安全访问方法及计算设备。
背景技术
Linux操作***被广泛应用于服务器、手机以及嵌入式等领域。操作***的安全是整个计算机***安全的基础。没有安全操作***的支持,便无法保证计算机***以及运行于操作***上的各类应用软件的安全性。
强制存取策略是一种对主客体的访问加以限制,以保证***安全的访问机制。在Linux操作***中,强制存取策略通过内核的安全访问策略子***(Security AccessPolicy,SAP)来实现。SAP子***是一种访问控制框架,其提供了一系列接口,使得开发人员可以在强制存取策略对应的内核模块(简称强制存取策略模块)中,对内核关键路径函数进行埋点,并设置针对各内核函数的挂钩(hook)函数,然后对接到SAP子***。当内核接收到上层应用发来的针对某一内核函数的调用请求时,SAP子***调用相应的挂钩函数,来判断该调用请求是否具有权限,即判断该调用请求是否安全。
现有的强制存取策略模块包括SeLinux、AppArmor、Grsecurity、Triage等多种。由于操作***的限制,内核中至多只能存在一个强制存取策略模块,相应地也至多只能有一个挂钩函数被调用,这在某些情况下难以保证***安全。
发明内容
为此,本发明提供一种多安全访问策略控制方法、安全访问方法及计算设备,以力图解决或至少缓解上面存在的问题。
根据本发明的第一个方面,提供一种多安全访问策略控制方法,在计算设备中执行,包括步骤:在目标安全访问策略模块中,为目标内核函数设置挂钩函数;获取所述目标内核函数的挂钩函数链表地址,将所述挂钩函数的地址***所述挂钩函数链表的尾部;以及将所述目标内核函数的回调信息添加至所述目标安全访问策略模块的回调信息数组中,其中,所述回调信息数组中的每一个元素对应于一个内核函数的回调信息,所述回调信息包括内核函数的挂钩函数链表地址、挂钩函数在挂钩函数链表中的位置以及挂钩函数的地址。
可选地,在根据本发明的多安全访问策略控制方法中,在所述为目标函数设置挂钩函数的步骤之前,还包括步骤:检测内核配置参数CONFIG_KALLSYMS_ALL的值是否为y;若否,则将内核配置参数CONFIG_KALLSYMS_ALL的值设置为y,并重新编译内核。
可选地,在根据本发明的多安全访问策略控制方法中,在所述为目标函数设置挂钩函数的步骤之前,还包括步骤:检测内核配置参数CONFIG_SECURITY_WRITABLE_HOOKS的值是否为y;若否,则将内核配置参数CONFIG_SECURITY_WRITABLE_HOOKS的值设置为y,并重新编译内核。
可选地,在根据本发明的多安全访问策略控制方法中,所述获取所述目标内核函数的挂钩函数链表地址的步骤包括:从内核符号表中查找挂钩函数总链表的地址,所述挂钩函数总链表中的元素为各内核函数的挂钩函数链表地址;以及从所述挂钩函数总链表中查找所述目标内核函数的挂钩函数链表地址。
可选地,在根据本发明的多安全访问策略控制方法中,所述回调信息数组中的元素为结构体数据类型,所述结构体包括用于存储挂钩函数链表地址的结构体指针变量、用于存储挂钩函数在挂钩函数链表中的位置的结构体变量以及用于存储挂钩函数的地址的联合体变量。
可选地,在根据本发明的多安全访问策略控制方法中,所述结构体变量包括指向挂钩函数链表中的下一个元素的后指针变量,和指向挂钩函数链表中的上一个元素的前指针变量。
可选地,在根据本发明的多安全访问策略控制方法中,所述挂钩函数适于在内核接收到目标内核函数调用请求时被调用,所述挂钩函数适于判断所述调用请求的安全性。
可选地,在根据本发明的多安全访问策略控制方法中,所述挂钩函数包括至少一项安全规则,所述挂钩函数适于通过判断所述调用请求是否符合所述安全规则来确定所述调用请求是否安全。
可选地,在根据本发明的多安全访问策略控制方法中,还包括步骤:根据目标安全访问策略模块的回调信息数组,确定目标内核函数的挂钩函数链表地址以及挂钩函数在挂钩函数链表中的位置;删除挂钩函数链表中的所述挂钩函数;以及删除所述回调信息数组中的所述目标内核函数的回调信息。
根据本发明的第二个方面,提供一种安全访问方法,在计算设备中执行,包括步骤:接收上层应用发来的内核函数调用请求;获取所述内核函数的挂钩函数链表地址,所述挂钩函数链表包括所述内核函数在至少一种安全访问策略下的挂钩函数;依次调用所述挂钩函数链表中的各个挂钩函数,来判断所述调用请求的安全性;在所有挂钩函数均判断所述调用请求安全时,调用所述内核函数。
可选地,在根据本发明的安全访问方法中,所述获取所述内核函数的挂钩函数链表地址的步骤包括:从内核符号表中查找挂钩函数总链表的地址,所述挂钩函数总链表中的元素为各内核函数的挂钩函数链表地址;以及从所述挂钩函数总链表中查找所述内核函数的挂钩函数链表地址。
可选地,在根据本发明的安全访问方法中,所述挂钩函数包括至少一项安全规则,所述挂钩函数适于通过判断所述调用请求是否符合所述安全规则来确定所述调用请求是否安全。
根据本发明的第三个方面,提供一种计算设备,包括:至少一个处理器;和存储有程序指令的存储器,当所述程序指令被所述处理器读取并执行时,使得所述计算设备执行上述多安全访问策略控制方法和安全访问方法。
根据本发明的第四个方面,提供一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行上述多安全访问策略控制方法和安全访问方法。
根据本发明的多安全访问策略控制方法,可以在目标安全访问策略模块中,为目标内核函数设置挂钩函数,并将设置好的挂钩函数的地址***目标内核函数所对应的挂钩函数链表中。在本发明的多安全访问策略控制方法中,目标内核函数的挂钩函数链表统一存储目标内核函数在各个安全访问策略模块中的挂钩函数,各安全访问策略模块可以将自定义的挂钩函数***挂钩函数链表,从而实现安全访问策略的动态添加,使内核能够同时支持多种安全访问策略。
进一步地,各安全访问策略模块可以将自定义的挂钩函数从挂钩函数链表中删除,从而实现安全访问策略的动态删除。
基于本发明的多安全访问策略控制方法,本发明进一步提供一种安全访问方法。当内核接收到上层应用发来的针对某一内核函数的调用请求后,获取该内核函数的挂钩函数链表地址,挂钩函数链表中包括该内核函数在至少一种安全访问策略下的挂钩函数。随后,依次调用挂钩函数链表中的各个挂钩函数,来判断该调用请求的安全性。在所有安全访问策略的挂钩函数均判断该调用请求安全时,才允许调用该内核函数,从而实现了对内核函数的多重保护,保证了内核函数的安全。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的计算设备100的示意图;
图2示出了根据本发明一个实施例的多安全访问策略控制方法200的流程图;
图3A、3B示出了根据本发明一个实施例的在目标安全访问策略模块A中将目标内核函数func1的挂钩函数hook_A1***挂钩函数链表security_hook_heads.func1的过程示意图;
图4示出了根据本发明一个实施例的多安全访问策略控制的实施过程示意图;
图5示出了根据本发明一个实施例的添加挂钩函数的示例代码;
图6示出了根据本发明一个实施例的安全访问方法600的流程图;
图7示出了未采用本发明的方法200、方法600时的内核函数调用过程的示意图;以及
图8示出了采用本发明的方法200、600后的内核函数调用过程的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为了在内核中实现多种强制存取策略,本发明提供一种多安全访问策略控制方法和一种安全访问方法,这些方法在计算设备中执行。本发明的计算设备是安装有Linux操作***的设备,其例如可以是桌面电脑、笔记本电脑等个人配置的计算机,或手机、平板电脑、多媒体播放器、智能可穿戴设备、物联网(Internet of Things,IoT)设备等终端设备,但不限于此。
图1示出了根据本发明一个实施例的计算设备100的示意图。需要说明的是,图1所示的计算设备100仅为一个示例,在实践中,用于实施本发明的多安全访问策略控制方法、安全访问方法的计算设备可以是任意型号的设备,其硬件配置情况可以与图1所示的计算设备100相同,也可以与图1所示的计算设备100不同。实践中用于实施本发明的多安全访问策略控制方法、安全访问方法的计算设备可以对图1所示的计算设备100的硬件组件进行增加或删减,本发明对计算设备的具体硬件配置情况不做限制。
如图1所示,在基本的配置102中,计算设备100典型地包括***存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和***存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,***存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。计算设备中的物理内存通常指的是易失性存储器RAM,磁盘中的数据需要加载至物理内存中才能够被处理器104读取。***存储器106可以包括操作***120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作***上由一个或多个处理器104利用程序数据124执行指令。在本发明的实施例中,操作***120为Linux操作***,其包括用于处理基本***服务以及执行依赖于硬件的任务的程序指令。应用122包括用于实现各种用户期望的功能的程序指令,应用122例如可以是浏览器、即时通讯软件、软件开发工具(例如集成开发环境IDE、编译器等)等,但不限于此。当应用122被安装到计算设备100中时,可以向操作***120添加驱动模块。
在计算设备100启动运行时,处理器104会从存储器106中读取操作***120的程序指令并执行。应用122运行在操作***120之上,利用操作***120以及底层硬件提供的接口来实现各种用户期望的功能。当用户启动应用122时,应用122会加载至存储器106中,处理器104从存储器106中读取并执行应用122的程序指令。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在本发明的实施例中,操作***120为Linux操作***,该Linux操作***包括多个内核模块,例如进程调度模块、进程间通信模块、内存管理模块、文件***模块、网络接口模块等,用于实现相应的基础功能。
在本发明的实施例中,为了保证操作***的安全性,操作***中还包括安全访问策略框架模块(即SAP框架)和多个安全访问策略模块(例如SeLinux模块、AppArmor模块、Grsecurity模块、Triage模块等)。安全访问策略模块运行于SAP框架之上,不同的安全访问策略模块可以采用不同的安全保护方法、从不同的角度来保护操作***的安全。开发人员可以在安全访问策略模块中对内核关键路径函数进行埋点,并设置针对各内核函数的挂钩(hook)函数,通过SAP框架提供的接口将已埋点的内核函数和相应的挂钩函数对接至SAP框架。当上层应用122向内核发起针对某一已埋点的内核函数的调用请求时,SAP子***将调用该内核函数的挂钩函数来判断该调用请求是否具有权限,即判断该调用请求是否安全。
由于操作***的限制,现有SAP框架上仅能实现一个安全访问策略模块,相应地,针对某一内核函数也至多只能有一个挂钩函数被调用,这在某些情况下难以保证***安全。因此,本发明提供一种多安全访问策略控制方法200和安全访问方法600,以实现多安全访问策略的并存,对关键内核函数进行多重保护,从而保证操作***的安全性。
多安全访问策略控制方法200由内核中的安全访问策略模块执行。该方法能够动态识别内核SAP框架中的各个关键内核函数的挂钩函数链表,并通过对链表项的动态添加和删除,将安全访问策略模块自定义的挂钩函数加入或移出SAP框架,以克服SAP框架无法同时支持多种安全访问策略以及无法动态挂载、卸载安全访问策略模块的问题。
安全访问方法600由内核中的SAP框架执行。基于多安全访问策略控制方法200所设置的挂钩函数链表,当内核接收到上层应用发来的针对某一内核函数的调用请求后,SAP框架获取该内核函数的挂钩函数链表地址,随后依次调用挂钩函数链表中的各个挂钩函数,来判断该调用请求的安全性。在所有安全访问策略的挂钩函数均判断该调用请求安全时,才允许调用该内核函数,从而实现了对内核函数的多重保护,保证了内核函数的安全性。
图2示出了根据本发明一个实施例的多安全访问策略控制方法200的流程图。方法200在计算设备(例如前述计算设备100)中执行,具体地,方法200由计算设备中的安全访问策略模块这一内核模块执行。如图2所示,方法200始于步骤S210。
在步骤S210中,在目标安全访问策略模块中,为目标内核函数设置挂钩函数。
目标安全访问策略模块为用户选用的安全访问策略模块,其例如可以实现为SeLinux模块、AppArmor模块、Grsecurity模块、Triage模块等安全访问策略内核模块,但不限于此。
目标内核函数为采用目标安全访问策略模块来进行保护的内核函数。本领域技术人员可以根据实际需求,选择将某个或某些内核函数设置为目标内核函数,采用目标安全访问策略模块来保护这些内核函数的安全。本发明对目标内核函数的选择情况不做限制。
根据一种实施例,在步骤S210为目标内核函数设置挂钩函数之前,还包括步骤:检测内核配置参数CONFIG_KALLSYMS_ALL的值是否为y;若否,则将内核配置参数CONFIG_KALLSYMS_ALL的值设置为y,并重新编译内核。将内核配置参数CONFIG_KALLSYMS_ALL设置为y,可以使内核符号表中包含内核代码中所有符号(符号包括函数和非栈数据变量等)的信息,包括各函数的地址、函数名,以及各变量的地址、变量名等,从而便于在后续步骤S220中获取挂钩函数链表地址。
根据一种实施例,在步骤S210之前,还包括步骤:检测内核配置参数CONFIG_SECURITY_WRITABLE_HOOKS的值是否为y;若否,则将内核配置参数CONFIG_SECURITY_WRITABLE_HOOKS的值设置为y,并重新编译内核。将内核配置参数CONFIG_SECURITY_WRITABLE_HOOKS的值设置为y,可以使***在运行时能够动态添加安全访问策略中的挂钩函数,从而便于在后续步骤S220中将挂钩函数添加至相应的挂钩函数链表。
目标内核函数的挂钩(hook)函数适于在内核接收到目标内核函数调用请求时被调用,用于判断该调用请求的安全性。若挂钩函数判断该调用请求安全,内核才会进一步调用目标内核函数。具体地,挂钩函数中设置有至少一项安全规则,挂钩函数通过判断调用请求是否符合这些安全规则来确定该调用请求是否安全。安全规则包括但不限于主客体权限规则,例如,可以将安全规则设置为主体s1对客体o1具有读写权限,主体s2对客体o2只具有读权限,主体s3对所有客体均具有读权限,等。
在本发明的实施例中,每一个安全访问策略模块均对应于一个回调信息数组,回调信息数组中存储有该安全访问策略模块所保护的各个内核函数的回调信息。即,目标安全访问策略模块的回调信息数组中存储有各个目标内核函数的回调信息。
根据一种实施例,回调信息数组中的元素为结构体(struct)数据类型,该结构体包括用于存储挂钩函数链表地址的结构体指针变量、用于存储挂钩函数在挂钩函数链表中的位置的结构体变量以及用于存储挂钩函数的地址的联合体变量。用于存储挂钩函数在挂钩函数链表中的位置的结构体变量进一步包括指向挂钩函数链表中的下一个元素的后指针变量,和指向挂钩函数链表中的上一个元素的前指针变量。内核函数的挂钩函数链表中存储有内核函数在各个安全访问策略模块中的挂钩函数。
根据一种实施例,目标安全访问策略模块的回调信息数组中的元素的结构体定义如下:
struct security_hook_list{
struct list_head list;
struct list_head *head;
union security_list_options hook;
};
该结构体的定义可以固化在Linux内核中,例如,固化在Linux内核的include/linux/lsm_hooks.h文件中。该结构体包括以下成员变量:
1、list是list_head类型的结构体变量,其用于存储挂钩函数在挂钩函数链表中的位置。list_head是Linux内核提供的一种双向循环链表结构,其定义如下:
struct list_head{
struct list_head*next,*prev;
};
其中,*next为指向挂钩函数链表中的下一个元素的后指针变量,*prev为指向挂钩函数链表中的上一个元素的前指针变量。
2、*head是一个指向list_head数据类型的指针变量,其用于存储挂钩函数链表地址。
3、hook是security_list_options类型的联合体变量,其是所有挂钩函数原型地址的联合体,即,hook用于存储挂钩函数的地址。
根据一种实施例,步骤S210还包括:在目标安全访问策略模块中初始化上述struct security_hook_list类型的数组变量,该数组变量对应于目标内核函数,用于存储目标内核函数的回调信息。
随后,在步骤S220中,获取目标内核函数的挂钩函数链表地址,将步骤S210中设置的挂钩函数的地址***挂钩函数链表的尾部。
根据一种实施例,目标内核函数的挂钩函数链表地址按照以下步骤获取:从内核符号表中查找挂钩函数总链表的地址,挂钩函数总链表中的元素为各内核函数的挂钩函数链表地址;以及从挂钩函数总链表中查找目标内核函数的挂钩函数链表地址。
在Linux内核中,挂钩函数总链表的变量名为security_hook_heads,根据内核符号表,可以查找出该链表的地址。挂钩函数总链表中的元素为各内核函数的挂钩函数链表地址,相应地,可以从挂钩函数总链表中查找到目标内核函数的挂钩函数链表地址。
例如,挂钩函数总链表security_hook_heads的定义如下:
struct security_hook_heads{
struct list_head func1;
struct list_head func2;
struct list_head func3;
//...
};
extern struct security_hook_heads security_hook_heads;
security_hook_heads中的func1、func2、func3变量分别表示内核函数func1、func2、func3对应的挂钩函数链表地址(链表头地址)。
在获取到目标内核函数的挂钩函数链表地址后,将步骤S210中设置的挂钩函数的地址***挂钩函数链表的尾部。
例如,在步骤S210中,在目标安全访问策略模块A中,为目标内核函数func1设置了挂钩函数hook_A1。在步骤S220中,获取目标内核函数func1的挂钩函数链表地址security_hook_heads.func1,将挂钩函数hook_A1***链表security_hook_heads.func1的尾部。
图3A、3B示出了将挂钩函数hook_A1***挂钩函数链表security_hook_heads.func1的过程示意图。
如图3A所示,在未***目标安全访问策略模块A中的挂钩函数hook_A1时,挂钩函数链表security_hook_heads.func1中已经存在安全访问策略模块B为内核函数func1设置的挂钩函数hook_B1,以及安全访问策略模块C为内核函数func1设置的挂钩函数hook_C1。挂钩函数链表security_hook_heads.func1的头节点为hook_B1所在的节点。
为了使目标安全访问策略模块A对内核函数func1进行保护,需要将模块A设置的挂钩函数hook_A1***图3A所示的挂钩函数链表security_hook_heads.func1的尾部。例如,通过SAP框架提供的接口函数security_add_hooks来将挂钩函数hook_A1***挂钩函数链表security_hook_heads.func1的尾部。***后的挂钩函数链表如图3B所示。
在图3B所示的挂钩函数链表中,挂钩函数hook_A1的上一个元素为hook_C1,下一个元素为hook_B1,即,挂钩函数hook_A1的前指针prev指向hook_C1,后指针next指向hook_C1。前指针prev和后指针next可以确定挂钩函数hook_A1在挂钩函数链表中的位置。
根据一种实施例,为了保证数据一致性,在步骤S220将挂钩函数的地址***挂钩函数链表时,需要开启内核提供的RCU(Read-Copy Update)锁保护。
上述实施例介绍了将目标内核函数的挂钩函数***挂钩函数链表的过程。需要说明的是,步骤S220存在无法获取目标内核函数的挂钩函数链表地址的情况。如果基于内核符号表,无法获取到目标内核函数的挂钩函数链表地址,则无法将目标安全访问策略模块所设置的挂钩函数添加至挂钩函数链表,即,目标安全访问策略模块无法对目标内核函数进行保护。
在步骤S220将步骤S210中设置的挂钩函数的地址***目标内核函数的挂钩函数链表后,执行步骤S230。
在步骤S230中,将目标内核函数的回调信息添加至目标安全访问策略模块的回调信息数组中,其中,回调信息数组中的每一个元素对应于一个内核函数的回调信息,回调信息包括内核函数的挂钩函数链表地址、挂钩函数在挂钩函数链表中的位置以及挂钩函数的地址。
根据一种实施例,参照前述步骤S210中的实施例,回调信息数组中的元素结构如下,并已初始化了对应于目标内核函数的下述结构体变量:
struct security_hook_list{
struct list_head list;
struct list_head *head;
union security_list_options hook;
};
在步骤S230中,将目标内核函数的挂钩函数链表地址、挂钩函数在挂钩函数链表中的位置(下一个元素的地址,上一个元素的地址)以及挂钩函数的地址分别赋值给上述security_hook_list结构体中的*head、list(*next,*prev)、hook成员变量。
需要说明的是,在步骤S210中,目标安全访问策略模块可能为多个目标内核函数设置了挂钩函数,对于每一个目标内核函数,均需要执行步骤S220、S230,以将设置的挂钩函数一一添加至相应的目标内核函数的挂钩函数链表中。即,当步骤S210设置了多个目标内核函数的挂钩函数时,步骤S220、S230将被循环执行多次。
根据一种实施例,方法200还包括步骤S240(步骤S240未在图2中示出)。
在步骤S240中,根据目标安全访问策略模块的回调信息数组,确定目标内核函数的挂钩函数链表地址以及挂钩函数在挂钩函数链表中的位置;删除挂钩函数链表中的所述挂钩函数;以及删除回调信息数组中的该目标内核函数的回调信息。步骤S240可以将目标安全访问策略模块自定义的挂钩函数从挂钩函数链表中删除,从而实现安全访问策略的动态删除。
图4示出了采用本发明的多安全访问策略控制方法200的一个具体实施例的示意图。该实施例包括以下8个步骤:
步骤S1、检测当前运行于ARM硬件平台的内核配置参数CONFIG_KALLSYMS_ALL是否为y,若不是则跳到步骤S3,若是则继续执行步骤S2。检测此值的意义在于需要依赖于内核符号表进行内核变量的地址定位.
步骤S2、检测当前运行于ARM硬件平台的操作***的内核配置参数CONFIG_SECURITY_WRITABLE_HOOKS是否为y,若不是则跳到步骤S3,若是则跳转到步骤S4。检测此值的意义在于可以在运行时动态地添加安全访问策略的埋点挂钩函数。
步骤S3、使用make menuconfig命令设置内核配置参数CONFIG_KALLSYMS_ALL为y,CONFIG_SECURITY_WRITABLE_HOOKS为y,重新编译内核。
步骤S4、在目标安全访问策略模块中定义并初始化struct security_hook_list类型的数组变量,准备好目标内核函数的挂钩函数。其中security_hook_list的结构定义固化在Linux内核的include/linux/lsm_hooks.h中。4.4版本的内核对其的定义如下:
struct security_hook_list{
struct list_head list;
struct list_head *head;
union security_list_options hook;
};
该结构体中各成员说明如下:
head为链表头,head的值是security_hook_heads中对应于目标内核函数的挂钩函数链表的地址;
list为链表,prev成员是一个指针,它的值是挂钩函数链表中原来最后一个元素的地址,next成员也是一个指针,它的值是挂钩函数链表中第一个元素的地址,hook的值是某目标安全访问策略模块自行实现的针对目标内核函数的挂钩函数的地址;
hook的类型是一个联合体(union security_list_options),它是所有内核挂钩函数原型的联合体,这样方便开发者对感兴趣的任何函数进行挂钩。
通常,每个安全访问策略都会关注不止一个内核函数,因此目标安全访问策略模块对应于一个类型为security_hook_list的数组,数组中的每个元素对应于目标安全访问策略模块所保护的一个目标内核函数。举例说明如下:
数组a_hooks是安全访问策略A中被hook的内核函数数组,数组中每一个元素是一个security_hook_list结构,对应于一个被hook的目标内核函数,用于存储该被hook的目标内核函数的回调信息。此时结构体中head的值是security_hook_heads对应的挂钩函数链表的地址,list的prev成员是一个指针,它的值是挂钩函数链表中原来最后一个元素的地址,list的next成员也是一个指针,它的值是挂钩函数链表中第一个元素的地址,hook的值是安全访问策略A自行实现的对func1提供的挂钩函数hook_A1的地址。
步骤S5、使用kallsyms_lookup_name从内核符号表中查找SAP框架的挂钩函数总链表security_hook_heads的地址。挂钩函数总链表security_hook_heads是一个结构体,这个结构体里每个元素都是一个内核函数的挂钩函数链表。
步骤S6、若能获取到目标内核函数的挂钩函数链表,则跳转到步骤S7;若获取不到目标内核函数的挂钩函数链表,则无法在这个变量上挂钩(与当前安全访问策略无关),通常情况下是内核中没有导出这个变量的符号与地址,目标安全访问策略模块无法对目标内核函数进行保护,过程失败,结束。
步骤S7、通过挂钩函数链表地址以及程序内部定义的struct security_hook_list类型的数组变量,逐一将目标内核函数的回调信息添加至目标安全访问策略模块的回调信息数组中,并调用security_add_hooks将挂钩函数添加至相应的挂钩函数链表。
如上所述,security_hook_heads里包含了各个内核函数对应的挂钩函数链表,security_add_hooks函数的作用则是将每个security_hook_list中的list成员作为一个链表元素加入到security_hook_heads中的对应链表中去。比如安全访问策略模块A希望对binder_set_context_mgr内核函数进行保护,则需要调用security_add_hooks函数,将对应挂钩该内核函数的security_hook_list结构体中的list成员作为一个元素加入到security_hook_heads.binder_set_context_mgr链表中即可。图5示出了根据本发明一个实施例的添加挂钩函数的示例代码。
随后,执行步骤S8。
步骤S8、判断是否所有待保护的目标内核函数均已设置完毕。未设置完毕则跳转至步骤S7,继续进行设置;若所有目标内核函数均已设置完毕,则设置成功,结束。
本发明的技术方案实现了安全访问策略的动态添加与删除,并与Linux内核中原有的安全访问策略集成,形成链式安全规则。
基于本发明的多安全访问策略控制方法200,本发明进一步提供一种安全访问方法600。方法600在计算设备(例如前述计算设备100)中执行,具体地,方法600由计算设备中的SAP框架执行。如图6所示,方法600始于步骤S610。
在步骤S610中,接收上层应用发来的内核函数调用请求。
随后,在步骤S620中,获取该内核函数的挂钩函数链表地址,挂钩函数链表中包括该内核函数在至少一种安全访问策略下的挂钩函数。
根据一种实施例,内核函数的挂钩函数链表地址可以按照以下步骤确定:从内核符号表中查找挂钩函数总链表的地址,挂钩函数总链表中的元素为各内核函数的挂钩函数链表地址;以及从挂钩函数总链表中查找该内核函数的挂钩函数链表地址。
随后,在步骤S630中,依次调用挂钩函数链表中的各个挂钩函数,来判断调用请求的安全性。
根据一种实施例,每个挂钩函数中均包括至少一项安全规则,挂钩函数适于通过判断调用请求是否符合这些安全规则来确定该调用请求是否安全。
随后,在步骤S640中,在所有挂钩函数均判断调用请求安全时,调用内核函数。若有一个挂钩函数判断调用请求不安全,则不允许调用该内核函数。
本发明的安全访问方法600实现了对内核函数的多重保护,从而保证了关键内核函数的安全性。
下面结合图7、图8,说明实施本发明的方法200、方法600后的效果。
如图7所示,在未采用本发明的方法200、方法600时,当应用程序发起***调用时,***调用会调用相应的内核函数来完成相应的功能。若内核函数为被安全访问策略模块挂钩保护的关键路径的内核函数,则SAP框架会获取该内核函数的挂钩函数并调用,以进行安全访问策略的实施,判断调用该内核函数是否安全,当挂钩函数判断当前内核函数的调用请求为安全时,才允许调用该内核函数。但值得注意的是,由于现有***的限制,内核中最多仅能存在一个安全访问策略模块,因此也只有一个挂钩函数被调用。
如图8所示,在采用了本发明的方法200、方法600后,内核中可以同时存在多个安全访问策略模块,相应地,一个内核函数可能对应于多个挂钩函数,从而实现对内核函数的多重保护。当应用程序发起***调用时,***调用会经过内核函数的处理完成相应的功能。若内核函数为被安全访问策略模块挂钩保护的关键路径的内核函数,则SAP框架会获取该内核函数的挂钩函数链表,并依次调用挂钩函数链表中的各个挂钩函数,以判断内核函数调用请求的安全性。如图8所示,该内核函数的挂钩函数链表包括挂钩函数1和挂钩函数2两个挂钩函数,表示该内核函数被两个安全访问策略模块保护。SAP框架将依次调用挂钩函数1、挂钩函数2来判断当前内核函数调用请求的安全性。当挂钩函数1和挂钩函数2均判断调用请求为安全时,才允许调用该内核函数。若有一个挂钩函数判断该调用请求不安全,则拒绝调用该内核函数。
本发明的多安全访问策略控制方法200和安全访问方法600,实现了内核中多种安全访问策略的并存,能够对关键内核函数进行多重保护,从而保证操作***的安全性。
多安全访问策略控制方法200能够动态识别内核SAP框架中的各个关键内核函数的挂钩函数链表,并通过对链表项的动态添加和删除,将安全访问策略模块自定义的挂钩函数加入或移出SAP框架,以克服SAP框架无法同时支持多种安全访问策略以及无法动态挂载、卸载安全访问策略模块的问题。
此外,本发明的多安全访问策略控制方法支持与既有的安全访问策略模块接口,保证良好的向后兼容性。通过内核模块自动检测、动态加载实现,对用户透明,不需增加额外操作,且对操作***中其他的功能没有任何影响,能灵活高效地实现多种安全访问策略的实施。
安全访问方法600基于多安全访问策略控制方法200所设置的挂钩函数链表,当内核接收到上层应用发来的针对某一内核函数的调用请求后,SAP框架获取该内核函数的挂钩函数链表地址,随后依次调用挂钩函数链表中的各个挂钩函数,来判断该调用请求的安全性。在所有安全访问策略的挂钩函数均判断该调用请求安全时,才允许调用该内核函数,从而实现了对内核函数的多重保护,保证了内核函数的安全性。
A10、一种安全访问方法,在计算设备中执行,包括步骤:
接收上层应用发来的内核函数调用请求;
获取所述内核函数的挂钩函数链表地址,所述挂钩函数链表包括所述内核函数在至少一种安全访问策略下的挂钩函数;
依次调用所述挂钩函数链表中的各个挂钩函数,来判断所述调用请求的安全性;
在所有挂钩函数均判断所述调用请求安全时,调用所述内核函数。
A11、如权利要求10所述的方法,其中,所述获取所述内核函数的挂钩函数链表地址的步骤包括:
从内核符号表中查找挂钩函数总链表的地址,所述挂钩函数总链表中的元素为各内核函数的挂钩函数链表地址;以及
从所述挂钩函数总链表中查找所述内核函数的挂钩函数链表地址。
A12、如权利要求10或11所述的方法,其中,所述挂钩函数包括至少一项安全规则,所述挂钩函数适于通过判断所述调用请求是否符合所述安全规则来确定所述调用请求是否安全。
A14、一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-9中任一项所述的多安全访问策略控制方法和如权利要求10-12中任一项所述的安全访问方法。
虽然本发明已以较佳实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的多安全访问策略控制方法和安全访问方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与本发明的示例一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机***的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。
Claims (9)
1.一种多安全访问策略控制方法,在计算设备中执行,包括步骤:
在目标安全访问策略模块中,为目标内核函数设置挂钩函数;
获取所述目标内核函数的挂钩函数链表地址,将所述挂钩函数的地址***所述挂钩函数链表的尾部;以及
将所述目标内核函数的回调信息添加至所述目标安全访问策略模块的回调信息数组中,其中,每个安全访问策略模块均对应于一个回调信息数组,所述回调信息数组中的每一个元素对应于一个内核函数的回调信息,所述回调信息包括内核函数的挂钩函数链表地址、挂钩函数在挂钩函数链表中的位置以及挂钩函数的地址;
所述回调信息数组中的元素为结构体数据类型,所述结构体包括用于存储挂钩函数链表地址的结构体指针变量、用于存储挂钩函数在挂钩函数链表中的位置的结构体变量以及用于存储挂钩函数的地址的联合体变量;
所述结构体变量包括指向挂钩函数链表中的下一个元素的后指针变量,和指向挂钩函数链表中的上一个元素的前指针变量;
所述挂钩函数链表中的挂钩函数适于在内核接收到目标内核函数调用请求时被依次调用,所述挂钩函数包括至少一项安全规则,适于通过判断所述调用请求是否符合所述安全规则来确定所述调用请求是否安全。
2.如权利要求1所述的方法,其中,在所述为目标函数设置挂钩函数的步骤之前,还包括步骤:
检测内核配置参数CONFIG_KALLSYMS_ALL的值是否为y;
若否,则将内核配置参数CONFIG_KALLSYMS_ALL的值设置为y,并重新编译内核。
3.如权利要求1或2所述的方法,其中,在所述为目标函数设置挂钩函数的步骤之前,还包括步骤:
检测内核配置参数CONFIG_SECURITY_WRITABLE_HOOKS的值是否为y;
若否,则将内核配置参数CONFIG_SECURITY_WRITABLE_HOOKS的值设置为y,并重新编译内核。
4.如权利要求1-3中任一项所述的方法,其中,所述获取所述目标内核函数的挂钩函数链表地址的步骤包括:
从内核符号表中查找挂钩函数总链表的地址,所述挂钩函数总链表中的元素为各内核函数的挂钩函数链表地址;以及
从所述挂钩函数总链表中查找所述目标内核函数的挂钩函数链表地址。
5.如权利要求1-4中任一项所述的方法,还包括步骤:
根据目标安全访问策略模块的回调信息数组,确定目标内核函数的挂钩函数链表地址以及挂钩函数在挂钩函数链表中的位置;
删除挂钩函数链表中的所述挂钩函数;以及
删除所述回调信息数组中的所述目标内核函数的回调信息。
6.一种安全访问方法,在计算设备中执行,包括步骤:
接收上层应用发来的内核函数调用请求;
获取所述内核函数的挂钩函数链表地址,所述挂钩函数链表包括所述内核函数在至少一种安全访问策略下的挂钩函数,所述挂钩函数适于在目标安全访问策略模块进行设置,每个安全访问策略模块均对应于一个回调信息数组,回调信息数组中添加有目标内核函数的回调信息,所述回调信息包括内核函数的挂钩函数链表地址、挂钩函数在挂钩函数链表中的位置以及挂钩函数的地址;
依次调用所述挂钩函数链表中的各个挂钩函数,来判断所述调用请求的安全性;
在所有挂钩函数均判断所述调用请求安全时,调用所述内核函数;
其中,所述回调信息数组中的元素为结构体数据类型,所述结构体包括用于存储挂钩函数链表地址的结构体指针变量、用于存储挂钩函数在挂钩函数链表中的位置的结构体变量以及用于存储挂钩函数的地址的联合体变量;
所述结构体变量包括指向挂钩函数链表中的下一个元素的后指针变量,和指向挂钩函数链表中的上一个元素的前指针变量;
添加挂钩函数时,将所述挂钩函数的地址***所述挂钩函数链表的尾部,所述挂钩函数链表中的挂钩函数适于在内核接收到目标内核函数调用请求时被依次调用,所述挂钩函数包括至少一项安全规则,适于通过判断所述调用请求是否符合所述安全规则来确定所述调用请求是否安全。
7.如权利要求6所述的方法,其中,所述获取所述内核函数的挂钩函数链表地址的步骤包括:
从内核符号表中查找挂钩函数总链表的地址,所述挂钩函数总链表中的元素为各内核函数的挂钩函数链表地址;以及
从所述挂钩函数总链表中查找所述内核函数的挂钩函数链表地址。
8.一种计算设备,包括:
至少一个处理器;和
存储有程序指令的存储器;
当所述程序指令被所述处理器读取并执行时,使得所述计算设备执行如权利要求1-5中任一项所述的多安全访问策略控制方法和如权利要求6-7中任一项所述的安全访问方法。
9.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-5中任一项所述的多安全访问策略控制方法和如权利要求6-7中任一项所述的安全访问方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911055310 | 2019-10-31 | ||
CN2019110553102 | 2019-10-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111428241A CN111428241A (zh) | 2020-07-17 |
CN111428241B true CN111428241B (zh) | 2023-12-29 |
Family
ID=71545861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911206473.6A Active CN111428241B (zh) | 2019-10-31 | 2019-11-29 | 一种多安全访问策略控制方法及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111428241B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111797408B (zh) * | 2020-09-09 | 2020-12-29 | 北京志翔科技股份有限公司 | 基于linux***的可信计算方法及装置 |
CN112668008B (zh) * | 2021-01-06 | 2024-07-23 | 上海湖顶大数据科技有限公司 | 一种基于lsm来实现动态的***调用劫持的方法 |
CN112988544B (zh) * | 2021-04-20 | 2021-08-27 | 北京国科环宇科技股份有限公司 | 操作***性能瓶颈的分析方法、***、设备和存储介质 |
CN113485712B (zh) * | 2021-04-23 | 2024-05-07 | 武汉深之度科技有限公司 | 一种内核裁剪方法及计算设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104598809A (zh) * | 2015-02-13 | 2015-05-06 | 北京奇虎科技有限公司 | 程序的监控方法及其防御方法以及相关装置 |
CN105740028A (zh) * | 2016-03-03 | 2016-07-06 | 北京金山安全软件有限公司 | 一种访问控制方法及装置 |
CN106096400A (zh) * | 2016-06-06 | 2016-11-09 | 中国科学院信息工程研究所 | 一种Linux内核并行LSM框架实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8516509B2 (en) * | 2011-02-08 | 2013-08-20 | BlueStripe Software, Inc. | Methods and computer program products for monitoring system calls using safely removable system function table chaining |
-
2019
- 2019-11-29 CN CN201911206473.6A patent/CN111428241B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104598809A (zh) * | 2015-02-13 | 2015-05-06 | 北京奇虎科技有限公司 | 程序的监控方法及其防御方法以及相关装置 |
CN105740028A (zh) * | 2016-03-03 | 2016-07-06 | 北京金山安全软件有限公司 | 一种访问控制方法及装置 |
CN106096400A (zh) * | 2016-06-06 | 2016-11-09 | 中国科学院信息工程研究所 | 一种Linux内核并行LSM框架实现方法 |
Non-Patent Citations (1)
Title |
---|
Linux内核防火墙Netfilter架构实现与应用研究;吴勇杰;;电脑编程技巧与维护(第14期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111428241A (zh) | 2020-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111428241B (zh) | 一种多安全访问策略控制方法及计算设备 | |
US10528735B2 (en) | Malicious code protection for computer systems based on process modification | |
US9773102B2 (en) | Selective file access for applications | |
US20160232374A1 (en) | Permission control method and apparatus | |
JP5985631B2 (ja) | 信頼レベルのアクティブ化 | |
US10846101B2 (en) | Method and system for starting up application | |
US10019598B2 (en) | Dynamic service discovery | |
US8850573B1 (en) | Computing device with untrusted user execution mode | |
US8015450B1 (en) | Systems and methods for detecting and automatically installing missing software components | |
US8271995B1 (en) | System services for native code modules | |
JP2014508363A (ja) | アンチマルウェアメタデータのルックアップを行うためのシステム及び方法 | |
CN108647061B (zh) | ***隐藏方法的调用方法、装置和计算设备 | |
CN113204385B (zh) | 一种插件加载方法、装置、计算设备及可读存储介质 | |
US11416614B2 (en) | Statistical detection of firmware-level compromises | |
US20120331489A1 (en) | Bypassing user mode redirection | |
US7484239B1 (en) | Detecting heap and stack execution in the operating system using regions | |
CN112231198A (zh) | 一种恶意进程调试方法、装置、电子设备及介质 | |
US8578368B2 (en) | Injecting a file from the bios into an operating system | |
CN110442380B (zh) | 一种数据预热方法及计算设备 | |
US8935781B1 (en) | Native code module security for arm 64-bit instruction set architectures | |
US7281271B1 (en) | Exception handling validation system and method | |
US8788785B1 (en) | Systems and methods for preventing heap-spray attacks | |
US9448782B1 (en) | Reducing a size of an application package | |
CN111859403B (zh) | 依赖关系漏洞的确定方法、装置、电子设备及存储介质 | |
US9086895B1 (en) | Controlling hardware driver selection |
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 | ||
CB02 | Change of applicant information |
Address after: 17th Floor, Building 12, Yard 10, Kegu 1st Street, Beijing Economic and Technological Development Zone, Daxing District, Beijing 100176 (Beijing Pilot Free Trade Zone High-end Industry Zone Yizhuang Group) Applicant after: Beijing Tongxin Software Technology Co.,Ltd. Address before: 603, block B, Putian Desheng, No.28, xinjiekouwei street, Xicheng District, Beijing 100032 Applicant before: BEIJING SHENZHIDU TECHNOLOGY CO.,LTD. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |