执行系统调用的方法及装置制造方法及图纸

技术编号:16301498 阅读:36 留言:0更新日期:2017-09-26 19:36
本申请公开了一种执行系统调用的方法及装置,同时公开了另一种执行系统调用的方法及装置。所述第一种执行系统调用的方法包括:接收执行系统调用的请求;判断所述系统调用的执行者是否具有对所述系统调用的访问权限;若具有,则允许所述执行者执行所述系统调用。本申请提供的上述方法,在判断某一系统调用能否被执行时,是以执行者是否具有相应的访问权限作为依据,即,通过对执行者的授权达到限制系统调用的目的,从而实现了基于执行者身份的差异化控制,而且并没有对开放哪些系统调用加以限制,因此可以灵活地满足用户空间对系统调用的合理访问需求。

Method and device for executing system call

The present application discloses a method and a device for executing a system call, and discloses another method and device for executing the system call. The first method includes: receiving a system call execution execution system call request; determining whether the system call is the executor of system call access; if it has, to allow the performer to perform the system call. The method provided by the application, in the judgment of whether a system call is executed, the performer is to have the appropriate access rights as the basis, that is, to limit the system call objective through the implementation of the mandate, in order to control the alienation of executive identity based on the difference, and there are no restrictions on the what are the open system call, so it can be flexible to meet the user space of system calls and reasonable access requirements.

