近期,国防科技大学计算机学院在网络协议软件安全分析方向取得新成果。团队深挖网络协议软件漏洞根源与网络协议软件语义提取方法,最新研究工作“基于确定性重放的针对多类型网络协议漏洞的根源性分析方法”被网络与信息安全领域国际会议IEEE TrustCom 2022接收,弥补了现有针对网络协议软件漏洞根源性分析方法的缺失。IEEE TrustCom是中国计算机学会推荐的C类国际会议。
题目
SEEKER: A Root Cause Analysis Method Based on Deterministic Replay for Multi-Type Network Protocol Vulnerabilities
作者
Runhao Liu, Bo Yu, Baosheng Wang, Jianbin Ye, Jianxin Huang and Xiangdong Kong
主要内容
网络协议软件被广泛的应用于重要安全场景并承担着核心功能,然而网络协议软件漏洞层出不穷,往往会对现实生产和生活造成严重危害。分析网络协议软件漏洞根源对于增强协议实现安全性具有重要意义。相比于常规终端软件,网络协议软件具有更复杂的程序逻辑,涉及多种协议状态,如认证状态、会话状态,覆盖更多漏洞种类,包括内存破坏类以及逻辑类漏洞,涵盖更加多样的程序语义信息,分布于更多的平台架构中。现有的漏洞根源性分析方法ARCUS主要面向常规终端软件,符号执行技术的使用限制其应用于协议加密过程,硬件处理器追踪技术的使用限制其应用于物理资源有限的嵌入式平台中。因此,目前急需一个针对网络协议软件漏洞的根源性分析方法。
国防科技大学计算机学院的研究生刘润昊、叶健彬、黄见欣、孔祥东在国防科技大学研究员王宝生、副研究员喻波的联合指导下,基于确定性重放分析方法,提出了一种针对网络协议软件的多类型漏洞进行根源性分析方法--SEEKER。如图一所示,SEEKER全系统地记录网络协议软件漏洞触发过程,然后确定性重放这一过程,在此过程中,SEEKER根据多层次语义模型动态提取粒度的协议语义信息,当经过漏洞知识模型相关的检查点后,检测维护的程序语义信息是否满足漏洞规则,如果语义满足某一漏洞规则,那么就会生成漏洞根源性分析报告。
图一SEEKER的系统架构图
由于网络协议软件多分布于复杂的嵌入式平台、物联网固件当中,因此我们选择全系统确定性重发技术来监控漏洞触发过程以及提取协议程序语义信息。程序语义的全面程度决定了根源性分析的能力。我们提出了一种多层次语义模型,形式化定义如下:
Model = (I, O, S, M)
(1)I代表指令层,主要关注内存访问信息。
(2)O = {Ostack, Oheap, Oauth, Osession}代表对象层,对象语义涵盖stack,heap以及用于表示认证状态以及会话状态的内存对象。
(3)S = {Sstack,Sheap,Scommand}代表状态属性层,状态属性语义涵盖栈、堆命令执行函数属性。
(4)Sstack = {size,address}栈属性包括可用stack空间的大小以及stack的起始地址。
(5)Sheap = {size,address,Available}堆属性包括堆大小,堆起始地址以及代表堆是否可用的布尔值。
(6)Scommand = {para,Controlled}命令执行函数属性包括函数参数以及代表参数是否可控的布尔值。
(7)M代表当前报文序列号。
图二所示为构建论文中样例代码的多层次语义信息的过程图。在获取到全面的协议语义信息之后,本工作又定义了七类漏洞规则,涵盖逻辑类与内存破坏类两大类漏洞,具体为认证绕过、命令注入,协议状态混淆,内存泄漏,缓冲区溢出,双重释放以及释放后使用漏洞。
图二构建多层次语义模型的样例过程
SEEKER成功地在7类漏洞、4种真实世界网络协议软件,两种不同平台上进行测试。图三所示为SEEKER自动化生成的针对内存泄漏漏洞的根源性分析报告,图中清晰的展示了漏洞触发点以及与漏洞触发有关的详细信息,能够迅速的帮助安全从业人员定位漏洞根源。在实验过程中,SEEKER还发现了3个零日漏洞。此外SEEKER具有很强的适应性和可伸缩性,其分析的单条执行路径包含多达135,437,793条指令和多达15,893,356次内存访问请求。
图三 CVE-2014-0160内存泄漏漏洞根源行分析报告
(刘润昊)
声明:本文来自ipasslab,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。