G.O.S.S.I.P 阅读推荐 2023-05-30 Bleem

admin 2023年5月31日08:53:40评论68 views字数 2043阅读6分48秒阅读模式

今天要给大家推荐的论文是来自清华大学软件学院Wingtecher Lab投稿的最新研究Bleem: Packet Sequence Oriented Fuzzing for Protocol Implementations,目前该工作已发表于USENIX Security 2023。

G.O.S.S.I.P 阅读推荐 2023-05-30 Bleem

研究背景

协议实现是网络基础设施的基石,需要正确处理潜在攻击者的畸形或恶意流量。

模糊测试作为一种自动化软件测试技术,在检测软件漏洞方面非常有效。然而,传统的协议模糊器两方面问题。

首先,盲目生成测试报文降低效率。经典协议模糊测试器Peach基于用户预设的测试模型生成报文,但缺乏程序反馈,难以识别有价值尝试并用于进一步优化。为解决此问题,一些方法引入了进化算法:通过覆盖率识别有价值的报文,并直接保存用于后续变异,这基于相同报文在发送给同一协议程序时具有可复现行为的假设。然而,这些方法仍存在局限性:首先,这些反馈机制需要对源代码或二进制程序进行插桩,不适用于黑盒测试场景。其次,一些协议的特定验证规则可能使现有的进化算法失效。如TLS、DTLS和SSH等协议,在握手过程中采用随机数防止“重放攻击”,在这种情况下,之前探索过程中保留的有价值的报文无法再次重现当时的行为,因此,后续基于这些报文的变异难以产生有价值的结果。

其次,由于协议是有状态的系统,被测程序的输入空间受所处状态的约束。有效遍历协议状态空间并覆盖多样交互情形需精心构造报文序列,这涉及复杂的协议逻辑,包括报文的传输顺序及报文的语法语义正确性。Peach基于用户自定义的协议模型生成报文序列,它能有效覆盖模型内涉及的逻辑,但无法测试超出模型描述的逻辑。

技术方案

与以往的协议测试模式只测试协议服务端不同,Bleem将协议的客户端引入进来,将服务端和客户端作为整体的测试对象SUT,并采用Man-in-the-Middle的测试方式。下图是Bleem的框架设计图,主要分为两个模块。

G.O.S.S.I.P 阅读推荐 2023-05-30 Bleem

第一个模块是反馈收集模块。Bleem引入了一种非侵入性的实时反馈机制,通过分析待测系统SUT的输出(即报文序列)实现。其基本原理在于,报文序列既反映协议系统内部状态,又具有结构化特点。因此,Bleem在运行过程中收集目标系统的输出报文序列,分析其中传达的语义,并以客户端与服务端作为一个整体系统的视角来构建系统状态转换图。

具体来说,在分析报文时,Bleem采用了报文解析方法,通过报文中的类型字段识别报文的语义信息,并对具体报文进行“抽象化”。例如,下图展示了QUIC协议握手过程,图中的报文表示经过抽象化处理的结果,如Intial[CRYPTO]代表该报文为Intial报文,且其中包含一个CRYPTO类型的子帧。

G.O.S.S.I.P 阅读推荐 2023-05-30 Bleem

基于此,作者提出了系统状态追踪路径,以每个报文发送时间节点进行建模。下图展示了将上述会话建模后的状态追踪路径。每个状态涉及协议参与双方的状态,例如状态"S(b)|C(a)"表示客户端(C)在发送完a报文后,服务器(S)即将回复b报文。

G.O.S.S.I.P 阅读推荐 2023-05-30 Bleem

第二个模块是导向性变异模块。首先,Bleem通过不断合并系统状态追踪路径动态地构建系统状态追踪图(SSTG),基于此引导模糊测试方向,既促进状态图的全面遍历,又为不同状态提供不同输入以探索未知状态空间。Bleem使用更丰富的信息来扩展SSTG,使其能够为达到所需状态提供指导。与以往的工作直接保存协议报文来保存“有趣”路径的方式不同,Bleem保存触发该“有趣”路径过程中的初始报文及变异算子,并将这些信息记录在系统状态追踪图的跳转上。
同时,为了增强异常触发能力,Bleem引入了两层面的变异算子,包括报文层面和序列层面。报文层面与常见的报文变异相同,序列层面则引入了报文重发和报文乱序两种操作。

G.O.S.S.I.P 阅读推荐 2023-05-30 Bleem

最后,与现有工作以协议模型或现有报文为基础产生测试报文的方式不同,作者观察到协议逻辑是在服务器和客户端内实现的,因此可以根据观察到的双方之间的交互流量,以此为基础生成协议逻辑感知的数据包序列,从而尽可能满足报文间的字段参数依赖性,提升测试效率。
效果
Bleem在15个常用的协议实现上进行了适配和实验,共发现了15个漏洞,其中10个被分配了CVE编号。跟其他工具Peach, BooFuzz, AFLNet, SGFuzz和Snipuzz相比,Bleem覆盖率可以分别提升28.5%,48.9%,35.7%,23.4%,和40.3%。

G.O.S.S.I.P 阅读推荐 2023-05-30 Bleem




更多的技术实现和实验细节可以访问原文: https://www.usenix.org/conference/usenixsecurity23/presentation/luozhengxiong 投稿作者介绍: 罗正雄 清华大学软件学院直博四年级学生,主要研究方向为网络协议的安全,相关研究成果发表于USENIX Security、DAC、EMSOFT等,并获得EMSOFT'19和EMSOFT'22最佳论文提名。

原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2023-05-30 Bleem

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月31日08:53:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2023-05-30 Bleemhttps://cn-sec.com/archives/1776262.html

发表评论

匿名网友 填写信息