【技术实现步骤摘要】
执行系统调用的方法及装置
本申请涉及系统调用技术,具体涉及一种执行系统调用的方法及装置。本申请同时涉及另一种执行系统调用的方法及装置。
技术介绍
为了保证安全性,操作系统(例如Linux)的运行空间通常可以被划分为内核空间与用户空间,它们各自运行在不同的级别中,逻辑上相互隔离。应用程序在通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间函数。当用户程序需要获得系统服务或者访问系统核心功能时,这时就需要执行系统调用(syscall)。执行系统调用时通常通过软中断机制陷入内核,即进入内核空间,然后才能执行相应的系统服务例程。从逻辑上来说,系统调用可被看成是内核与用户空间交互的接口:把来自用户空间的请求传达给内核,待内核把请求处理完毕后再将处理结果送回给用户空间。在具体应用中,操作系统通常提供大量的系统调用,这些系统调用都暴露在用户空间,一方面在大多数应用程序的整个生命周期内,很多系统调用并没有被调用,另一方面,暴露在用户空间的系统调用有可能存在各种安全漏洞,如果被恶意利用,则可能为整个系统带来安全隐患,因此有必要对应用程序执行系统调用加以限制。例如,Linux系统支持一种简洁的Seccomp(securecomputing—安全计算模式)沙箱机制,提供了一种安全运行模式,在该模式下的应用程序进程只能调用4种系统调用,即read、write、exit和sigreturn,否则应用程序便会被终止。Seccomp沙箱机制虽然实现了对系统调用的限制,但是由于其对所有被控制进程是一视同仁的,不能做到差异化控制;而且由于仅开放了read、write、exit、sigreturn这4个系统调用,不具有可扩展性,无法满足用户空间对系统调用的合理访问需求。
技术实现思路
本申请实施例提供一种执行系统调用的方法及装置,以解决现有技术在对系统调用进行限制时无法实现差异化控制、以及开放的系统调用数量无法满足访问需求的问题。本申请实施例还提供另一种执行系统调用的方法及装置。本申请提供一种执行系统调用的方法,包括:接收执行系统调用的请求;判断所述系统调用的执行者是否具有对所述系统调用的访问权限;若具有,则允许所述执行者执行所述系统调用。可选的,所述判断所述系统调用的执行者是否具有对所述系统调用的访问权限,包括:获取所述系统调用所属类别;获取所述执行者对各类别系统调用的访问权限;根据所述获取的信息,判断所述执行者是否具有对所述系统调用所属类别的访问权限;其中,所述系统调用所属类别、以及所述执行者对各类别系统调用的访问权限是预先设定的。可选的,在所述接收执行系统调用的请求之前,执行下述操作:根据预先划分的系统调用类别,指定所述系统调用所属类别;设置所述执行者对各类别系统调用的访问权限。可选的,所述执行者对各类别系统调用的访问权限、以及所述系统调用所属类别分别采用二进制比特串描述,其长度分别与系统调用的类别数一致,所述两个二进制比特串中各比特位分别与相同序号的系统调用类别相对应;其中,描述所述访问权限的二进制比特串中的每个比特位的值表示所述执行者是否具有对相应类别系统调用的访问权限,描述所述系统调用所属类别的二进制比特串中的每个比特位的值表示所述系统调用是否属于相应类别,并且表示具有对相应类别系统调用的访问权限的值、与表示所述系统调用属于相应类别的值一致;所述根据所述获取的信息,判断所述执行者是否具有对所述系统调用所属类别的访问权限,包括:将描述所述访问权限的二进制比特串与描述所述系统调用所属类别的二进制比特串,逐位进行位运算;根据运算结果判定所述执行者是否具有对所述系统调用所属类别的访问权限。可选的,描述所述访问权限的二进制比特串中的1,表示所述执行者具有对相应类别系统调用的访问权限,0表示不具有;描述所述系统调用所属类别的二进制比特串中的1,表示所述系统调用属于相应类别,0表示不属于;所述逐位进行位运算,包括:逐位执行按位与操作;所述根据运算结果判定所述执行者是否具有对所述系统调用所属类别的访问权限,包括:若执行结果不全为0,则判定所述执行者具有对所述系统调用所属类别的访问权限。可选的,所述设置所述执行者对各类别系统调用的访问权限,采用如下方式实现:将所述执行者对各类别系统调用的访问权限与其身份标识信息对应存储;所述获取所述执行者对各类别系统调用的访问权限,包括:根据所述执行者的身份标识信息获取所述执行者的所述访问权限。可选的,所述身份标识信息包括:所述执行者的信任状信息。可选的,采用如下方式获取所述身份标识信息:从所述执行者的运行上下文信息中获取其身份标识信息。可选的,所述设置所述执行者对各类别系统调用的访问权限,包括:在创建所述执行者时,按照预设授权方案设置所述执行者对各类别系统调用的访问权限;或者,用创建者对各类别系统调用的访问权限设置所述执行者的相应访问权限。可选的,所述设置所述执行者对各类别系统调用的访问权限,还包括:在创建所述执行者之后、在运行所述执行者之前,按照预设方式降低所述执行者对各类别系统调用的访问权限。可选的,所述按照预设方式降低所述执行者对各类别系统调用的访问权限,包括:根据所述执行者的身份类别以及系统配置文件中针对所述身份类别的权限配置信息,降低所述执行者对各类别系统调用的访问权限;和/或,根据所述执行者所属应用程序的配置文件中的权限申明信息,降低所述执行者对各类别系统调用的访问权限。可选的,所述设置所述执行者对各类别系统调用的访问权限,还包括:所述执行者在运行过程中,在加载运行不可信代码之前降低其对各类别系统调用的访问权限。可选的,所述设置所述执行者对各类别系统调用的访问权限,还包括:在所述不可信代码运行完毕后,恢复所述执行者对各类别系统调用的访问权限。可选的,所述设置所述执行者对各类别系统调用的访问权限,还包括:所述执行者在运行过程中,在加载运行可信代码之前提高其对各类别系统调用的访问权限。可选的,在所述执行者运行之前,在设置所述执行者对各类别系统调用的访问权限时,还相应设置所述执行者对各类别系统调用的访问能力;所述执行者具有访问权限的系统调用类别集合是其具有访问能力的系统调用类别集合的子集;所述提高其对各类别系统调用的访问权限,包括:在所述执行者对各类别系统调用的访问能力之内,提高所述执行者的访问权限。可选的,在所述接收执行系统调用的请求之后,包括:根据所述系统调用的相关信息,确定其是否对应于预设的虚拟系统调用;若是,则判断所述系统调用的执行者是否具有对所述虚拟系统调用的访问权限,并在具有时,允许所述执行者执行所述虚拟系统调用;若否,则执行所述判断所述系统调用的执行者是否具有对所述系统调用的访问权限的步骤。可选的,所述系统调用的相关信息,包括:系统调用名称及参数值。可选的,所述执行者包括:可独立运行的基本单元;所述可独立运行的基本单元包括:线程或者进程。相应的,本申请还提供一种执行系统调用的装置,包括:请求接收单元,用于接收执行系统调用的请求;权限判断单元,用于判断所述系统调用的执行者是否具有对所述系统调用的访问权限;执行允许单元,用于当所述访问权限判断单元的输出为是时,允许所述执行者执行所述系统调用。可选的,所述权限判断单元,包括:类别获取本文档来自技高网
...
执行系统调用的方法及装置

