一种基于eBPF的安全防护方法、系统及电子设备与流程

文档序号:32620413发布日期:2022-12-20 22:29阅读:55来源:国知局
一种基于eBPF的安全防护方法、系统及电子设备与流程
一种基于ebpf的安全防护方法、系统及电子设备
技术领域
1.本发明涉及网络安全防护技术领域,尤其涉及一种基于ebpf的安全防护方法、系统及电子设备。


背景技术:

2.扩展的伯克利数据包过滤器(extended berkeley packet filter,ebpf)是一种数据包过滤技术,从伯克利数据包过滤器(berkeley packet filter,bpf)扩展而得。伯克利数据包过滤器的目的是为了提供一种过滤包的方法,并且要避免从内核空间到用户空间的无用的数据包复制行为。最初是由从用户空间注入到内核的一个简单的字节码构成,它在那个位置利用一个校验器进行检查,以避免内核奔溃或者安全问题;同时,附着到一个套接字上,在每一个接收到的数据包上运行。接着,对bpf进行改造,增加了新的功能,改善了性能,从而得到ebpf。ebpf提供给用户一个虚拟risc处理器以及一组相关的指令。用户可以直接通过这组指令编写程序;同时,程序在下发到该虚拟机之前也会经过ebpf的检查(例如,检查程序是否会访问不合法的内存地址、检查程序会不会进入无限循环等等),在通过检查后才可以进入执行的环节。
3.ebpf虽然一定程度上增强了内核态的追踪调试功能,但是也带来了一定的安全问题,非法主体可以通过ebpf编写恶意软件程序损害系统安全。因此,当前对于ebpf的安全问题主要包括恶意软件程序(例如,rootkit),逃逸等。而现有技术中网络防护方法主要是通过枚举ebpf、hook敏感函数等方式以解决ebpf的安全问题。而前述网络防护方法在一定程度上很难限制恶意软件程序所造成的安全问题。枚举的方式存在遗漏发现隐藏的恶意代码的风险;hook敏感函数的方式虽然可以发现隐藏的恶意代码,但是如果存在集合漏洞的话,还是存在一定的风险。
4.有鉴于此,有必要对现有技术中的ebpf的网络防护方法予以改进,以解决上述问题。


技术实现要素:

5.本发明的目的在于解决现有技术中由于非法主体冒充用户向用户态注入ebpf程序并非法在用户态中部署非法程序,以将非法主体注入的ebpf程序编译成字节码并注入内核态中形成字节码对应的进程以执行相应业务,所导致的内核态不安全的问题。
6.为实现上述目的,第一方面,本发明提供了一种基于ebpf的安全防护方法,包括:基于预配置的安全策略对由用户注入的ebpf程序所编译的字节码执行标记操作,将执行标记操作后的字节码注入内核态;按照预设时间基于所述安全策略对内核态中的字节码进行检测,以将内核态中不符合安全策略的字节码确定为异常字节码,并对所述异常字节码进行拦截;杀死内核态响应由所述异常字节码所形成的进程。
7.作为本发明的进一步改进,所述执行标记操作由部署于用户态的标签进程予以实
现,所述安全策略于所述标签进程内以主动方式或者被动方式予以配置。
8.作为本发明的进一步改进,所述对内核态中的字节码进行检测由部署于内核态的检测进程予以实现,所述检测进程从所述标签进程中获取安全策略,以基于所述安全策略对内核态中的字节码进行检测。
9.作为本发明的进一步改进,所述执行标记操作,包括:创建与ebpf程序对应的标签数据,并对所述标签数据进行加密,得到加密数据;由所述加密数据生成函数代码,将所述函数代码注入所述ebpf程序所编译的字节码中。
10.作为本发明的进一步改进,所述创建与ebpf程序对应的标签数据,包括:对所述由用户注入的ebpf程序进行签名得到签名值,并将所述签名值作为ebpf程序的id;创建签名证书,建立所述id与所述签名证书的绑定关系,并记录建立绑定关系时的时间戳,同时对时间戳标注有效期;由所述id、签名证书以及标注有效期的时间戳形成标签数据。
11.作为本发明的进一步改进,在所述执行标记操作之前,还包括:创建与ebpf程序唯一对应的密钥,所述密钥包括公钥与私钥;在执行标记操作时,通过所述公钥或者私钥对所述标签数据进行加密。
12.作为本发明的进一步改进,所述基于所述安全策略对内核态中的字节码进行检测,包括:检测所述字节码中是否存在由加密数据生成的函数代码;若是,则将所述函数代码转换为加密数据,并基于所述加密数据确定所述加密数据对应的字节码是否符合安全策略;若否,则确定所述字节码不符合安全策略。
13.作为本发明的进一步改进,所述基于所述加密数据确定所述加密数据对应的字节码是否符合安全策略,包括:通过加密数据对应的ebpf程序对应的密钥中的私钥或者公钥对所述加密数据进行解密,得到解密后的数据,并判断解密后的数据是否符合所述安全策略,以确定解密后的数据对应的字节码是否符合安全策略。
14.作为本发明的进一步改进,所述判断解密后的数据是否符合所述安全策略,包括:判断解密后的数据中的id是否符合安全策略以及判断解密后的数据中的时间戳是否符合所述安全策略;若存在任意一种不符合所述安全策略,则确定所述解密后的数据不符合所述安全策略。
15.作为本发明的进一步改进,在所述对所述异常字节码进行拦截之后,还包括:将异常字节码的拦截信息反馈至用户。
16.第二方面,本发明还提供了一种基于ebpf的安全防护系统,运行于操作系统中,所述安全防护系统包括:部署于用户态的标签进程、以及部署于内核态的检测进程;所述标签进程基于预配置的安全策略对由用户注入的ebpf程序执行标记操作,将
执行标记操作后的字节码注入内核态;所述检测进程按照预设时间基于所述安全策略对内核态中的字节码进行检测,以将内核态中不符合安全策略的字节码确定为异常字节码,并对所述异常字节码进行拦截;所述检测进程杀死内核态响应由所述异常字节码所形成的进程。
17.第三方面,本发明又揭示了一种电子设备,包括:处理器,由至少一个存储单元组成的存储装置,以及在处理器与存储装置之间建立通信连接的通信总线;所述处理器用于执行存储装置中存储的一个或者多个程序,以实现如第一方面所述的基于ebpf的安全防护方法。
18.与现有技术相比,本发明的有益效果是:首先,通过检测字节码中是否存在由加密数据生成的函数代码,以确定出非法主体注入内核程序中的字节码,并对其进行拦截,从而保证了内核态的安全;其次,判断解密后的数据中的公钥或者私钥与ebpf程序对应的公钥或者私钥是否一致,若不一致,则将该解密后的数据对应的字节码确定为异常字节码,并对其进行拦截,以确定非法主体冒充执行标记操作后的字节码,从而保证了内核态的安全;最后,判断解密后的数据中的id是否在标签进程中创建、时间戳是否过期等等,不仅再次确定出非法主体冒充执行标记操作后的字节码,还将确定出时间戳过期的字节码,对时间戳过期的字节码进行拦截,从而再次保证了内核态的安全。
附图说明
19.图1为本发明所示出的一种基于ebpf的安全防护方法的步骤流程图。
20.图2为运行一种基于ebpf的安全防护方法的拓扑图。
21.图3为对由用户注入的ebpf程序所编译的字节码执行标记操作具体步骤的流程图。
22.图4为执行标记操作之前的字节码所形成的数据结构。
23.图5为执行标记操作之后的字节码所形成的数据结构。
24.图6为本发明一种电子设备的拓扑图。
具体实施方式
25.下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
26.请参图1至图5所示出的一种基于ebpf的安全防护方法的一种具体实施方式。
27.本实施例所揭示的一种基于ebpf的安全防护方法的应用场景为用户在用户界面300向用户态100注入ebpf程序,在用户态100中ebpf程序被编译成字节码并输入内核态200中,以形成字节码对应的进程,从而执行相应的业务。通过在用户态100中对由用户注入的ebpf程序所编译的字节码执行标记操作,并在内核态200中对内核程序13中的字节码进行检测,对不符合安全策略的字节码进行拦截,并将拦截信息反馈至用户,以解决现有技术中由于非法主体冒充向用户态100注入的ebpf程序并通过非法手段在用户态100中部署的非
法程序21将该ebpf程序编译成字节码注入内核态200中,由内核态200形成该字节码对应的进程以执行相应的业务所导致的内核态200不安全的问题,从而保证了内核态200的安全性。同时,通过对不符合安全策略的字节码进行拦截,以实现对时间戳超过有效期的字节码进行拦截,从而进一步保障了内核态200的安全。其中,用户态100和内核态200是操作系统的两种运行级别。处于用户态100的cpu只能受限的访问内存,并且不允许访问外围设备,用户态100下的cpu不允许独占,也就是说cpu能够被其他程序获取。处于内核态200的cpu可以访问任意的数据,包括外围设备,例如,网卡、硬盘等。同时,处于内核态200的cpu可以从一个程序切换到另一个程序,并且占用的cpu不会发生抢占的情况。因此,如果用户态100需要获取硬件信息或者操作硬件时,则需要与内核态200进行通信才能得到信息,或者将配置直接下发至硬件。在用户态100与内核态200通信过程中,基于ebpf以提供一种代码追踪工具,可以编写程序在内核态200去获取数据。
28.参图1所示,在本实施方式中,一种基于ebpf的安全防护方法至少包括以下步骤s1至步骤s2。
29.步骤s1、基于预配置的安全策略对由用户注入的ebpf程序所编译的字节码执行标记操作,将执行标记操作后的字节码注入内核态。
30.示例性地,参图2所示,用户态100内部署用户程序11、非法程序21、以及标签进程12。用户程序11部署于用户态100中用于接收用户所注入的ebpf程序,并将ebpf程序(即,用户注入用户态100的ebpf程序)编译成字节码,将编译的字节码注入标签进程12。非法程序21部署于用户态100中用于接收非法主体所注入的ebpf程序,并将ebpf程序(即,非法主体注入用户态100的ebpf程序)编译成字节码,将编译的字节码注入内核态200中。标签进程12部署于用户态100中用于接收由用户程序11注入的字节码(即,由用户注入的ebpf程序所编译的字节码),对该字节码执行标记操作,并将执行标记操作后的字节码注入内核态200。
31.需要说明的是,用户是指通过用户程序11所提供的会话界面(例如,对话框等方式)向部署于用户态100的用户程序11注入ebpf程序的正常用户,默认情况下,如无特殊说明,正常用户即为合法用户。非法主体是指区别于用户的非法用户,通过非法的途径(即,不通过用户程序11所提供的会话界面)向用户态100中注入ebpf程序。其中,非法主体包括黑客、被黑客控制的计算机设备或者病毒软件等能够向内核态200注入ebpf程序的主体。本技术将(正常)用户向用户态100注入的ebpf程序定义为合法ebpf程序,并将由合法ebpf程序编译的字节码定义为合法字节码;将非法主体向用户态100注入的ebpf程序定义为非法ebpf程序,并将由非法ebpf程序编译的字节码定义为非法字节码。用户程序11是用户态100用于接收用户所注入的ebpf程序并编译成字节码,将所编译的字节码注入标签进程12的进程或者逻辑。而非法程序21是非法主体以植入恶意代码或者恶意插件或者恶意脚本等非法手段在用户态100中部署用于接收非法主体所注入的ebpf程序并编译成字节码,将所编译出的字节码注入内核态200的进程或者逻辑。在用户态100中部署标签进程12,对由用户程序11所编译字节码执行标记操作,并将执行标记操作后的字节码注入内核态200,以方便后续确定出非法主体冒充用户注入用户态100的ebpf程序所编译的字节码(即,确定出非法字节码),并对其进行拦截,从而保证内核态200的安全性。
32.具体而言,在标签进程12中预先配置安全策略,以基于该安全策略对由用户注入用户态100的ebpf程序所编译的字节码执行标记操作,并将执行标记操作后的字节码注入
内核态200。其中,安全策略包括:标签进程12中对由用户注入内核态200的字节码执行标记操作中包含的逻辑,以及下述检测进程14对内核态200中的字节码(此时的字节码包含执行标记操作后的字节码、以及由非法主体注入用户态100中,并由用户态100注入内核态200中的字节码,即包含合法字节码和非法字节码)进行检测包含的逻辑。安全策略于标签进程12中以主动方式或者被动方式予以配置。其中,主动方式是由用户向标签进程12下发策略指令形成逻辑以生成安全策略,被动方式是用户态100自定义形成逻辑以生成安全策略。同时,标签进程12可以独立于用户程序11部署,也可以部署于用户程序11内部,只要能够实现通过标签进程12对由用户注入的ebpf程序所编译的字节码(即,合法字节码)执行标记操作即可。
33.标签进程12在对由用户注入的ebpf程序所编译的字节码执行标记操作之前,还包括:创建与ebpf程序对应的密钥。密钥包括公钥与私钥,以方便后续通过公钥与私钥分别对标签数据进行加密与解密,或者通过私钥与公钥分别对标签数据进行加密与解密。密钥、ebpf程序以及ebpf程序所编译的字节码存在唯一且对应的关系。参图3所示,对由用户注入的ebpf程序所编译的字节码执行标记操作具体包括以下步骤s11至步骤s12。
34.步骤s11、创建与ebpf程序对应的标签数据,并对标签数据进行加密,得到加密数据。
35.具体地,对由用户注入的ebpf程序进行签名得到签名值,并将签名值作为ebpf程序的id。创建与ebpf程序对应的签名证书,将id写入签名证书,以建立id与签名证书的绑定关系。同时,记录建立绑定关系时对应的时间戳,并对时间戳标注有效期。由id、签名证书以及标注有效期的时间戳形成标签数据。id、签名证书以及ebpf程序之间具有唯一的对应关系,而ebpf程序、密钥以及ebpf程序所编译的字节码也存在唯一且对应的关系,因此id、签名证书、ebpf程序、密钥以及ebpf程序所编译的字节码之间也形成唯一且对应的关系。通过ebpf程序对应的密钥中的公钥或者私钥对标签数据进行加密,得到加密数据。
36.其中,对由用户注入的ebpf程序进行签名得到签名值是通过对ebpf程序进行哈希运算得到与ebpf程序对应的哈希值予以实现,将哈希值作为签名值,从而将签名值作为id。另外,在记录建立绑定关系时对应的时间戳之后,在时间戳上标注有效期,以方便后续基于时间戳以及时间戳所标注的有效期,且将超过有效期的时间戳对应的字节码确定为异常字节码(即,将合法字节码中超过有效期时间戳的合法字节码确定为异常字节am),并对异常字节码进行拦截,从而进一步保证内核态200的安全。
37.需要说明的是,哈希运算是指接收一个不限长度的输入(即,input),返回一个固定长度的输出(即,output)。哈希值的是经过哈希运算得到的固定长度的输出(例如,以字符串的形式呈现)。无论输入什么,哈希值永远是一个固定长度的字符串。因此可以通过哈希运算对ebpf程序进行签名,以得到相同长度字符串的签名值,并将签名值作为id,以保证不同ebpf程序的id为相同长度的字符串,从而方便对ebpf程序的管理(例如,对ebpf程序记录、查询等等)。同时,哈希运算得到的哈希值是唯一的,以保证签名值的唯一性,从而保证id的唯一性,以最终保证ebpf程序与id具有唯一对应关系。当然,还可以是其他任意方式实现对ebpf程序进行签名得到签名值,例如,雪花算法、uuid、redis等等,只要保证得到的签名值的唯一性,从而保证ebpf程序与id的唯一对应关系即可。
38.另外,创建与ebpf程序对应的签名证书由创建与ebpf程序的自签名证书予以实
现。自签名证书是指,由签名实体发布给自身的证书,即,发布者与证书主体相同,可以通过自签名证书实现通信的加密。
39.此外,在确定通过密钥中的公钥或者私钥对标签数据进行加密时,将该公钥或者私钥写入标签数据中的签名证书中,以方便后续基于公钥与私钥的唯一配对关系对标签数据进行再一次验证。例如,参图4所示出的执行标记操作之前的字节码所形成的数据结构与图5所示出的执行标记操作之后的字节码所形成的数据结构。其中,图4所示出的ebpffunction是指ebpf程序对应的代码,图5所示出的hashid是指哈希值,publickey是指公钥,currenttimestamp是指建立绑定关系时的时间戳。若通过公钥对签名数据进行加密,则将公钥写入签名证书中,从而随签名证书、签名值以及时间戳共同形成标签数据并被公钥加密,得到加密数据。
40.步骤s12、由加密数据生成函数代码,将函数代码注入ebpf程序所编译的字节码中。
41.具体地,由加密数据生成hook函数代码并将函数代码注入ebpf程序所编译的字节码中。由于ebpf程序在由用户态100注入内核态200时会被编译器进行优化,即,通过用户程序11对ebpf程序编译形成字节码,因此为了避免由加密数据生成的hook函数代码随ebpf程序共同被编译,在ebpf程序被编译成字节码之后将由加密数据生成的hook函数代码注入字节码,并保证注入字节码的hook函数代码不会影响字节码本身的正常业务。通过将hook函数代码注入ebpf程序所编译的字节码以实现了对字节码执行标记操作,从而实现了对由用户向用户态100注入的ebpf程序(即,前述合法ebpf程序)的执行标记操作。
42.需要说明的是,钩子函数(即,hook函数)是指在事件传送到终点前截获并监控事件的传输,像钩子钩上事件一样,并且在钩上事件时,处理一些自己特定的事件。因此,通过由加密数据生成hook函数代码,并将hook函数代码注入ebpf程序所编译的字节码,以实现对该字节码执行标记操作。
43.在标签进程12对由用户注入的ebpf程序所编译的字节码执行标记操作之后,标签进程12将执行标记操作后的字节码注入内核态200,以形成字节码对应的进程,并执行相应的业务。同时,由非法主体注入用户态100的ebpf程序也会被非法程序21编译成字节码注入内核态200。部署于内核态200的内核程序13接收自用户态100注入的字节码,以形成对应的进程,并执行相应的业务。
44.步骤s2、按照预设时间基于安全策略对内核态中的字节码进行检测,以将内核态中不符合安全策略的字节码确定为异常字节码,并对异常字节码进行拦截。
45.示例性地,参图2所示,内核态200中部署用于执行字节码对应业务的内核程序13以及用于检测内核程序13中的字节码是否符合安全策略的检测进程14。检测进程14从部署于用户态100的标签进程12中获取安全策略,按照预设时间基于安全策略对内核程序13中的字节码进行检测。将内核态200中不符合安全策略的字节码确定为异常字节码,并对该异常字节码进行拦截,并杀死内核态200响应由异常字节码所形成的进程。不仅达到限制由非法主体注入的ebpf程序所编译的字节码(即,非法字节码)的运行,同时,限制了内核程序13中时间戳超过有效期(即,过期)的字节码的运行,以进一步保证内核态200的安全。
46.检测进程14首先检测内核态200中的字节码是否存在由加密数据生成的函数代码;若是,则将函数代码转换为加密数据,并基于加密数据确定加密数据对应的字节码是否
符合安全策略;若否,则确定该字节码不符合安全策略。其次,通过加密数据对应的ebpf程序对应的密钥中的私钥或者公钥对加密数据进行解密,得到解密后的数据,并判断解密后的数据是否符合安全策略,以确定解密后的数据对应的字节码是否符合安全策略。最后,将不符合安全策略对应的字节码确定为异常字节码,对异常字节码进行拦截,并将异常字节码的拦截信息反馈至用户。
47.具体而言,检测进程14从标签进程12中获取安全策略,并从标签进程12中获取不同ebpf程序对应的密钥(即,公钥和私钥)。由于标签进程12对由用户注入的ebpf程序所编译的字节码执行标记操作,以将由加密数据生成的函数代码注入字节码中,因此首先检测内核态200中的字节码是否存在由加密数据生成的函数代码。若字节码中不存在由加密数据生成的函数代码,则可以直接确定该字节码为非法字节码,从而确定该非法字节码不符合安全策略,并将不符合安全策略的字节码确定为异常字节码,对异常字节码进行拦截。
48.若字节码中存在由加密数据生成的函数代码,则将该函数代码转换为加密数据,对该加密数据进行解密。若标签进程12通过公钥对标签数据进行加密,则此时检测进程14通过私钥对加密数据进行解密;若标签进程12通过私钥对标签数据进行加密,则此时检测进程14通过公钥对加密数据进行解密。具体的通过公钥或者私钥进行加密,并通过私钥或者公钥进行解密基于安全策略予以实现。对加密数据解密后,得到解密后的数据。由于前述标签进程12对标签数据进行加密时,已经确定通过公钥或者私钥进行加密,并将该公钥或者私钥写入标签数据的签名证书中,同时检测进程14从标签进程12中获取不同ebpf程序对应的密钥(即,ebpf程序、公钥以及私钥的唯一对应关系),因此在得到解密后的数据时,将解密时所用的公钥或者私钥对应的私钥或者公钥,与签名证书中写入的私钥或者公钥进行对比。若两个私钥或者公钥不相同,则确定解密后的数据对应的字节码不符合安全策略,并将不符合安全策略的字节码确定为异常字节码,对异常字节码进行拦截。通过两个私钥或者公钥的对比,确定出不相同的私钥或者公钥对应的字节码,以防止出现非法主体将非法ebpf程序所编译的字节码伪装成执行标记操作后的字节码,并由内核态200执行该字节码对应的业务的情况,从而保证了内核态200的安全。
49.例如,检测进程14从标签进程12中获取ebpf程序a对应的公钥为m,私钥为n。ebpf程序a编译后得到字节码b,通过公钥m对ebpf程序a对应标签数据进行加密,将公钥写入标签数据中的签名证书,以加密得到加密数据。由加密数据生成函数代码注入字节码b,形成字节码c。检测进程14通过私钥n对字节码c中的函数代码转换的加密数据进行解密,得到解密后的数据,从而得到解密后的数据中的公钥m’。判断ebpf程序a对应的公钥m与解密后的数据中的公钥m’是否相同,若不相同,则确定解密后的数据对应的字节码c不符合安全策略,并将不符合安全策略的字节码c确定为异常字节码,对异常字节码进行拦截。
50.简而言之,通过公钥对签名数据进行加密,则将公钥写入签名证书中,从而随签名证书、签名值以及时间戳共同形成标签数据并被公钥加密,得到加密数据。检测进程14从标签进程12中获取ebpf程序对应的密钥,并通过密钥中的私钥对加密数据进行解密时,得到解密后的数据。通过解密后的数据中的签名证书中包含的公钥与检测进程14从标签进程12中获取的密钥中的公钥进行对比。若两个公钥不一致,则确定解密后的数据不符合安全策略,以将不符合安全策略的字节码确定为异常字节码,并对其进行拦截。
51.反之,若通过私钥对签名数据进行加密,则将私钥写入签名证书中,从而随签名证
书、签名值以及时间戳共同形成标签数据并被私钥加密,得到加密数据。检测进程14从标签进程12中获取ebpf程序对应的密钥,并通过密钥中的公钥对加密数据进行解密,得到解密后的数据。通过解密后的数据中的签名证书中包含的私钥与检测进程14从标签进程12中获取的密钥中的私钥进行对比。若两个私钥不一致,则确定解密后的数据不符合安全策略,以将不符合安全策略的字节码确定为异常字节码,并对其进行拦截。
52.若两个私钥或者公钥相同,则判断解密后的数据中的id是否符合安全策略以及判断解密后的数据中的时间戳是否符合安全策略;若存在任意一种不符合安全策略,则确定解密后的数据不符合安全策略。其中,判断解密后的数据中的id是否符合安全策略,例如可以是,确定id的生成地址,即确定签名值的生成地址,若签名值不是在标签进程12中生成,则确定id不符合安全策略。还可以是,判断id是否唯一,若id不唯一,则确定id不符合安全策略。又或者是,判断id与签名证书所绑定的id是否一致等等。判断解密后的数据中的时间戳是否符合安全策略,例如可以是,判断时间戳是否超过其所标注的有效期等等。由于ebpf程序与签名值、签名证书、密钥均是唯一对应的关系,因此若前述任意一种不符合(即,签名值不是在标签进程12中生成、或者签名值不唯一、或者签名值与签名证书所绑定的签名值不一致、或者时间戳已过期),则将解密后的数据对应的ebpf程序确定为不符合安全策略,并将该不符合安全策略的ebpf程序确定为异常ebpf程序,对异常ebpf程序进行拦截。通过前述对id、签名证书以及时间戳的判断,不仅再次确定出非法主体冒充执行标记操作后的字节码(即,非法主体将非法ebpf程序所编译的非法字节码伪装成执行标记操作后的字节码),还确定出时间戳超过有效期的字节码(即,有效期过期的合法字节码),对不符合安全策略的字节码进行拦截,从而保证了内核态200的安全。
53.在对字节码进行检测之后,若字节码符合安全策略,对字节码对应的解密后的数据中的时间戳进行更新,记录检测完成对应的时间戳,并对该时间戳标注有效期,以方便后续检测进程14按照预设时间再次对内核态200中的ebpf程序进行检测。预设时间可以是基于用户所下发的指令,定期对内核态200中的字节码进行检测。也可以是当内核程序13检测到被注入新的字节码,主动向检测进程14发送检测请求,检测进程14接收并响应该检测请求对新注入的字节码进行检测,在确定新注入的字节码符合安全策略之后,形成新注入的字节码对应的进程,并执行相应的字节码。还可以是,检测进程14实时监听内核程序13,当发现内核程序13被注入新的字节码时,主动对新注入的字节码进行检测。
54.另外,前述具体对字节码如何检测的方式还可以是其他任意方式,前述检测id是否在标签进程12中生成以及id是否唯一等等,仅仅是本实施例所示出的一种检测方式,但不能因此而限定本发明的保护范围。
55.在检测进程14检测出不符合安全策略的字节码,并将不符合安全策略的字节码确定为异常字节码,对异常字节码进行拦截之后,将异常字节码的拦截信息反馈给用户。同时,检测进程14以主动方式或者以被动方式杀死内核态200响应该异常字节码所形成的进程,从而保证内核态200的安全。其中,主动方式是指检测进程14基于安全策略杀死异常字节码所形成的进程,被动方式是指用户在得到检测进程14所反馈的拦截信息,以向检测进程14下发指令以杀死异常字节码所形成的进程。通过对异常字节码的拦截以及对异常字节码所形成的进程的杀死,以实现将内核态200中不符合安全策略的字节码过滤,以保留符合安全策略的字节码,从而保证了内核态200的安全。
56.参图2所示,通过本发明所示出的一种基于ebpf的安全防护方法,用户通过箭头

