掌桥专利:专业的专利平台
掌桥专利
首页

一种基于eBPF-LSM机制的可信程序启动控制方法

文献发布时间:2024-04-18 19:58:21


一种基于eBPF-LSM机制的可信程序启动控制方法

技术领域

本发明属于网络安全技术领域,具体涉及一种基于eBPF-LSM机制的可信程序启动控制方法。

背景技术

随着信息技术的发展,网络安全问题日益凸显。网络安全威胁是指网络中存在的各种安全风险,包括黑客攻击、病毒入侵、勒索软件等。这些威胁不仅对个人用户造成影响,也对企业和政府机构造成了威胁。因此,需要设计一种可信程序启动控制方法,以解决恶意程序的非法启动造成的系统安全问题。

发明内容

(一)要解决的技术问题

本发明要解决的技术问题是:如何针对恶意程序的非法启动造成的系统安全问题,设计一种基于eBPF-LSM机制的可信程序启动控制方法。

(二)技术方案

为了解决上述技术问题,本发明提供了一种基于eBPF-LSM机制的可信程序启动控制方法,包括以下步骤:

步骤一、使用Clang编译c语言编写内核态代码形成字节码,然后利用eBPF程序系统调用加载接口函数将编译好的字节码注入到内核空间的bprm_security_check()函数的hook点,所述内核态代码即为安全策略;

步骤二、当用户执行一个新程序,系统调用sys_execve执行到search_binary_handler时,调用LSM的bprm_security_check()函数,在bprm_security_check()函数中,所述安全策略就根据传入参数结构体bprm获取新程序的绝对路径;

步骤三、使用eBPF的Map结构体机制将绝对路径从内核态传递给用户态部分,在用户态部分调用软算法库,计算该绝对路径二进制文件的hash值;

步骤四、预先使用redis内存数据库存储文件系统全盘下可执行二进制程序的hash值作为可信白名单;然后在redis内存数据库的可信白名单中查询是否存在步骤三计算的hash值;最后将是否存在hash值的查询结果再次通过Map结构体机制返回至内核态的bprm_security_check()函数的hook点;

步骤五、hook点处的所述安全策略根据所述查询结果决定是否放行该新程序,如果存在则继续该新程序的后续正常执行流程,如果不存在则系统调用最终返回用户态。

优选地,步骤五中,如果存在则返回0值,继续该新程序的后续正常执行流程。

优选地,步骤五中,如果不存在则返回-1值,系统调用最终返回用户态。

优选地,系统调用最终返回用户态的同时,提示“不被允许的操作”。

优选地,步骤三中,在用户态部分调用杂凑SM3软算法库,计算该绝对路径二进制文件的hash值。

优选地,所述方法用于解决恶意程序的非法启动造成的系统安全问题。

本发明还提供了一种用于实现所述方法的系统。

本发明还提供了一种采用所述方法实现保护计算设施中软件、系统安全运行的方法。

本发明还提供了一种所述方法在网络安全中的应用。

本发明还提供了一种所述系统在网络安全中的应用。

(三)有益效果

可禁止被恶意篡改的软件、系统启动运行在linux系统下,一个程序启动运行时,系统调用会首先经过bprm_security_check()函数,本方法通过eBPF-LSM机制在bprm_security_check()函数处注入特定的安全策略进行安全检查,其可信度量值不在白名单中时禁止启动运行。通过本方法,一方面,可以禁止计算设施中病毒/木马等程序的运行,防止计算设施中软件、系统被病毒/木马等恶意软件篡改;另一方面,即使计算设施中软件、系统被恶意篡改,在这些软件、系统执行前,都需要经过本方法的运行控制检查,一旦其可信度量值不在白名单中,则会被拒绝执行,从而达到保护计算设施中软件、系统安全运行的目的。

附图说明

图1为本发明的eBPF注入示意图;

图2为本发明的可信程序启动控制流程图。

具体实施方式

为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

首先给出以下名词解释:

eBPF:(扩展的伯克利数据包过滤器)是一项强大的网络和性能分析工具,被广泛应用在Linux内核上。eBPF使得开发者能够动态地加载、更新和运行用户定义的代码,而无需重启内核或更改内核源代码。它除了应用在网络包处理,还可以应用在网络性能分析、安全领域、防火墙、内核和应用调试、设备驱动等等。

LSM:(Linux Security Modules)是Linux内核中用于支持各种计算机安全模型的框架。LSM在Linux内核安全相关的关键路径上预置了一批hook点,从而实现了内核和安全模块的解耦,使不同的安全模块可以自由地在内核中加载/卸载,无需修改原有的内核代码就可以加入安全检查功能。

eBPF-LSM:LSM扩展伯克利包过滤器(eBPF)(简称eBPF-LSM)。在Linux Kernel 5.7引入。eBPF-LSM允许开发人员编写自定义策略,并将其动态加载到内核中的LSM挂载点,而无需配置或加载内核模块。eBPF-LSM程序在加载时被验证,然后在调用路径中,到达LSM钩子时被执行。

由于eBPF-LSM机制在Linux内核5.7引入,所以仅适用于内核版本>=5.7的Linux系统。

当用户执行一个新程序时,系统调用经过hook点,在hook点内根据执行信息获取新程序的绝对路径,通过map结构体机制与用户态部分交互,发送绝对路径到用户态部分。用户态部分对接收到绝对路径后,对该二进制程序进行读取并计算hash值,然后从白名单库进行查询,并将查询结果返回至内核态hook点。hook点根据查询结果决定是否放行该新程序。

工作原理如下:

根据调研,一个新程序启动时,系统调用会经过bprm_security_check()函数。而eBPF-LSM可以在bprm_security_check()函数处注入安全策略。

本方案包含内核态和用户态两部分程序,具体包括如下步骤:

步骤一、首先使用Clang编译c语言编写内核态代码(安全策略)形成字节码,然后利用eBPF程序系统调用加载接口函数将编译好的字节码注入到内核空间的bprm_security_check()函数的hook点,如图1所示。

步骤二、当用户执行一个新程序,系统调用sys_execve执行到search_binary_handler时,会调用LSM的bprm_security_check()函数,在bprm_security_check()函数中,我们的安全策略就可以根据传入参数结构体bprm获取新程序的绝对路径;

步骤三、使用eBPF的Map结构体机制将绝对路径从内核态传递给用户态部分,在用户态部分方便调用杂凑SM3软算法库,计算该绝对路径二进制文件的hash值;

步骤四、预先使用redis内存数据库存储文件系统全盘下可执行二进制程序的hash值作为可信白名单;然后在redis内存数据库的可信白名单中查询是否存在步骤三计算的hash值;最后将是否存在hash值的查询结果再次通过Map结构体机制返回至内核态的bprm_security_check()函数的hook点;

步骤五、hook点处的所述安全策略根据所述查询结果决定是否放行该新程序,如果存在则返回0值,继续该新程序的后续正常执行流程,如果不存在则返回-1值,系统调用最终返回用户态,并提示“不被允许的操作”,如图2所示。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

相关技术
  • 基于密码学构造的不可信云端动态访问控制机制实现方法
  • 一种可信可控网络控制机制实现方法
技术分类

06120116480185