【技术保护点】
一种执行系统调用的方法,其特征在于,包括:接收执行系统调用的请求;判断所述系统调用的执行者是否具有对所述系统调用的访问权限;若具有,则允许所述执行者执行所述系统调用。

【技术特征摘要】
1.一种执行系统调用的方法,其特征在于,包括:接收执行系统调用的请求;判断所述系统调用的执行者是否具有对所述系统调用的访问权限;若具有,则允许所述执行者执行所述系统调用。2.根据权利要求1所述的执行系统调用的方法,其特征在于,所述判断所述系统调用的执行者是否具有对所述系统调用的访问权限,包括:获取所述系统调用所属类别;获取所述执行者对各类别系统调用的访问权限;根据所述获取的信息,判断所述执行者是否具有对所述系统调用所属类别的访问权限;其中,所述系统调用所属类别、以及所述执行者对各类别系统调用的访问权限是预先设定的。3.根据权利要求2所述的执行系统调用的方法,其特征在于,在所述接收执行系统调用的请求之前,执行下述操作:根据预先划分的系统调用类别,指定所述系统调用所属类别;设置所述执行者对各类别系统调用的访问权限。4.根据权利要求2所述的执行系统调用的方法,其特征在于,所述执行者对各类别系统调用的访问权限、以及所述系统调用所属类别分别采用二进制比特串描述,其长度分别与系统调用的类别数一致,所述两个二进制比特串中各比特位分别与相同序号的系统调用类别相对应;其中,描述所述访问权限的二进制比特串中的每个比特位的值表示所述执行者是否具有对相应类别系统调用的访问权限,描述所述系统调用所属类别的二进制比特串中的每个比特位的值表示所述系统调用是否属于相应类别,并且表示具有对相应类别系统调用的访问权限的值、与表示所述系统调用属于相应类别的值一致;所述根据所述获取的信息,判断所述执行者是否具有对所述系统调用所属类别的访问权限,包括:将描述所述访问权限的二进制比特串与描述所述系统调用所属类别的二进制比特串,逐位进行位运算;根据运算结果判定所述执行者是否具有对所述系统调用所属类别的访问权限。5.根据权利要求4所述的执行系统调用的方法,其特征在于,描述所述访问权限的二进制比特串中的1,表示所述执行者具有对相应类别系统调用的访问权限,0表示不具有;描述所述系统调用所属类别的二进制比特串中的1,表示所述系统调用属于相应类别,0表示不属于;所述逐位进行位运算,包括:逐位执行按位与操作;所述根据运算结果判定所述执行者是否具有对所述系统调用所属类别的访问权限,包括:若执行结果不全为0,则判定所述执行者具有对所述系统调用所属类别的访问权限。6.根据权利要求3所述的执行系统调用的方法,其特征在于,所述设置所述执行者对各类别系统调用的访问权限,采用如下方式实现:将所述执行者对各类别系统调用的访问权限与其身份标识信息对应存储;所述获取所述执行者对各类别系统调用的访问权限,包括:根据所述执行者的身份标识信息获取所述执行者的所述访问权限。7.根据权利要求6所述的执行系统调用的方法,其特征在于,所述身份标识信息包括:所述执行者的信任状信息。8.根据权利要求6所述的执行系统调用的方法,其特征在于,采用如下方式获取所述身份标识信息:从所述执行者的运行上下文信息中获取其身份标识信息。9.根据权利要求3所述的执行系统调用的方法,其特征在于,所述设置所述执行者对各类别系统调用的访问权限,包括:在创建所述执行者时,按照预设授权方案设置所述执行者对各类别系统调用的访问权限;或者,用创建者对各类别系统调用的访问权限设置所述执行者的相应访问权限。10.根据权利要求9所述的执行系统调用的方法,其特征在于,所述设置所述执行者对各类别系统调用的访问权限,还包括:在创建所述执行者之后、在运行所述执行者之前,按照预设方式降低所述执行者对各类别系统调用的访问权限。11.根据权利要求10所述的执行系统调用的方法,其特征在于,所述按照预设方式降低所述执行者对各类别系统调用的访问权限,包括:根据所述执行者的身份类别以及系统配置文件中针对所述身份类别的权限配置信息,降低所述执行者对各类别系统调用的访问权限;和/或,根据所述执行者所属应用程序的配置文件中的权限申明信息,降低所述执行者对各类别系统调用的访问权限。12.根据权利要求9所述的执行系统调用的方法,其特征在于,所述设置所述执行者对各类别系统调用的访问权限,还包括:所述执行者在运行过程中,在加载运行不可信代码之前降低其对各类别系统调用的访问权限。13.根据权利要求12所述的执行系统调用的方法,其特征在于,所述设置所述执行者对各类别系统调用的访问权限,还包括:在所述不可信代码运行完毕后,恢复所述执行者对各类别系统调用的访问权限。14.根据权利要求10所述的执行系统调用的方法,其特征在于,所述设置所述执行者对各类别系统调用的访问权限,还包括:所述执行者在运行过程中,在加载运行可信代码之前提高其对各类别系统调用的访问权限。15.根据权利要求14所述的执行系统调用的方法,其特征在于,在所述执行者运行之前,在设置所述执行者对各类别系统调用的访问权限时,还相应设置所述执行者对各类别系统调用的访问能力;所述执行者具有访问权限的系统调用类别集合是其具有访问能力的系统调用类别集合的子集;所述提高其对各类别系统调用的访问权限,包括:在所述执行者对各类别系统调用的访问能力之内,提高所述执行者的访问权限。16.根据权利要求1所述的执行系统调用的方法,其特征在于,在所述接收执行系统调用的请求之后,包括:根据所述系统调用的相关信息,确定其是否对应于预设的虚拟系统调用;若是,则判断所述系统调用的执行者是否具有对所述虚拟系统调用的访问权限,并在具有时,允许所述执行者执行所述虚拟系统调用;若否,则执行所述判断所述系统调用的执行者是否具有对所述系统调用的访问权限的步骤。17.根据权利要求16所述的执行系统调用的方法,其特征在于,所述系统调用的相关信息,包括:系统调用名称及参数值。18.根据权利要求1-17任一项所述的执行系统调用的方法,其特征在于,所述执行者包括:可独立运行的基本单元;所述可独立运行的基本单元包括:线程或者进程。19.一种执行系统调用的装置,其特征在于,包括:请求接收单元,用于接收执行系统调用的请求;权限判断单元,用于判断所述系统调用的执行者是否具有对所述系统调用的访问权限;执行允许单元,用于当所述访问权限判断单元的输出为是时,允许所述执行者执行所述系统调用。20.根据权利要求19所述的执行系统调用的装置,其特征在于,所述权限判断单元,包括:类别获取子单元,用于获取所述系统调用所属类别;访问权限获取子单元,用于获取所述执行者对各类别系统调用的访问权限;判断执行子单元,用于根据所述获取的信息,判断所述执行者是否具有对所述系统调用所属类别的访问权限。21....

【专利技术属性】
技术研发人员:裘绍翔许来光
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1