向部署于用户态100中的用户程序11注入ebpf程序,用户程序11将由用户注入的ebpf程序编译成字节码,并通过箭头

将字节码注入标签进程12。标签进程12中配置安全策略,标签进程12基于配置的安全策略对由用户程序11注入的字节码执行标记操作,并通过箭头

将执行标记操作之后的字节码注入部署于内核态200中的内核程序13。内核程序13通过箭头

对物理层400的物理机等物理资源通过映射关系(例如nbd协议)挂载至内核态200,并形成对应的虚拟资源年后,通过虚拟资源执行字节码对应的业务。部署于内核态200的检测进程14通过箭头

从标签进程12中获取安全策略并获取不同ebpf程序对应的密钥,并通过箭头

从内核程序13中抓取字节码进行检测。若检测不符合安全策略,则直接对内核程序13中不符合安全策略的字节码进行拦截,并通过箭头

将对异常字节码的拦截信息反馈给用户。而非法主体通过植入恶意代码等非法手段在用户态100中部署非法程序21,通过箭头

将ebpf程序注入非法程序21,以通过非法程序21将ebpf程序编译为字节码,并通过箭头

将字节码注入内核程序13。本技术首先通过检测字节码中是否存在由加密数据生成的函数代码,以确定出非法主体注入内核程序13中的字节码(即,非法字节码),将该字节码确定为异常字节码,对其进行拦截并杀死内核态200中由该异常字节码所形成的进程,从而保证了内核态200的安全;其次,判断解密后的数据中的公钥或者私钥与ebpf程序对应的公钥或者私钥是否一致,将不一致的解密后的数据对应的字节码确定为异常字节码,并对其进行拦截,以防止出现非法主体将非法字节码冒充为执行标记操作后的字节码的情况,从而保证了内核态200的安全;最后,判断解密后的数据中的id是否在标签进程12中创建、时间戳是否过期等等,不仅再次确定出非法主体冒充执行标记操作后的字节码,还将确定出过期的字节码,进行拦截,从而再次保证了内核态200的安全。
57.进一步地,基于上文所揭示的一种基于ebpf的安全防护方法的具体示例,本实施例还揭示了一种基于ebpf的安全防护系统,运行于操作系统中。参图2所示,该基于ebpf的安全防护系统,包括:部署于用户态100的标签进程12、以及部署于内核态200的检测进程14。
58.示例性地,标签进程12基于预配置的安全策略对由用户注入的ebpf程序所编译的字节码执行标记操作,将执行标记操作后的字节码注入内核态200。检测进程14按照预设时间基于安全策略对内核态200中的字节码进行检测,以将内核态200中不符合安全策略的字节码确定为异常字节码,对异常字节码进行拦截,并杀死内核态200响应由异常字节码所形成的进程,以保证内核态200的安全。
59.具体地,用户态100内部署用户程序11、非法程序21、以及标签进程12。内核态200中部署内核程序13以及检测进程14。用户在用户界面300沿箭头

