封装安全载荷同址覆写提权漏洞的排查方法及系统与流程

摘要: 本发明涉及网络安全,尤其涉及一种封装安全载荷同址覆写提权漏洞的排查方法及系统。背景技术:1、现有漏洞扫描平台、威胁感知平台及威胁情报系统通常分布式部署于基于开源...
封装安全载荷同址覆写提权漏洞的排查方法及系统与流程

本发明涉及网络安全,尤其涉及一种封装安全载荷同址覆写提权漏洞的排查方法及系统。

背景技术:

1、现有漏洞扫描平台、威胁感知平台及威胁情报系统通常分布式部署于基于开源社区的虚拟化集群上。由于这些系统只能大规模沿用现行技术,且对宿主虚拟化系统存在盲目信任,缺乏对物理层、数据链路层等底层协议,如互联网协议安全(internet protocolsecurity,ipsec)协议解密及带关联数据的认证加密(authenticated encryption withassociated data,aead)的独立校验能力,导致其运行稳定性与数据安全性难以得到根本保障。

2、目前,虚拟化系统在处理ipsec协议解密及aead运算时,为了削减内存拷贝开销,引入了原地(in-place)解密分支,即直接复用用户通过splice零拷贝机制传入的接收缓冲区作为解密输出目标。在此逻辑下,系统将用户态消息迭代器关联的缓冲区直接映射为内核可写的dst散列表(scatterlist),并与包含认证标签的页缓存进行链式连接,进而调用ipsec协议对应核心解密函数crypto_authenc_esn_decrypt在目标缓冲区上直接执行解密、验签及序列号处理等操作。

3、然而,缺乏对内存映射来源及权限的严格校验,导致严重的封装安全载荷同址覆写提权漏洞。在in-place优化模式下,代码未拦截splice零拷贝传入的只读文件页,直接将其作为可写dst缓冲区使用。当crypto_authenc_esn_decrypt函数执行时,会尝试在dst缓冲区末尾越界写入序列号数据,由于dst实际指向了受保护的只读文件页缓存,这种越界覆写会破坏只读文件,攻击者可利用该缺陷通过简单的用户层调用实现超级用户提权,进而导致整个漏洞扫描平台、威胁感知平台及威胁情报系统瘫痪或数据泄露。

技术实现思路

1、本发明提供一种封装安全载荷同址覆写提权漏洞的排查方法及系统,用以解决现有技术中无法在系统部署前快速排查宿主虚拟化系统是否存在封装安全载荷同址覆写提权漏洞的缺陷,实现快速排查漏洞扫描平台、威胁感知平台、威胁情报系统的宿主系统是否存在安全载荷同址覆写提权漏洞,能够在部署之前了解系统风险,防患于未然。

2、本发明提供一种封装安全载荷同址覆写提权漏洞的排查方法,包括:执行用户态测试程序,以构造目标数据包并发送至内核进行解密操作,得到操作返回结果;当内核解密过程中调用目标函数时,利用加载至内核的扩展伯克利数据包过滤器ebpf,捕获对应运行的函数栈的栈帧地址,并将栈帧地址写入ebpf映射表maps;通过用户态监控程序读取ebpfmaps中的栈帧地址,并查找编译内核的函数符号表,获取对应函数名称及堆栈映射关系;编译内核的函数符号表是预先基于对内核的目标模块的调试编译得到的;根据操作返回结果以及获取的函数名称和堆栈映射关系,确定是否存在漏洞攻击面,得到漏洞验证结果。

3、根据本发明提供的一种封装安全载荷同址覆写提权漏洞的排查方法,执行用户态测试程序,以构造目标数据包并发送至内核进行解密操作,得到操作返回结果,包括:创建算法套接字并设置算法套接字的密钥和初始化向量iv,以及将算法套接字绑定预设认证加密算法;构造包含关联数据、密文及认证标签的目标数据包,并将目标数据包传递至算法套接字,以触发内核调用对应函数,对目标数据包执行解密及完整性校验操作,得到操作返回结果。

4、根据本发明提供的一种封装安全载荷同址覆写提权漏洞的排查方法,构造包含关联数据、密文及认证标签的目标数据包,包括:构造无效认证标签数据,使得内核在执行解密校验时无法通过认证检查;其中,无效认证标签数据用于触发内核返回无效消息错误码,同时保留解密过程中的内存操作痕迹;将关联数据、密文及无效认证标签数据按预设顺序拼接,生成目标数据包。

5、根据本发明提供的一种封装安全载荷同址覆写提权漏洞的排查方法,将目标数据包传递至算法套接字,以触发内核调用对应函数,对目标数据包执行解密及完整性校验操作,得到操作返回结果,包括:通过发送消息接口将目标数据包发送至算法套接字对应的请求文件描述符,并传递解密操作参数;检测发送消息接口的执行状态;根据执行状态,确定发送消息接口成功返回,或返回无效消息错误码时,判定内核已进入原地解密分支并执行了原地解密sgl复用逻辑,确定存在漏洞攻击面作为操作返回结果;根据执行状态,确定发送消息接口返回除无效消息错误码之外的其他错误码时,判定内核解密路径被阻断,确定不存在漏洞攻击面作为操作返回结果。

