CN115917539A - 确保系统调用的安全的方法、实施关联安全策略的方法、和执行这些方法的设备 - Google Patents
确保系统调用的安全的方法、实施关联安全策略的方法、和执行这些方法的设备 Download PDFInfo
- Publication number
- CN115917539A CN115917539A CN202180043947.9A CN202180043947A CN115917539A CN 115917539 A CN115917539 A CN 115917539A CN 202180043947 A CN202180043947 A CN 202180043947A CN 115917539 A CN115917539 A CN 115917539A
- Authority
- CN
- China
- Prior art keywords
- security
- namespace
- kernel
- security policy
- ker
- 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.)
- Pending
Links
Images
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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2113—Multi-level security, e.g. mandatory access control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
用于确保系统调用的安全的方法、用于实施关联安全策略的方法、以及用于执行这些方法的设备。所述确保安全的方法确保由软件系统的用户空间的当前进程触发的至少一个系统调用。所述方法在执行由所述至少一个系统调用触发的至少一个操作之前由所述软件系统的内核实施,并且包括:用于获得所述内核的至少一个命名空间的步骤(E30),所述命名空间专门用于与所述当前进程相关联的安全管理;用于执行与所述操作相关联的、并在所述内核(KER)的区域(ZPS)中记录的安全策略的步骤(E50),所述区域在所述命名空间中定义;用于获得专门用于安全管理的至少一个命名空间(ENSECURE0)和所述当前进程(p1)的命名空间(ENSECURE1)的祖先的步骤(E30);用于执行与所述操作相关联的、并在祖先命名空间中定义的所述内核(KER)的区域(ZPS)中记录的安全策略的步骤(E50);以及用于根据所述执行的结果(RET)处理所述系统调用的步骤。
Description
技术领域
本发明涉及确保计算机程序安全的一般领域,并更具体地,涉及确保由用户空间中执行的软件堆栈的进程对内核的系统调用的安全的领域。
背景技术
在本文中,对系统调用的保护更具体地包括保护对内核敏感资源(i节点(inodes)、文件等)的访问(阅读/创建/修改/删除等),这些访问可以在系统调用的代码中从用户空间触发,例如,管理打开文件、发送分组、创建“i节点”等敏感操作。
更确切地说,这种保护包括:在访问这些敏感资源之前,检查访问是否可以被验证。
本发明在Linux类型的环境中具有优先但非限制性的应用。
在现有技术中,LSM(Linux安全模块)基础设施是改进Linux环境中软件堆栈安全性的标准手段,特别是对内核的敏感资源的访问。这使得可能以Linux安全模块的形式,为自主访问控制(DAC)设置额外的安全策略,具体为:
-强制性访问控制(MAC),特别是由AppArmor模块提出。
-基于角色的访问控制(RBAC),特别是由SELinux模块提出;以及
-完整性控制,特别是由IMA模块提出。
以本领域技术人员已知的方式,这些策略以“钩子”应用于内核级(允许LSM模块在敏感操作(打开文件、接收网络分组等)期间执行任意“代码比特”的原语)。
如今存在LSM模块,使得可能为用户空间的不同软件堆栈定义和应用不同的安全策略。然而,这些模块很难维护,因为它们合并了安全策略本身及其实现两者。此外,这些LSM模块按进程或按进程层次应用安全策略。在这种情况下,有可能会发生权限提升的情况。例如,进程可以比请求其创建的进程拥有更高的权利,因为它继承了创建它的进程的权利。当进程创建是通过与请求进程没有父系联系的另一进程完成时,后者不在请求创建的进程的进程层次中。在这种情况下,请求进程的策略不应用于所创建的进程,从安全的角度看,这是不可取的。
发明内容
本发明的目的之一是弥补现有技术的不足/缺点和/或作出改进。
更准确地说,根据第一方面,本发明涉及一种用于确保由软件系统的用户空间的当前进程触发的至少一个系统调用的安全的方法,所述方法在执行由所述至少一个系统调用触发的至少一个操作之前由所述软件系统的内核实施,并且包括:
-用于获得专门用于与所述当前进程相关联的安全管理的所述内核的至少一个命名空间的步骤;
-用于确定所述至少一个命名空间是否包括与所述操作相关联的、并存储在内核区域中的安全策略的步骤;
-用于执行所述安全策略的步骤;以及
-用于根据该执行的结果处置所述系统调用的步骤。
因此,一般来说,本发明规定了一种允许用户空间的进程或一组进程定义要由内核实施的其自己的安全策略的机制。
本发明在Linux环境中得到了优先应用,但也可以应用于提供按命名空间隔离资源的机制的任何操作系统。具体来说,本发明规定了定义专门用于安全管理的新命名空间,并在这些命名空间中定义安全策略。
与现有技术的LSM模块不同,这种安全机制规定将安全策略与内核的命名空间关联起来,而不是将策略并入LSM模块本身。该特征非常有利地使得可能受益于内核的命名空间的所有管理机制。
根据第二方面,本发明涉及一种设置安全策略的方法,该方法由软件系统的用户空间的软件堆栈实施,以确保能够由软件堆栈的进程触发的至少一个系统调用的安全。该方法包括将安全策略加载到所述系统的内核区域的步骤,所述安全策略与专用于与能够由该进程的所述至少一个系统调用触发的操作相关联的安全管理的命名空间相关联。
因此,非常有利的是,该安全策略可以由软件堆栈加载到内核中,包括当它不享有管理员权限时。该特征特别有利,因为现有技术的LSM模块要求由具有管理员权限的用户空间的实体来设置该策略。
本发明还涉及一种包括用户空间和内核的设备,该用户空间包括能够触发内核的至少一个系统调用的至少一个进程。该设备的特征在于:
-所述内核包括安全控制基础设施和安全模块,所述基础设施被配置为在执行由所述至少一个系统调用触发的至少一个操作之前执行所述安全模块;
-所述安全模块被配置为:
-获得专门用于与所述当前进程相关联的安全管理的所述内核的至少一个命名空间;
-确定所述至少一个命名空间是否包括与所述操作相关联的、并存储在所述内核的区域中的安全策略;和
-执行所述至少一个安全策略。
在实施例中,用于确保至少一个系统调用的安全的方法(或设备)确定当前进程的命名空间是否包括至少一个祖先。如果是这种情况,该方法(或设备)为这些祖先命名空间中的每一个实现和为与当前进程相关联的命名空间实现的处置相同的处置。
更准确地说,在该实施例中,该方法包括:
-用于获得专门用于安全管理的命名空间或多个空间、以及当前进程的命名空间的(多个)祖先的步骤;
-用于确定该命名空间或多个命名空间是否包括与所述操作相关联的、并存储在内核区域中的安全策略的步骤;
-用于执行所述安全策略的步骤;以及
-用于根据该执行的结果处置所述系统调用的步骤。
在用于设置提出的安全策略的方法的实施例中,软件堆栈是容器,并且安全策略的加载由该容器的配置文件的指令来定义。例如,该配置文件可以符合OCI(开放容器倡议)定义的规范,或者是Dockerfile类型的文件。可以回顾一下,Dockerfile类型的文件是文本文件,包括生成容器的图像所需的命令。
特别有利的是,安全策略可以由软件堆栈或容器“热”加载,即在容器的执行期间。
因此,由当前进程的系统调用触发的操作会导致在该进程的命名空间中执行与该操作相关联的安全策略或多个策略,但也会在该进程的命名空间的祖先命名空间中执行(如果存在)。
因此,特别是,容器的进程继承了在祖先命名空间中定义的安全策略。被应用安全策略的进程不能有高于在祖先命名空间中定义的安全策略或多个策略的权利。
在这个意义上,可以说所提出的方法使得可能为命名空间的进程堆积个性化的安全策略。
在特定实施例中,软件堆栈或用户空间的容器建立了可执行的代码,其包含适用于特定操作(打开文件、接收网络分组等)的其自己的安全策略。这个代码可以在执行时(即动态地)通过系统接口加载到内核。然后,当属于这个容器的进程发生这些操作(或事件)时,它就被内核执行。由于该代码不一定是由受信任的进程执行的(有可能是恶意的),它必须不能干扰系统或内核的其他部分。因此,只有当安全策略确实是指适用于该事件的策略源自的容器时,才会被应用。
有利的是,由于软件堆栈有可能被破坏,因此安全策略不能从用户空间被禁用或修改,特别是不能被属于为其定义该策略的命名空间的软件堆栈或容器禁用或修改。
在特定实施例中,所提出的确保安全的方法包括如果所述安全策略不包含在专门用于与所述用户空间的至少一个活动进程相关联的安全的命名空间中、则由所述内核删除至少一个所述安全策略的步骤。
在特定实施例中,所提出的确保安全的方法包括确定系统调用是否与敏感操作关联的步骤,并且该安全方法只针对敏感操作(打开文件、发送分组、执行函数等)实施,这种确定尤其可以由内核的系统调用管理器进行。
在所提出的确保安全的方法的实施例中,处置步骤包括:如果所述至少一个安全策略的执行结果没有检测到任何安全问题,则执行该操作;如果所述至少一个安全策略的执行结果检测到至少一个安全问题,则触发安全动作。
在提出的确保安全的方法的实施例中,安全动作包括销毁当前进程。
在所提出的确保安全的方法的实施例中,安全策略是由eBPF(扩展伯克利分组过滤器)语言的程序编译得到的二进制语言的文件。
以众所周知的方式,这种语言在功能上被刻意限制(没有循环,没有指针运算,没有直接访问内核结构,等等),但有很强的安全属性,这样它就没有能力攻击系统的其他部分。
该特征有利地使得可能防止关键的攻击,例如检索信息、修改系统其他部分的完整性或可用性。
因此,所提出的技术允许软件堆栈引入安全策略而不影响系统的安全性。它特别允许在软件堆栈设置后应用更严格的策略,以随后阻止仅在设置时可接受的行为。
由于eBPF语言所提供的可能性是有限的,因此在所提出的设置安全策略的方法的实施例中,至少一个安全策略调用在所述策略外部的、并由所述用户空间中享有管理员权限的实体加载到所述内核的专用区域中的至少一个辅助函数。
这些辅助函数可以被“热”加载,即在内核的执行期间。它们可以被eBPF安全策略调用,以执行关键的处置,如访问eBPF代码的内核结构。这些辅助函数只能由享有管理员权限的实体编写,不受与eBPF检查器相关的限制。
通过将关键的访问和复杂的处置移交到辅助函数,这个特定实施例使得容器有可能在不影响系统安全的情况下,以较低的超额性能成本,设置开发的策略。
在特定实施例中,所述至少一个辅助函数是可独立于其位置执行的动态函数,该动态函数由与所述内核一起编译的静态辅助函数调用,并由所述安全策略调用。关于位置独立代码的概念的更多信息,本领域的技术人员可以参考地址https://fr.qwe.wiki/wiki/Position-independent_code处可得的文件。
在特定实施例中,所提出的用于设置安全策略的方法包括分析日志文件的步骤,该日志文件包括由上述确保安全的方法执行的安全策略的至少一个执行结果。
所提出的确保安全的方法和设置安全策略的方法是由计算机程序实现的。
因此,本发明还涉及一种记录介质上的计算机程序,该程序能够在设备中或更普遍地在计算机中实施。该程序包括允许实施上述方法的指令。
该程序可以使用任何编程语言,并以源代码、目标代码或源代码与目标代码之间的中间代码的形式,如部分编译的形式,或任何其他理想的形式。
本发明还涉及一种可由计算机读取的信息介质或记录介质,并包括上述计算机程序的指令。
信息介质或记录介质可以是任何能够存储程序的实体或设备。例如,介质可以包括存储手段,如ROM,例如CD-ROM或微电子电路ROM,或磁记录手段,例如磁盘(软盘)或硬盘,或闪存。
此外,信息或记录介质可以是可传输的介质,如电信号或光信号,它可以通过电缆或光缆、无线电链路、无线光链路或其他方式来传达。
提出的计算机程序尤其可以通过互联网类型的网络下载。
作为选择,该信息或记录介质可以是其中并入了程序的集成电路,该电路适合于执行或用于执行如前所述的方法之一。
附图说明
本发明的其他特征和优点将从下面的描述中并参考所附的附图变得明显,这些附图不受任何限制地说明其示例性的实施例。在图中:
-图1示出了根据特定实施例的设备、以及根据特定实施例的设置安全策略的方法的主要步骤。
-图2示出了在特定实施例中可以使用的进程表。
-图3示出了在特定实施例中可以使用的控制表。
-图4以流程图的形式示出了根据特定实施例的确保安全的方法的主要步骤。
具体实施方式
图1示出了根据本发明的设备100。在这里描述的示例性实施例中,该设备100具有计算机的硬件结构。它特别包括处理器10、RAM类型的随机存取存储器11、ROM类型的只读存储器12、以及通信部件13。
在这里描述的实施例中,用户空间USR包括进程p0()、容器C1、C2类型的两个软件堆栈、和管理工具ADM。进程p0()和软件堆栈C1、C2与用户级权限关联,管理工具ADM与管理员级权限关联。
在这里描述的示例性实施例中,用户空间USR的软件堆栈C1、C2是容器,每个容器包括与软件系统SYS的其他部分隔离的一组进程。
在该示例中,容器C1和C2的创建是由进程p0()请求的。
可以回顾一下,由于已知的命名空间机制,用户空间USR的进程可以被隔离。以已知的方式,操作系统Linux在现有技术中规定了几个命名空间(例如网络、IPC、PID、用户)......这些命名空间可用于在定义进程集合的机制中隔离进程,从而使给定集合的进程不能看到另一进程集合所使用的资源。
在图1的示例中:
-进程p0分别与命名空间ENNETWORK0(网络空间)、ENIPC0(IPC)、ENPID0(PID)、ENUser0(用户)...相关联;
-容器C1的进程,在这种情况下是进程p1(),与不同的命名空间ENNETWORK1、ENIPC1、ENIPD1、ENUser1相关联;以及
-容器C2的进程,在这种情况下是进程p2(),与不同的命名空间ENNETWORK2、ENIPC2、ENIPD2、ENUser2相关联。
系统SYS的某些进程可以使用内核KER的系统功能。内核KER包括系统调用管理器GAS,其中实现这些系统调用。
本发明对安全管理机制进行了规定,以确保Linux安全模块(LSM)内触发敏感操作的系统调用的安全。
在这里描述的实施例中,认为打开文件的oper_open()、发送函数执行分组的oper_send()、和执行函数的oper_exec()操作是敏感操作。
在图1的示例中,容器C1的进程p1和容器C2的进程p2调用:
-打开文件的系统调用open(),执行时生成敏感操作oper_open();和
-发送分组的系统调用send(),执行时生成敏感操作oper_send()。
在图1的示例中,进程p0没有使用打开的系统调用open()send()、exec()。
在这里描述的实施例中,本发明规定使用专门用于安全管理的新命名空间ENSECURE。
例如,进程p0与安全管理命名空间ENSECURE0相关联,容器C1与安全管理命名空间ENSECURE1相关联,并且容器C2与命名空间ENSECURE2相关联。
图2详细示出了存储在内核KER的存储器中的进程p0、p1和p2的表TABPID。在内核KER中,进程由以下结构组成,包括几个字段,使得管理进程的生命周期成为可能,比如它的进程标识符PID、它的标志、它的堆栈......
在内核空间中,可以使用指令“current”(见步骤E30,图4)检索对应于当前进程的数据结构。
这个结构还包括nsproxy字段,它包括指向命名空间的指针。根据这个特定实施例,这个nsproxy字段包括指向专门用于与该进程相关联的安全管理的命名空间的指针ENSECURE。这个命名空间定义了数据结构,特别是包括用eBPF语言定义的安全策略。在这里描述的实施例中,这些结构被存储在内核KER的安全策略区ZPS中。
进程的命名空间ENSECURE包括与该进程的命名空间的父级命名空间ENSECURE的链接。在这里描述的示例中,与容器C1和C2相关联的ENSECURE1和ENSECURE2分别指向进程p0的命名空间ENSECURE0。
因此,命名空间ENSECURE形成了树。
以本领域技术人员已知的方式,进程可以改变命名空间以加入其子进程之一的命名空间,例如使用unshare()命令。
从用户空间USR,可能访问命名空间的标识符,但不可能修改其结构。这一特征的好处是使得可能防止容器对安全策略的任何修改或禁用。
在这里描述的示例性实施例中,假定进程p0()已经定义了安全策略PSOFp0,以确保对打开文件oper_open()这一敏感操作的调用的安全。假设它没有定义任何安全策略来确保对通过网络发送分组oper_send()的敏感操作的调用的安全。
在这里描述的实施例中,容器的进程继承了由其所有命名空间ENSECURE祖先定义的安全策略。
在这里描述的示例性实施例中,假定容器C1已经定义了它自己的安全策略PSOFC1,以确保其进程(在这种情况下是p1())对打开文件oper_open()这一敏感操作的调用的安全,此外还有由进程p0()定义的策略PSOFp0。
假设容器C1已经定义了安全策略PSTPC1,以确保其进程(在这种情况下是p1())对发送分组oper_send()的敏感操作的调用的安全。
假设容器C2没有定义它自己的任何安全策略。该容器的进程p2()继承了由进程p0()定义的安全策略PSOFp0,以确保其对打开文件的敏感操作的调用的安全。但是它没有定义任何安全函数来检查发送分组的敏感操作。
在这里描述的实施例中,每个安全策略PSOFp0、PSOFC1、PSTPC1都是由eBPF语言编译的软件函数二进制定义的。这些安全策略存储在设备100的只读存储器12中,并打算加载到内核KER的安全策略区ZPS。
这种装载(步骤F10)可以用不同的方式完成。
在这里描述的实施例中,只读存储器12包括每个容器的OCI(开放容器倡议)类型的配置,即容器C1的配置文件FOCIC1和容器C2的配置文件FOCIC2。
按照已知的方式,容器的配置OCI以config.json为名制定,并详细说明了将要创建的容器的特征。这个配置文件特别指定了容器必须包含的文件、它的系统接口、它的命名空间等。
在这里描述的实施例中,容器的配置文件OCI包括容器将其安全策略加载到内核KER的安全策略区ZPS的指令。
当创建容器(例如C1)时,容器C1的安全策略PSOFC1和PCTPC1被从只读存储器12复制到容器C1的存储器M1。一旦容器C1被构建,它就被执行,在执行时,安全策略从存储器M1转移到内核的ZPS区域。
然而,手动编写OCI配置文件可能被证明是复杂的,在本发明的另一实施例中,将容器的安全策略加载到内核KER中是由更高级别的容器构建方法的指令定义的,例如Dockerfile方法。
此外,将容器自己的安全策略加载到内核的内存中,可以在容器生命周期的任何时候进行,而不仅仅是在其设置期间。在这里描述的实施例中,容器C1的代码还包括指令load_ps(),使其有可能将以二进制形式编译的eBPF文件形式的安全策略加载到内核KER的安全策略的ZPS区域。这个实施例特别使得加载新的安全策略成为可能,该策略将在容器C1启动后应用。这个函数load_ps()包括打开包含在只读存储器12中的eBPF文件,并将其复制到与内核KER的接口。
在这里描述的实施例中,内核KER包括用于管理Linux安全模块的安全控制基础设施ICS、符合本发明的Linux安全模块LSM1、和另一个安全模块LSM2,例如,前面提到的SELinux模块或AppAmor模块。
在这里描述的示例性实施例中,内核KER包括检查表TABCTR,它为每个敏感操作OPS(打开文件、通过网络发送分组等)定义了安全模块LSM1是否会检查这些敏感操作。这个表TABCTR在图3中示出。
在这里描述的检查示例中,假定安全模块LSM1只希望检查打开文件的敏感操作。
图4以流程图的形式示出了根据特定实施例的确保安全的方法的主要步骤。在这里描述的实施例中,该方法由系统调用管理GAS、安全控制基础设施ICS(框架LSM)和安全模块LSM1实现。
在这里描述的示例性实施例中,系统调用管理器GAS在步骤E10期间确定由用户空间的进程触发的系统调用是否必须执行敏感操作。如果是这种情况,它就会触发内核KER的安全控制基础设施ICS。
如果基础设施ICS确定表TABCTR中所列的敏感操作OPS由安全模块LSM1监督,则基础设施ICS在步骤E20期间触发安全模块LSM1的执行。
在这里描述的示例性实施例中,如果进程希望通过调用函数exec()来执行发送分组(oper_send())或在用户空间执行新进程(oper_exec())的敏感操作,因为这些敏感操作没有被安全模块LSM1检查,确定步骤的结果是否定的。然而,这些操作可以由安全模块LSM2检查,在本发明的范围之外,例如SELinux和AppAmor模块。
在步骤E30期间,安全模块LSM1确定与该调用源自的当前进程相关联的命名空间。为此,它使用进程表TABPID的当前进程。
然后,安全模块LSM1执行循环,以执行与该敏感操作相关的当前进程的命名空间的策略。在特定的实施例中,安全模块LSM1然后执行循环,以执行其祖先命名空间的策略,如果存在的话。
在步骤E40中,安全模块LSM1确定当前命名空间是否定义了一个或多个安全策略来检查敏感操作的有效性。
如果是这种情况,有关的安全模块LSM1在步骤E50期间执行在专门用于当前进程的安全管理ENSECURE的命名空间中定义的安全策略或多个策略,以进行这一敏感操作。
在这种情况下,在第一次迭代中,安全策略PSOFC1被执行。该安全策略向安全模块LSM1返回该执行的结果RET。
在这里描述的实施例中,安全策略,特别是安全策略PSOFC1,如果检测到安全问题(例如表现为恶意或异常行为),则返回否定结果RET,如果没有检测到任何安全问题,则返回肯定结果。
如果该值RET仍为正值,安全模块确定(如果存在)当前进程的命名空间的父命名空间(步骤E60),并重复该循环。
在这种情况下,在第二次迭代中,进程p0的命名空间ENSECURE0的安全策略PSOFp0被执行。
如果安全策略返回否定结果RET,安全模块在步骤E70中把这个结果记录在内核KER的日志文件FLOG中,并将该否定结果RET发送到安全基础设施ICS。这个日志文件FLOG可以由管理员通过管理工具ADM进行分析(步骤F30)。
当整个命名空间树的所有安全策略都被执行并具有肯定结果RET时,安全模块LSM1向安全基础设施ICS发送肯定结果RET(测试E90)。
在这里描述的实施例中,如果安全基础设施RET收到肯定结果RET,它不会触发任何特定的动作,系统调用被执行,除非动作被另一安全模块LSM2触发,例如SELinux模块和AppAmor模块。
在这里描述的实施例中,如果安全基础设施RET收到否定结果RET,控制基础设施ICS在步骤E80期间触发安全动作AS。该动作可能包括销毁呼叫源自的进程,并将警报升级到日志文件FLOG。
在这里描述的实施例中,当没有进程留在专门用于安全管理的命名空间中时,这个命名空间会被内核自动销毁。这个操作销毁了与这些命名空间相关的安全策略。
例如,在这里描述的示例性实施例中,一旦进程p1死亡,在系统SYS中就不再有任何进程,其专门用于安全管理的命名空间是ENSECURE1,所以安全策略PSOFC1和PSTPC1可以被销毁。
在这里描述的实施例中,如果安全策略不包括在专门用于与用户空间的至少一个活动进程相关联的安全性的命名空间中,这个安全策略就被内核删除。
根据本发明,编译的eBPF语言中的安全策略可以调用这些策略外部的内核KER的函数,以实现eBPF语言本身的安全策略可能无法直接实现的关键操作。本领域的技术人员在辅助eBPF函数的名义下知道这种函数。
在本发明的特定示例性实施例中,这样的辅助函数FSUP可以由管理员编写,例如用C语言编写,然后用GCC(GNU编译器集合)编译为传统的内核模块。
在这里描述的实施例中,该可执行代码被转换为能够根据本领域技术人员已知的PIC(位置独立代码)机制独立于其位置执行。
这些动态辅助函数FSUP可以被加载(步骤F20)到内核KER的专用区域,而不会中断内核的执行。
一旦加载到内核中,这些动态辅助函数FSUP可以由安全策略的eBPF代码使用单一静态辅助函数FSUPSTAT调用。
Claims (12)
1.一种用于确保由软件系统(SYS)的用户空间(USR)的当前进程(p1)触发的至少一个系统调用的安全的方法,所述方法在执行由所述至少一个系统调用触发的至少一个操作之前由所述软件系统(SYS)的内核(KER)实施,并且包括:
-用于获得专门用于与所述当前进程(p1)相关联的安全管理的所述内核(KER)的至少一个命名空间(ENSECURE1)的步骤(E30);
-用于执行在与所述操作相关联的命名空间中定义的、并存储在所述内核(KER)的区域(ZPS)中的安全策略的步骤(E50);
-用于获得专门用于安全管理的至少一个命名空间(ENSECURE0)和所述当前进程(p1)的命名空间(ENSECURE1)的祖先的步骤(E30);
-用于执行在与所述操作相关联的祖先命名空间中定义的、并存储在所述内核的区域中的安全策略的步骤(E50);以及
-用于根据所述执行的结果(RET)处置所述系统调用的步骤。
2.根据权利要求1所述的用于确保至少一个系统调用的安全的方法,包括用于确定所述操作是否为敏感操作的步骤(E10)。
3.根据权利要求1至2中任一项所述的用于确保至少一个系统调用的安全的方法,其中所述处置步骤包括:如果所述至少一个安全策略的执行的结果没有检测到任何安全问题,则执行所述操作;如果所述至少一个安全策略的执行的结果检测到安全问题,则触发(E80)安全动作。
4.根据权利要求3所述的用于确保至少一个系统调用的安全的方法,其中所述安全动作包括销毁所述当前进程(p1)。
5.根据权利要求1至4中任一项所述的用于确保至少一个系统调用的安全的方法,包括如果所述安全策略不包含在专门用于与所述用户空间(USR)的至少一个活动进程相关联的安全的命名空间中、则由所述内核(KER)删除至少一个所述安全策略的步骤。
6.一种用于设置安全策略的方法,所述方法由软件系统(SYS)的用户空间(USR)的软件堆栈(C1)实现,用于确保能够由所述软件堆栈(C1)的进程(p1)触发的至少一个系统调用的安全,所述方法包括用于将所述安全策略加载到所述系统(SYS)的内核(KER)的区域(ZPS)中的步骤,所述安全策略被定义在所述内核的命名空间(ENSECURE1)中,所述命名空间专门用于与能够被所述进程(p1)的所述至少一个系统调用触发的操作相关联的安全管理,所述命名空间包括与祖先命名空间的链接。
7.根据权利要求6所述的用于设置安全策略的方法,其中所述软件堆栈(C1)是容器,所述装载由所述容器(C1)的配置文件的指令定义,所述配置文件(FOCIC1)符合OCI(开放容器倡议)定义的规范或Dockerfile类型的文件。
8.根据权利要求6或7所述的用于设置安全策略的方法,其中所述至少一个安全策略调用在所述策略外部的、并由所述用户空间(USR)中享有管理员权限的实体加载(F20)到所述内核(KER)的专用区域中的至少一个辅助函数(FSUP)。
9.根据权利要求8所述的用于设置安全策略的方法,其中所述至少一个辅助函数(FSUP)是可独立于其位置执行的动态函数,该动态函数(FSUP)由与所述内核(KER)一起编译的静态辅助函数(FSUPSTAT)调用,并由所述安全策略调用。
10.根据权利要求6至9中任一项所述的用于设置安全策略的方法,包括用于分析包括由根据权利要求1至4中任一项所述的确保安全的方法执行的安全策略的至少一个执行结果(RET)的日志文件的步骤(F30)。
11.根据权利要求1至10中任一项所述的方法,其中所述至少一个安全策略是通过编译eBPF语言的程序获得的二进制语言的文件。
12.一种设备(100),包括用户空间(USR)和内核(KER),所述用户空间(USR)包括能够触发所述内核(KER)的至少一个系统调用的至少一个进程(p1),所述设备(100)包括:
-所述内核(KER)包括安全控制基础设施(ICS)和安全模块(LSM1),所述基础设施(ISC)被配置为在执行由所述至少一个系统调用触发的至少一个操作之前执行所述安全模块(LSM1);
-所述安全模块(LSM1)被配置为:
-获得专门用于与所述当前进程(p1)相关联的安全管理的所述内核(KER)的至少一个命名空间(ENSECURE1);
-获得专门用于安全管理的至少一个命名空间(ENSECURE0)、和所述当前进程的命名空间的祖先;
-执行在与所述操作相关联的命名空间中定义的、并存储在所述内核(KER)的区域(ZPS)中的安全策略;以及
-执行在与所述操作相关联的祖先命名空间中定义的、并存储在所述内核的区域中的安全策略。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR2005153A FR3110726A1 (fr) | 2020-05-20 | 2020-05-20 | Procédé de sécurisation d’un appel système, procédé de mise en place d’une politique de sécurité associée et dispositifs mettant en œuvre ces procédés. |
FRF2005153 | 2020-05-20 | ||
PCT/FR2021/050860 WO2021234267A1 (fr) | 2020-05-20 | 2021-05-18 | Procede de securisation d'un appel systeme, procede de mise en place d'une politique de securite associee et dispositifs mettant en oeuvre ces procedes |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115917539A true CN115917539A (zh) | 2023-04-04 |
Family
ID=72644323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180043947.9A Pending CN115917539A (zh) | 2020-05-20 | 2021-05-18 | 确保系统调用的安全的方法、实施关联安全策略的方法、和执行这些方法的设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230195884A1 (zh) |
EP (1) | EP4154141A1 (zh) |
CN (1) | CN115917539A (zh) |
FR (1) | FR3110726A1 (zh) |
WO (1) | WO2021234267A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3133087A1 (fr) * | 2022-02-28 | 2023-09-01 | Orange | Procédé et module de détection de tentatives d’attaques informatiques dans un parc d’ordinateurs. |
CN116991449B (zh) * | 2023-09-28 | 2024-03-08 | 阿里云计算有限公司 | 内核子系统热升级方法、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10341387B2 (en) * | 2016-06-06 | 2019-07-02 | NeuVector, Inc. | Methods and systems for applying security policies in a virtualization environment using a security instance |
US11126740B2 (en) * | 2016-11-04 | 2021-09-21 | Microsoft Technology Licensing, Llc | Storage isolation for containers |
WO2019127399A1 (zh) * | 2017-12-29 | 2019-07-04 | 浙江大学 | Linux容器的细粒度沙盒策略执行方法 |
-
2020
- 2020-05-20 FR FR2005153A patent/FR3110726A1/fr not_active Withdrawn
-
2021
- 2021-05-18 CN CN202180043947.9A patent/CN115917539A/zh active Pending
- 2021-05-18 WO PCT/FR2021/050860 patent/WO2021234267A1/fr unknown
- 2021-05-18 US US17/999,532 patent/US20230195884A1/en active Pending
- 2021-05-18 EP EP21732967.1A patent/EP4154141A1/fr active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230195884A1 (en) | 2023-06-22 |
WO2021234267A1 (fr) | 2021-11-25 |
FR3110726A1 (fr) | 2021-11-26 |
EP4154141A1 (fr) | 2023-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7257707B2 (en) | Manifest-based trusted agent management in a trusted operating system environment | |
JP4676744B2 (ja) | セキュリティ関連プログラミング・インターフェース | |
US9679130B2 (en) | Pervasive package identifiers | |
US7159240B2 (en) | Operating system upgrades in a trusted operating system environment | |
US7243230B2 (en) | Transferring application secrets in a trusted operating system environment | |
US7516477B2 (en) | Method and system for ensuring that computer programs are trustworthy | |
JP5027807B2 (ja) | 信頼される環境をサポートするコンピュータ可読コンポーネントの自動更新 | |
KR100917370B1 (ko) | 프로그램을 저장한 컴퓨터 판독 가능 매체, 프로그램을실행하는 정보 처리 장치, 및 프로그램을 실행하기 위한프로그램 제어 방법 | |
EP1368718B1 (en) | Software-defined communications system execution control | |
JP2005129066A (ja) | オペレーティングシステムリソース保護 | |
US20230195884A1 (en) | Method for securing a system call, method for implementing an associated security policy and devices for carrying out such methods | |
US7647629B2 (en) | Hosted code runtime protection | |
CN115885261A (zh) | 部分特权的轻量级虚拟化环境 | |
AU2001257276A1 (en) | Software-defined communications system execution control | |
US20240095402A1 (en) | Methods and Systems for Recursive Descent Parsing | |
US6792596B2 (en) | Method and system for protecting resource central programs | |
EP1222537B1 (en) | Resource access control system | |
US20240152602A1 (en) | Method and module for installing a mitigation program in the kernel of a computing device | |
JPH10320287A (ja) | 計算機資源へのアクセス管理システム及びその方法 | |
WO2017070209A1 (en) | Techniques for defining and enforcing security policies upon computer processes and related systems and methods | |
De Win et al. | Security Middleware for Mobile Applications | |
JP2008521111A (ja) | 電子デバイス内の安全なプログラム解釈方法 | |
Privileges | Privileges, Permissions, & File I/O |
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 |