向部署于用户态100的用户程序11注入ebpf程序。用户程序11接收自用户注入的ebpf程序,对该ebpf程序进行编译得到字节码,并沿箭头

将由用户注入的ebpf程序所编译的字节码注入部署于用户态100的标签进程12。标签进程12接收自用户程序11注入的字节码,预配置安全策略对该字节码执行标记操作,以将执行标记操作后的字节码沿箭头

注入部署于内核态200的内核程序13。内核程序13沿箭头

对物理层400的物理机等物理资源通过映射关系(例如nbd协议)挂载至内核态200,并形成对应的虚拟资源年后,通过虚拟资源执行字节码对应的业务。部署内核态200的标签进程12沿箭头

从标签进程12中获取安全策略并获取不同ebpf程序对应
的密钥,并沿箭头

从内核程序13中抓取字节码进行检测。若检测不符合安全策略,则直接对内核程序13中不符合安全策略的字节码进行拦截,并沿箭头

将对异常字节码的拦截信息反馈给用户。而非法主体通过非法手段在用户态100中部署非法程序21,沿箭头

将ebpf程序注入非法程序21,以通过非法程序21将ebpf程序编译为字节码,并沿箭头

将字节码注入内核程序13。因此,通过检测进程14基于安全策略沿箭头

从内核程序13中抓取字节码进行检测,以将不符合安全策略的字节码确定为异常字节码,并对异常字节码进行拦截,并杀死内核态200响应由异常字节码所形成的进程,从而保证了内核态200的安全。
60.需要说明的是,基于ebpf的安全防护系统所包含的标签进程12以及检测进程14之间的交互逻辑所对应的技术方案,参前文所揭示的基于ebpf的安全防护方法所示,上文予以省略阐述。另外,前述基于ebpf的安全防护方法中的步骤s1所含逻辑由基于ebpf的安全防护系统中的标签进程12予以实现,前述基于ebpf的安全防护方法中的步骤s2所含逻辑由基于ebpf的安全防护系统中的检测进程14予以实现。
61.进一步地,基于上文所揭示的一种基于ebpf的安全防护方法及系统的具体实例,本实施例又揭示了一种电子设备500。参图6所示,该电子设备500包括:处理器51,由至少一个存储单元组成的存储装置52,以及在处理器51与存储装置52之间建立通信连接的通信总线53。处理器51用于执行存储装置52中存储的一个或者多个程序,以实现如前述所揭示的一种基于ebpf的安全防护方法。
62.具体的,该存储装置52可由存储单元521~存储单元52j所组成,其中,参数j取大于或者等于1的正整数。处理器51可为asic、fpga、cpu、mcu或者其他具有指令处理功能的物理硬件或者虚拟设备。通信总线53的形式并不需要予以具体限定,i2c总线、spi总线、sci总线、pci总线、pci-e总线、isa总线等,并可根据电子设备500的具体类型及应用场景需求予以合理变更。通信总线53并非本技术发明点,故在本技术中不予展开陈述。
63.存储装置52可基于ceph或者glusterfs等分布式文件系统,也可为raid0~raid7磁盘阵列,也可被配置为一块或者多块硬盘或者可移动存储装置、数据库服务器、ssd(solid-state disk)、nas存储系统或者san存储系统组成。具体地,在本实施例中,该电子设备500可被配置为超融合一体机、计算机、服务器、数据中心、虚拟集群、便携式移动终端、web系统、金融支付平台或者erp系统,以及虚拟在线支付平台/系统等;其中,超融合一体机是一种高性能多节点服务器,主要是分布式存储和服务器虚拟化技术,把计算节点、存储资源、网络交换高度集成到一台1u、2u或者4u服务器中,给企业或者终端用户提供超融合基础架构设施,以全面提升企业的it能力。
64.尤其的,本实施例所揭示的电子设备500可基于上述所揭示的基于ebpf的安全防护方法或者包含基于ebpf的安全防护系统,对基于用户在客户端中发起的访问请求或者操作所对应的一个任务或者多个并行任务予以可靠响应,尤其是在对实时性及安全性要求非常严苛的场景,例如购物网站的在线支付系统、金融机构的结算系统、电子购票系统等场景中,该电子设备500具有极其重要的技术应用价值。
65.本实施例所揭示的电子设备500可被理解为具有物理形态的实体设备(例如pos机、自动取款机),也可被理解为运行有如前述所揭示的安全防护方法的软件系统(财务系统或者erp系统)或者一种互联网在线应用(app软件),甚至可以通过光纤或者网线互联的两台或者多台组成直连拓扑结构或者树形拓扑结构或者星型拓扑结构的计算机系统/数据
中心。本实施例所揭示的电子设备500与前述相同部分的技术方案,请具体参前所述,在此不再赘述。
66.上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
67.对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
68.此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1