6、根据本发明提供的一种封装安全载荷同址覆写提权漏洞的排查方法,通过用户态监控程序读取ebpf maps中的栈帧地址,并查找编译内核的函数符号表,获取对应函数名称及堆栈映射关系,包括:通过用户态监控程序读取ebpf maps中的栈帧地址;确定内核加载时的地址随机化偏移量,并利用地址随机化偏移量将读取到的栈帧地址转换为逻辑偏移地址;根据逻辑偏移地址,查找编译内核的函数符号表中匹配的函数条目,并根据匹配的函数条目生成包含函数名称的堆栈映射关系。

7、根据本发明提供的一种封装安全载荷同址覆写提权漏洞的排查方法,根据操作返回结果以及获取的函数名称和堆栈映射关系,确定是否存在漏洞攻击面,得到漏洞验证结果,包括:根据函数名称及堆栈映射关系,确定是否包含目标函数;根据操作返回结果确定存在漏洞攻击面时,或者,确定包含目标函数时,将内核存在漏洞攻击面作为漏洞验证结果;根据操作返回结果,确定不存在漏洞攻击面时,且确定不包含目标函数时,将未检测到漏洞攻击面作为漏洞验证结果。

8、根据本发明提供的一种封装安全载荷同址覆写提权漏洞的排查方法,根据函数名称及堆栈映射关系,确定是否包含目标函数,包括:根据函数名称,确定是否包含目标函数,得到第一判断结果;确定堆栈映射关系中是否包含目标函数,得到第二判断结果;确定第一判断结果和第二判断结果中至少存在一个结果指示包含目标函数时,判定包含目标函数;确定第一判断结果和第二判断结果均指示不包含目标函数时,确定不包含目标函数。

9、根据本发明提供的一种封装安全载荷同址覆写提权漏洞的排查方法,在查找编译内核的函数符号表之前,包括:获取内核的目标模块的源代码;对目标模块的源代码进行调试编译,得到编译后的内核的二进制文件;将目标模块对应函数符号表加入编译后的内核的二进制文件中,得到编译内核的函数符号表。

10、根据本发明提供的一种封装安全载荷同址覆写提权漏洞的排查方法,当内核解密过程中调用目标函数时,利用加载至内核的扩展伯克利数据包过滤器ebpf,捕获对应运行的函数栈的栈帧地址,并将栈帧地址写入ebpf映射表maps,包括:当内核解密过程中调用目标函数时,通过扩展伯克利数据包过滤器ebpf读取当前处理器的栈寄存器,获取函数栈上的多个返回地址作为栈帧地址;其中,ebpf预先挂载至内核的目标函数的入口位置或出口位置;将栈帧地址写入ebpf映射表maps,以供用户态监控程序轮询读取。

11、本发明还提供一种封装安全载荷同址覆写提权漏洞的排查系统,包括:程序执行模块,执行用户态测试程序,以构造目标数据包并发送至内核进行解密操作,得到操作返回结果;地址捕获模块,当内核解密过程中调用目标函数时,利用加载至内核的扩展伯克利数据包过滤器ebpf,捕获对应运行的函数栈的栈帧地址,并将栈帧地址写入ebpf映射表maps;符号解析模块,通过用户态监控程序读取ebpf maps中的栈帧地址,并查找编译内核的函数符号表,获取对应函数名称及堆栈映射关系;编译内核的函数符号表是预先基于对内核的目标模块的调试编译得到的;结果判定模块,根据操作返回结果以及获取的函数名称和堆栈映射关系,确定是否存在漏洞攻击面,得到漏洞验证结果。

12、本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述任一种所述封装安全载荷同址覆写提权漏洞的排查方法。

13、本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述封装安全载荷同址覆写提权漏洞的排查方法。

14、本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述封装安全载荷同址覆写提权漏洞的排查方法。

15、本发明提供的封装安全载荷同址覆写提权漏洞的排查方法及系统,通过执行用户态测试程序构造目标数据包并发送至内核,以触发解密操作并获取操作返回结果,从而建立漏洞验证的外部观测基础;在此过程中,利用加载至内核的ebpf捕获函数栈的栈帧地址并写入ebpf maps,实现对内核解密过程中目标函数调用的实时追踪与数据提取;接着通过用户态监控程序读取栈帧地址并查找编译内核的函数符号表,将捕获的地址解析为具体的函数名称及堆栈映射关系,从而赋予运行时数据明确的语义;最后综合操作返回结果与函数名称及堆栈映射关系进行判定,使得系统能够同时依据接口反馈结果和内部函数执行路径状态来确认目标函数是否被调用,从而利用这种结合了外部触发、内部栈监控以及符号表解析的多重验证机制,快速排查漏洞扫描平台、威胁感知平台、威胁情报系统的宿主系统是否存在安全载荷同址覆写提权漏洞,更准确地反映目标代码路径的执行情况,确保了最终得到的漏洞验证结果的准确性,能够在部署之前了解系统风险,防患于未然。