CN112817663B - 一种应用程序的seccomp规则获取方法和装置 - Google Patents
一种应用程序的seccomp规则获取方法和装置 Download PDFInfo
- Publication number
- CN112817663B CN112817663B CN202110220097.7A CN202110220097A CN112817663B CN 112817663 B CN112817663 B CN 112817663B CN 202110220097 A CN202110220097 A CN 202110220097A CN 112817663 B CN112817663 B CN 112817663B
- Authority
- CN
- China
- Prior art keywords
- application program
- function
- system call
- seccomp
- acquiring
- 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 67
- 230000006870 function Effects 0.000 claims description 186
- 238000004590 computer program Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 abstract description 23
- 238000012360 testing method Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying code
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明提供一种应用程序的SECCOMP规则获取方法和装置,基于重写的第一函数,实现对第二函数的调用。其中,第二函数中包含需要检测是否设置了禁用的所有系统调用。由目标应用程序运行时,通过第一函数调用第二函数生成的日志确定被该目标应用程序设置为禁用的系统调用,进而得到应用程序设置的SECCOMP规则。通过应用程序运行过程中的日志获取SECCOMP规则,无需对二进制文件进行分析,简化了分析过程,缩短了分析SECCOMP规则的耗时,同时无需对二进制文件进行分析,降低了对专业性的要求,便于满足更多场景下对获取SECCOMP规则的需求。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种应用程序的SECCOMP规则获取方法和装置。
背景技术
LINUX环境下,为了不被恶意代码拦截,应用程序通常使用SECCOMP机制设置规则限定自身的系统调用范围。在安全软件开发过程中,通常需要获取这些应用程序设置的SECCOMP规则。
现有技术中,要使用专业的ELF逆向工具对应用程序源程序的代码二进制指令(因为LINUX环境下,应用程序的存储格式是ELF二进制格式)逐条分析,获取这些应用程序设置的SECCOMP规则。然而这种方式存在如下缺点:1)由于LINUX发行版存在多种架构,每种架构都有各自的指令集,每种指令集都需要各自专业的逆向工具和专业知识,对分析人员的技术能力要求高。2)现有方法及工具都是主动分析方式。同时,每个LINUX发行版都有无数应用程序,每个应用程序都需要单独分析,这种情况决定了只能分析有限的应用程序。3)每个应用程序的ELF文件中都包含大量的指令,导致分析消耗的时间成本高。
可见,现有技术中直接基于应用程序的二进制文件分析应用程序的SECCOMP规则,分析过程复杂,耗时较长,专业性要求高。
发明内容
本发明提供一种应用程序的SECCOMP规则获取方法和装置,用以解决现有技术中直接基于应用程序的二进制文件分析应用程序的SECCOMP规则,分析过程复杂,耗时较长,专业性要求高的缺陷,实现了无需对二进制文件进行分析,简化了分析过程,缩短了分析SECCOMP规则的耗时,同时无需对二进制文件进行分析,降低了对专业性的要求,便于满足更多场景下对获取SECCOMP规则的需求。
本发明提供一种应用程序的SECCOMP规则获取方法,包括:
获取基于设定系统调用进行重写得到的第一函数,以及通过所述第一函数被调用的第二函数;其中,所述第二函数包括所述操作系统中除所述设定系统调用之外的系统调用;所述设定系统调用为操作系统中支持应用程序运行必须存在的系列的系统调用;
获取目标应用程序运行时,通过所述第一函数调用所述第二函数生成的日志;其中,所述目标应用程序为待获取SECCOMP规则的应用程序;
根据所述日志中的SECCOMP错误信息,确定所述目标应用程序中设置为禁用的系统调用,根据所述目标应用程序中设置为禁用的系统调用确定所述SECCOMP规则。
根据本发明提供一种应用程序的SECCOMP规则获取方法,在上述基础上,在获取基于设定系统调用进行重写得到的第一函数之前,还包括:
将所述操作系统中open系列的系统调用作为所述设定系统调用;
基于所述设定系统调用进行重写,使得重写后的设定系统调用在被调用时对所述第二函数进行调用,将重写后的设定系统调用作为所述第一函数。
根据本发明提供一种应用程序的SECCOMP规则获取方法,在上述基础上,在获取基于设定系统调用进行重写得到的第一函数之后,还包括:
通过LD_PRELOAD装载基于所述第一函数和所述第二函数生成的动态库,以使得所述目标应用程序运行时调用所述第一函数。
根据本发明提供一种应用程序的SECCOMP规则获取装置,在上述基础上,所述第二函数中包括除所述设定系统调用之外的所有系统调用,或者,所述第二函数中包括用户配置的除所述设定系统调用之外的系统调用。
根据本发明提供一种应用程序的SECCOMP规则获取方法,在上述基础上,所述获取目标应用程序运行时,通过所述第一函数调用所述第二函数生成的日志,包括:
循环执行系统调用删除操作,直到所述目标应用程序运行时,通过所述第一函数调用当前的第二函数生成的日志中不存在SECCOMP错误信息,获取本次执行系统调用删除操作生成的日志;
其中,所述系统调用删除操作包括:
运行所述目标应用程序,使得所述目标应用程序调用所述第一函数;
若所述目标应用程序运行时,通过所述第一函数调用当前的第二函数生成的日志中存在SECCOMP错误信息,则将SECCOMP错误信息对应的系统调用从当前的第二函数中删除。
根据本发明提供一种应用程序的SECCOMP规则获取方法,在上述基础上,所述获取目标应用程序运行时,通过所述第一函数调用所述第二函数生成的日志之前,还包括:
获取应用程序列表;其中,所述应用程序列表包括用户配置的待获取SECCOMP规则的应用程序;
每次从所述应用程序列表中获取任一还未获取SECCOMP规则的应用程序,作为所述目标应用程序,直到获取了所述应用程序列表中每一应用程序的SECCOMP规则。
根据本发明提供一种应用程序的SECCOMP规则获取方法,在上述基础上,所述根据所述日志中的SECCOMP错误信息,获取所述目标应用程序中设置为禁用的系统调用,包括:
获取所述日志中SECCOMP错误信息对应的系统调用号,根据系统调用号与系统调用之间的对应关系,确定与所述系统调用号对应的系统调用,作为所述目标应用程序中设置为禁用的系统调用;
其中,所述对应关系从操作系统的系统头文件中获取。
本发明还提供一种应用程序的SECCOMP规则获取装置,包括:
第一获取单元,用于获取基于设定系统调用进行重写得到的第一函数,以及通过所述第一函数被调用的第二函数;其中,所述第二函数包括所述操作系统中除所述设定系统调用之外的系统调用;所述设定系统调用为操作系统中支持应用程序运行必须存在的系列的系统调用;
第二获取单元,用于获取目标应用程序运行时,通过所述第一函数调用所述第二函数生成的日志;其中,所述目标应用程序为待获取SECCOMP规则的应用程序;
确定单元,用于根据所述日志中的SECCOMP错误信息,确定所述目标应用程序中设置为禁用的系统调用,根据所述目标应用程序中设置为禁用的系统调用确定所述SECCOMP规则。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述应用程序的SECCOMP规则获取方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述应用程序的SECCOMP规则获取方法的步骤。
本发明提供的一种应用程序的SECCOMP规则获取方法和装置,基于重写的第一函数,实现对第二函数的调用。其中,第二函数中包含需要检测是否设置了禁用的所有系统调用。由目标应用程序运行时,通过第一函数调用第二函数生成的日志确定被该目标应用程序设置为禁用的系统调用,进而得到应用程序设置的SECCOMP规则。通过应用程序运行过程中的日志获取SECCOMP规则,无需对二进制文件进行分析,简化了分析过程,缩短了分析SECCOMP规则的耗时,同时无需对二进制文件进行分析,降低了对专业性的要求,便于满足更多场景下对获取SECCOMP规则的需求。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的应用程序的SECCOMP规则获取方法的流程示意图之一;
图2是本发明提供的SECCOMP规则获取的实现原理示意图;
图3是本发明提供的应用程序的SECCOMP规则获取装置的结构框图之一;
图4是本发明提供的电子设备的实体结构示意图;
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,SECCOMP规则通常是开发人员对应用程序设置的禁用某些系统调用的规则。然而在一些场景中需要获知应用程序的SECCOMP规则,例如,在开发安全软件的过程中,需要知道每一应用程序设置的SECCOMP规则,才能确定该应用程序可能是通过哪些系统调用受到攻击(即应用程序不可能因为禁用的系统调用受到攻击),从而对其提供更好的安全保障。
图1为本实施例提供的应用程序的SECCOMP规则获取方法的流程示意图,该方法可以由终端或者服务器执行,本实施例对此不作具体限制。参见图1,该方法包括:
步骤101:获取基于设定系统调用进行重写得到的第一函数,以及通过所述第一函数被调用的第二函数;其中,所述第二函数包括所述操作系统中除所述设定系统调用之外的系统调用;所述设定系统调用为操作系统中支持应用程序运行必须存在的系统调用。
设定系统调用可以是open系列系统调用。
第一函数是对设定系统调用进行重写得到的函数,对设定系统调用进行重写的目的是为了使得应用程序调用该重写的设定系统调用时,能够对第二函数中的系统调用进行逐一调用,从而根据对第二函数中的系统调用生成的日志,判断哪些系统调用时被禁用的。
步骤102:获取目标应用程序运行时,通过所述第一函数调用所述第二函数生成的日志;其中,所述目标应用程序为待获取SECCOMP规则的应用程序。
步骤103:根据所述日志中的SECCOMP错误信息,确定所述目标应用程序中设置为禁用的系统调用,根据所述目标应用程序中设置为禁用的系统调用确定所述SECCOMP规则。
当目标应用程序运行时调用了SECCOMP规则中设置为禁用的系统调用时,就会出现SECCOMP错误信息,且SECCOMP错误信息中会记录产生SECCOMP错误信息的系统调用号,进而能够根据该系统调用号确定SECCOMP规则中配置的被禁用的系统调用。
本实施例提供的一种应用程序的SECCOMP规则获取方法,基于重写的第一函数,实现对第二函数的调用。其中,第二函数中包含需要检测是否设置了禁用的所有系统调用。由目标应用程序运行时,通过第一函数调用第二函数生成的日志确定被该目标应用程序设置为禁用的系统调用,进而得到应用程序设置的SECCOMP规则。通过应用程序运行过程中的日志获取SECCOMP规则,无需对二进制文件进行分析,简化了分析过程,缩短了分析SECCOMP规则的耗时,同时无需对二进制文件进行分析,降低了对专业性的要求,便于满足更多场景下对获取SECCOMP规则的需求。
具体地,通过本实施例提供的方法实现SECCOMP规则的获取,具有如下优点:分析人员只需要掌握Linux C的开发技术就可以完成分析,降低了专业性要求。分析过程由应用程序自动化完成,可以对大量应用程序批量分析。分析过程简单,分析迅速且准确。
为了更好地阐述本申请提供的方案,图2为本实施例提供的SECCOMP规则获取的实现原理示意图,参见图2,可以在现有的操作系统的基础上生成两个功能模块,一个是分析模块,一个为测试模块。分析模块用于生成上述的第一函数和第二函数,测试模块用于基于分析模块提供的第一函数和第二函数,控制应用程序运行,进而得到应用程序运行生成的日志,从而通过日志确定应用程序对应的SECCOMP规则。
进一步地,在上述各实施例的基础上,在获取基于设定系统调用进行重写得到的第一函数之前,还包括:
将所述操作系统中open系列的系统调用作为所述设定系统调用;
基于所述设定系统调用进行重写,使得重写后的设定系统调用在被调用时对所述第二函数进行调用,将重写后的设定系统调用作为所述第一函数。
由于所有的应用程序运行时均需要调用open系列的系统调用,因此,本实施例将open系列的系统调用作为设定系统调用。对该设定系统调用进行重写,得到能够调用第二函数(即操作系统中除了open系列的系统调用之外的系统调用)的系统调用,即第一函数。
本实施例中,通过改写open系列的系统调用,使得应用程序运行时在调用改写后的open系列的系统调用时,对第二函数中的系统调用进行调用,实现了应用程序对第二函数中系统调用的控制。
进一步地,在上述各实施例的基础上,在获取基于设定系统调用进行重写得到的第一函数之后,还包括:
通过LD_PRELOAD装载基于所述第一函数和所述第二函数生成的动态库,以使得所述目标应用程序运行时调用所述第一函数。
在LINUX环境下,可以通过LD_PRELOAD使得第一函数比系统原生的open系列的系统调用更早被加载,从而使得应用程序调用改写的open系列的系统调用(即第一函数),而不是系统原生的open系列的系统调用。
具体地,可以在操作系统ETC下的LD.so.preload中写入动态库的路径,从而使得在应用程序运行时,动态库中的第一函数比系统原生的open系列的系统调用更早被加载。
本实施例中,通过LD_PRELOAD机制使得应用程序能够调用第一函数,进而实现对第二函数中系统调用的调用。
进一步地,在上述各实施例的基础上,所述第二函数中包括除所述设定系统调用之外的所有系统调用,或者,所述第二函数中包括用户配置的除所述设定系统调用之外的系统调用。
需要说明的是,第二函数中的系统调用,可以是除了除所述设定系统调用之外的所有系统调用,也可以是用户根据需求设置的一些系统调用,本实施例对此不作具体限制。
本实施例中,第二函数中的系统调用可以进行调整,由此用户可以根据需求设置第二函数。
具体如图2所示,关于上述分析模块的开发过程,包括如下内容:
①从系统头文件获取所有系统调用以及对应的系统调用号。
②实现功能函数A(即上述第二函数),A函数中需要调用所有的系统调用,并且可以根据分析模块配置文件动态配置。
③实现功能函数B(即上述第一函数),B函数重写操作系统的open系列系统调用,调用功能函数A,并使用dlsym获取到系统原函数并调用。
④完成以上开发后编译成动态库。
进一步地,在上述各实施例的基础上,所述获取目标应用程序运行时,通过所述第一函数调用所述第二函数生成的日志,包括:
循环执行系统调用删除操作,直到所述目标应用程序运行时,通过所述第一函数调用当前的第二函数生成的日志中不存在SECCOMP错误信息,获取本次执行系统调用删除操作生成的日志;
其中,所述系统调用删除操作包括:
运行所述目标应用程序,使得所述目标应用程序调用所述第一函数;
若所述目标应用程序运行时,通过所述第一函数调用当前的第二函数生成的日志中存在SECCOMP错误信息,则将SECCOMP错误信息对应的系统调用从当前的第二函数中删除。
其中,在所述目标应用程序调用所述第一函数的过程中,还通过dlsym调用操作系统原生的open系列系统调用,并向所述目标应用程序返回由操作系统原生的open系列系统调用确定的执行结果。
由于目标应用程序运行的过程中,若运行到禁用的系统调用,则无法继续运行以对第二函数中还未调用的系统调用进行调用,因此,本实施例通过系统调用删除操作,每次将禁用的系统调用删除后再重新执行目标应用程序,直到目标应用程序对第二函数中的每一系统调用进行了调用。此时,目标应用程序生成的所有日志中记录了第二函数中每一系统调用的调用过程。
本实施例中,通过循环执行系统调用删除操作,使得目标应用程序对第二函数中的所有系统调用实现了调用过程,进而能够基于每一系统调用进行是否禁用的检测,从而能够准确获取到该目标应用程序对应的SECCOMP规则。
进一步地,在上述各实施例的基础上,所述获取目标应用程序运行时,通过所述第一函数调用所述第二函数生成的日志之前,还包括:
获取应用程序列表;其中,所述应用程序列表包括用户配置的待获取SECCOMP规则的应用程序,
每次从所述应用程序列表中获取任一还未获取SECCOMP规则的应用程序,作为所述目标应用程序,直到获取了所述应用程序列表中每一应用程序的SECCOMP规则。
用户可以预先将所有待获取SECCOMP规则的应用程序写入应用程序列表,之后通过遍历应用程序列表的方式对每一应用程序实现SECCOMP规则的获取。
本实施例中,通过应用程序列表实现了对每一应用程序确定SECCOMP规则的过程。
参见图2,测试模块需要满足以下需求:
①通过测试模块配置文件获得待测试应用程序列表。
②根据列表逐个运行应用程序并获取运行结果。
③运行结果中如果由SECCOMP错误信息就从错误信息中提取出错误系统调用号。
④通过分析模块开发①中得到的系统调用号和系统调用之间对应关系得到系统调用,这即是SECCOMP规则,并把触发这一错误信息的应用程序名称和SECCOMP记录到测试模块结果文件中。
⑤遍历完所有的待测应用程序,从分析模块配置文件中删除测试模块结果文件包含的系统调用。
⑥重新运行②,③,④,⑤直到没有新的SECCOMP产生。
⑦完成以上开发编译成应用程序。
进一步地,在上述各实施例的基础上,所述根据所述日志中的SECCOMP错误信息,获取所述目标应用程序中设置为禁用的系统调用,包括:
获取所述日志中SECCOMP错误信息对应的系统调用号,根据系统调用号与系统调用之间的对应关系,确定与所述系统调用号对应的系统调用,作为所述目标应用程序中设置为禁用的系统调用;
其中,所述对应关系从操作系统的系统头文件中获取。
本实施例中,通过预先获取的对应关系,通过日志中SECCOMP错误信息对应的系统调用号确定了被目标应用程序禁用的系统调用,所有禁用的系统调用即为该目标应用程序的SECCOMP规则。
具体地,图2中的过程可以简单概况为如下内容:
①在分析模块配置文件中配置所有的系统调用。
②使用LD_PRELOAD技术装载分析模块。
③在测试模块配置文件中配置待测的应用程序。
④运行测试模块。
⑤测试模块运行结束后,待测应用程序对应的SECCOMP规则记录在测试模块结果文件中。
图2提供的方案中,分析模块是一个动态库,它有两个功能函数,第一个功能函数(功能函数A)是通过读入磁盘上的分析模块配置文件,配置文件中记录了系统调用列表,根据配置文件设置使用的系统调用;第二个功能函数(功能函数B)是拦截关键系统调用的函数,并调用第一个功能函数。
测试模块是一个应用程序,它的运行过程是:第一步,测试模块读入磁盘上的测试模块配置文件,配置文件中记录了待测试的应用程序列表,根据配置文件逐个运行被测试的应用程序,获取运行结果并从中提取SECCOMP规则,将当前被测试的应用程序信息和分析得到的SECCOMP规则纪录到磁盘上的测试模块结果文件,测试完测试模块配置文件中的所有应用程序之后,根据测试模块结果文件的SECCOMP规则配置分析模块配置文件;第二步,重新执行第一步,直到没有新的SECCOMP规则产生。
通过上述过程,达到了如下效果:
直接附加到待测试程序,可以不使用逆向工具获得SECCOMP的规则。
由操作系统将分析模块附加到待测试程序,分析模块被动分析处理,可以批量自动分析待测试程序的SECCOMP的规则。
分析过程由装置自动完成,降低实施难度并且提高分析效率。
图3为本实施例提供的应用程序的SECCOMP规则获取装置的结构框图,参见图3,该应用程序的SECCOMP规则获取装置包括第一获取单元301、第二获取单元302和确定单元303,其中,
第一获取单元301,用于获取基于设定系统调用进行重写得到的第一函数,以及通过所述第一函数被调用的第二函数;其中,所述第二函数包括所述操作系统中除所述设定系统调用之外的系统调用;所述设定系统调用为操作系统中支持应用程序运行必须存在的系列的系统调用;
第二获取单元302,用于获取目标应用程序运行时,通过所述第一函数调用所述第二函数生成的日志;其中,所述目标应用程序为待获取SECCOMP规则的应用程序;
确定单元303,用于根据所述日志中的SECCOMP错误信息,确定所述目标应用程序中设置为禁用的系统调用,根据所述目标应用程序中设置为禁用的系统调用确定所述SECCOMP规则。
本实施例提供的应用程序的SECCOMP规则获取装置适用于上述各实施例提供的应用程序的SECCOMP规则获取方法,在此不再赘述。
本实施例提供的一种应用程序的SECCOMP规则获取装置,基于重写的第一函数,实现对第二函数的调用。其中,第二函数中包含需要检测是否设置了禁用的所有系统调用。由目标应用程序运行时,通过第一函数调用第二函数生成的日志确定被该目标应用程序设置为禁用的系统调用,进而得到应用程序设置的SECCOMP规则。通过应用程序运行过程中的日志获取SECCOMP规则,无需对二进制文件进行分析,简化了分析过程,缩短了分析SECCOMP规则的耗时,同时无需对二进制文件进行分析,降低了对专业性的要求,便于满足更多场景下对获取SECCOMP规则的需求。
根据本发明提供一种应用程序的SECCOMP规则获取装置,在上述基础上,在获取基于设定系统调用进行重写得到的第一函数之前,还包括:
将所述操作系统中open系列的系统调用作为所述设定系统调用;
基于所述设定系统调用进行重写,使得重写后的设定系统调用在被调用时对所述第二函数进行调用,将重写后的设定系统调用作为所述第一函数。
根据本发明提供一种应用程序的SECCOMP规则获取装置,在上述基础上,在获取基于设定系统调用进行重写得到的第一函数之后,还包括:
通过LD_PRELOAD装载基于所述第一函数和所述第二函数生成的动态库,以使得所述目标应用程序运行时调用所述第一函数。
根据本发明提供一种应用程序的SECCOMP规则获取装置,在上述基础上,所述第二函数中包括除所述设定系统调用之外的所有系统调用,或者,所述第二函数中包括用户配置的除所述设定系统调用之外的系统调用。
根据本发明提供一种应用程序的SECCOMP规则获取装置,在上述基础上,所述获取目标应用程序运行时,通过所述第一函数调用所述第二函数生成的日志,包括:
循环执行系统调用删除操作,直到所述目标应用程序运行时,通过所述第一函数调用当前的第二函数生成的日志中不存在SECCOMP错误信息,获取本次执行系统调用删除操作生成的日志;
其中,所述系统调用删除操作包括:
运行所述目标应用程序,使得所述目标应用程序调用所述第一函数;
若所述目标应用程序运行时,通过所述第一函数调用当前的第二函数生成的日志中存在SECCOMP错误信息,则将SECCOMP错误信息对应的系统调用从当前的第二函数中删除。
根据本发明提供一种应用程序的SECCOMP规则获取装置,在上述基础上,所述获取目标应用程序运行时,通过所述第一函数调用所述第二函数生成的日志之前,还包括:
获取应用程序列表;其中,所述应用程序列表包括用户配置的待获取SECCOMP规则的应用程序;
每次从所述应用程序列表中获取任一还未获取SECCOMP规则的应用程序,作为所述目标应用程序,直到获取了所述应用程序列表中每一应用程序的SECCOMP规则。
根据本发明提供一种应用程序的SECCOMP规则获取装置,在上述基础上,所述根据所述日志中的SECCOMP错误信息,获取所述目标应用程序中设置为禁用的系统调用,包括:
获取所述日志中SECCOMP错误信息对应的系统调用号,根据系统调用号与系统调用之间的对应关系,确定与所述系统调用号对应的系统调用,作为所述目标应用程序中设置为禁用的系统调用;
其中,所述对应关系从操作系统的系统头文件中获取。
图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器910,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行应用程序的SECCOMP规则获取方法,该方法包括:
获取基于设定系统调用进行重写得到的第一函数,以及通过所述第一函数被调用的第二函数;其中,所述第二函数包括所述操作系统中除所述设定系统调用之外的系统调用;所述设定系统调用为操作系统中支持应用程序运行必须存在的系列的系统调用;
获取目标应用程序运行时,通过所述第一函数调用所述第二函数生成的日志;其中,所述目标应用程序为待获取SECCOMP规则的应用程序;
根据所述日志中的SECCOMP错误信息,确定所述目标应用程序中设置为禁用的系统调用,根据所述目标应用程序中设置为禁用的系统调用确定所述SECCOMP规则。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行应用程序的SECCOMP规则获取方法,该方法包括:
获取基于设定系统调用进行重写得到的第一函数,以及通过所述第一函数被调用的第二函数;其中,所述第二函数包括所述操作系统中除所述设定系统调用之外的系统调用;所述设定系统调用为操作系统中支持应用程序运行必须存在的系列的系统调用;
获取目标应用程序运行时,通过所述第一函数调用所述第二函数生成的日志;其中,所述目标应用程序为待获取SECCOMP规则的应用程序;
根据所述日志中的SECCOMP错误信息,确定所述目标应用程序中设置为禁用的系统调用,根据所述目标应用程序中设置为禁用的系统调用确定所述SECCOMP规则。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行应用程序的SECCOMP规则获取方法,该方法包括:
获取基于设定系统调用进行重写得到的第一函数,以及通过所述第一函数被调用的第二函数;其中,所述第二函数包括所述操作系统中除所述设定系统调用之外的系统调用;所述设定系统调用为操作系统中支持应用程序运行必须存在的系列的系统调用;
获取目标应用程序运行时,通过所述第一函数调用所述第二函数生成的日志;其中,所述目标应用程序为待获取SECCOMP规则的应用程序;
根据所述日志中的SECCOMP错误信息,确定所述目标应用程序中设置为禁用的系统调用,根据所述目标应用程序中设置为禁用的系统调用确定所述SECCOMP规则。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种应用程序的SECCOMP规则获取方法,其特征在于,包括:
获取基于设定系统调用进行重写得到的第一函数,以及通过所述第一函数被调用的第二函数;其中,所述第二函数包括操作系统中除所述设定系统调用之外的系统调用;所述设定系统调用为操作系统中支持应用程序运行必须存在的系列的系统调用;
获取目标应用程序运行时,通过所述第一函数调用所述第二函数生成的日志;其中,所述目标应用程序为待获取SECCOMP规则的应用程序;
根据所述日志中的SECCOMP错误信息,确定所述目标应用程序中设置为禁用的系统调用,根据所述目标应用程序中设置为禁用的系统调用确定所述SECCOMP规则;
所述获取目标应用程序运行时,通过所述第一函数调用所述第二函数生成的日志,包括:
循环执行系统调用删除操作,直到所述目标应用程序运行时,通过所述第一函数调用当前的第二函数生成的日志中不存在SECCOMP错误信息,获取本次执行系统调用删除操作生成的日志;
其中,所述系统调用删除操作包括:
运行所述目标应用程序,使得所述目标应用程序调用所述第一函数;
若所述目标应用程序运行时,通过所述第一函数调用当前的第二函数生成的日志中存在SECCOMP错误信息,则将SECCOMP错误信息对应的系统调用从当前的第二函数中删除。
2.根据权利要求1所述的应用程序的SECCOMP规则获取方法,其特征在于,在获取基于设定系统调用进行重写得到的第一函数之前,还包括:
将所述操作系统中open系列的系统调用作为所述设定系统调用;
基于所述设定系统调用进行重写,使得重写后的设定系统调用在被调用时对所述第二函数进行调用,将重写后的设定系统调用作为所述第一函数。
3.根据权利要求1所述的应用程序的SECCOMP规则获取方法,其特征在于,在获取基于设定系统调用进行重写得到的第一函数之后,还包括:
通过LD_PRELOAD装载基于所述第一函数和所述第二函数生成的动态库,以使得所述目标应用程序运行时调用所述第一函数。
4.根据权利要求1所述的应用程序的SECCOMP规则获取方法,其特征在于,所述第二函数中包括除所述设定系统调用之外的所有系统调用,或者,所述第二函数中包括用户配置的除所述设定系统调用之外的系统调用。
5.根据权利要求1所述的应用程序的SECCOMP规则获取方法,其特征在于,所述获取目标应用程序运行时,通过所述第一函数调用所述第二函数生成的日志之前,还包括:
获取应用程序列表;其中,所述应用程序列表包括用户配置的待获取SECCOMP规则的应用程序;
每次从所述应用程序列表中获取任一还未获取SECCOMP规则的应用程序,作为所述目标应用程序,直到获取了所述应用程序列表中每一应用程序的SECCOMP规则。
6.根据权利要求1所述的应用程序的SECCOMP规则获取方法,其特征在于,所述根据所述日志中的SECCOMP错误信息,获取所述目标应用程序中设置为禁用的系统调用,包括:
获取所述日志中SECCOMP错误信息对应的系统调用号,根据系统调用号与系统调用之间的对应关系,确定与所述系统调用号对应的系统调用,作为所述目标应用程序中设置为禁用的系统调用;
其中,所述对应关系从操作系统的系统头文件中获取。
7.一种应用程序的SECCOMP规则获取装置,其特征在于,包括:
第一获取单元,用于获取基于设定系统调用进行重写得到的第一函数,以及通过所述第一函数被调用的第二函数;其中,所述第二函数包括操作系统中除所述设定系统调用之外的系统调用;所述设定系统调用为操作系统中支持应用程序运行必须存在的系列的系统调用;
第二获取单元,用于获取目标应用程序运行时,通过所述第一函数调用所述第二函数生成的日志;其中,所述目标应用程序为待获取SECCOMP规则的应用程序;
确定单元,用于根据所述日志中的SECCOMP错误信息,确定所述目标应用程序中设置为禁用的系统调用,根据所述目标应用程序中设置为禁用的系统调用确定所述SECCOMP规则;
所述第二获取单元,进一步用于:
循环执行系统调用删除操作,直到所述目标应用程序运行时,通过所述第一函数调用当前的第二函数生成的日志中不存在SECCOMP错误信息,获取本次执行系统调用删除操作生成的日志;
其中,所述系统调用删除操作包括:
运行所述目标应用程序,使得所述目标应用程序调用所述第一函数;
若所述目标应用程序运行时,通过所述第一函数调用当前的第二函数生成的日志中存在SECCOMP错误信息,则将SECCOMP错误信息对应的系统调用从当前的第二函数中删除。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述的应用程序的SECCOMP规则获取方法的步骤。
9.一种非暂态可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至6任一项所述的应用程序的SECCOMP规则获取方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110220097.7A CN112817663B (zh) | 2021-02-26 | 2021-02-26 | 一种应用程序的seccomp规则获取方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110220097.7A CN112817663B (zh) | 2021-02-26 | 2021-02-26 | 一种应用程序的seccomp规则获取方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112817663A CN112817663A (zh) | 2021-05-18 |
CN112817663B true CN112817663B (zh) | 2023-12-22 |
Family
ID=75864178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110220097.7A Active CN112817663B (zh) | 2021-02-26 | 2021-02-26 | 一种应用程序的seccomp规则获取方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112817663B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681855A (zh) * | 2012-05-25 | 2012-09-19 | 南京邮电大学 | 一种面向无线传感网的模型到代码的转化方法 |
CN107145445A (zh) * | 2017-05-05 | 2017-09-08 | 携程旅游信息技术(上海)有限公司 | 软件自动化测试的报错日志的自动分析方法和系统 |
CN109614469A (zh) * | 2018-12-03 | 2019-04-12 | 郑州云海信息技术有限公司 | 一种日志分析方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9575864B2 (en) * | 2014-06-02 | 2017-02-21 | Microsoft Technology Licensing, Llc | Function-level dynamic instrumentation |
JP6951375B2 (ja) * | 2019-03-11 | 2021-10-20 | 株式会社東芝 | 情報処理装置、情報処理方法及びプログラム |
-
2021
- 2021-02-26 CN CN202110220097.7A patent/CN112817663B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681855A (zh) * | 2012-05-25 | 2012-09-19 | 南京邮电大学 | 一种面向无线传感网的模型到代码的转化方法 |
CN107145445A (zh) * | 2017-05-05 | 2017-09-08 | 携程旅游信息技术(上海)有限公司 | 软件自动化测试的报错日志的自动分析方法和系统 |
CN109614469A (zh) * | 2018-12-03 | 2019-04-12 | 郑州云海信息技术有限公司 | 一种日志分析方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112817663A (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20160283357A1 (en) | Call stack relationship acquiring method and apparatus | |
KR20150042297A (ko) | 동적으로 로딩하는 그래프 기반 계산 | |
CN107015841B (zh) | 一种程序编译的预处理方法及程序编译设备 | |
US9116714B2 (en) | Methods and systems for file processing | |
CN107463485B (zh) | 基于方法栈的日志获取方法、装置和终端 | |
CN114386045B (zh) | 一种Web应用程序漏洞检测方法、装置及存储介质 | |
WO2015003452A1 (en) | Methods and systems for file processing | |
CN110727476A (zh) | 一种授权配置文件的生成方法、装置、设备及存储介质 | |
CN114528204A (zh) | 处理代码的方法、处理异常的方法以及各自的装置 | |
CN112817663B (zh) | 一种应用程序的seccomp规则获取方法和装置 | |
CN111625225A (zh) | 一种程序指定数据输出方法和装置 | |
CN110045952B (zh) | 代码调用方法与装置 | |
CN113778838A (zh) | 二进制程序动态污点分析方法及装置 | |
CN116069650A (zh) | 一种测试用例的生成方法及装置 | |
CN115617668A (zh) | 一种兼容性测试方法、装置及设备 | |
CN114691496A (zh) | 单元测试方法、装置、计算设备及介质 | |
US10838748B2 (en) | System and method of emulating execution of files based on emulation time | |
US10678916B2 (en) | Malicious program detection | |
CN113934632A (zh) | 代码检测方法及装置 | |
CN111459547A (zh) | 一种函数调用链路的展示方法和装置 | |
CN116775040B (zh) | 实现代码疫苗的插桩方法及基于代码疫苗的应用测试方法 | |
CN111625463B (zh) | 一种程序状态检测方法和装置 | |
KR102271273B1 (ko) | 네이티브 코드 분석방지 우회를 위한 프로세스 래핑 방법, 이를 수행하기 위한 기록 매체 및 장치 | |
CN114518913A (zh) | 程序执行方法、程序处理方法以及相关设备 | |
CN117331830A (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 |