分享自:

预测性上下文敏感模糊测试

期刊:network and distributed system security (ndss) symposium 2024DOI:10.14722/ndss.2024.24113

这篇文档属于类型a,是一篇关于预测性上下文敏感模糊测试(predictive context-sensitive fuzzing)的原创性研究论文。以下是详细的学术报告:


一、研究作者与发表信息

本研究由Pietro Borrello(罗马大学)、Andrea Fioraldi(EURECOM)、Daniele Cono D’Elia(罗马大学)、Davide Balzarotti(EURECOM)、Leonardo Querzoni(罗马大学)和Cristiano Giuffrida(阿姆斯特丹自由大学)合作完成,发表于2024年网络与分布式系统安全研讨会(NDSS Symposium 2024)。论文标题为《Predictive Context-Sensitive Fuzzing》,DOI编号为10.14722/ndss.2024.24113。


二、学术背景

研究领域与动机

该研究属于软件安全测试领域,聚焦于覆盖率引导的模糊测试(Coverage-Guided Fuzzing, CGF)技术。传统CGF工具(如AFL)通过追踪代码覆盖率(如基本块或边覆盖率)来发现程序漏洞,但忽略了执行路径的上下文信息(例如调用栈的差异)。这种局限性可能导致模糊测试器遗漏某些仅在特定上下文下触发的漏洞。

研究目标

团队提出了一种预测性上下文敏感模糊测试方法,旨在通过以下创新解决上述问题:
1. 精准的上下文敏感覆盖追踪:通过函数克隆(function cloning)技术避免哈希碰撞问题;
2. 选择性上下文敏感策略:仅对预测为“高价值”的代码区域应用上下文敏感分析;
3. 数据流多样性预测模型:基于静态分析识别可能受益于上下文敏感的调用点。


三、研究流程与方法

1. 函数克隆技术

  • 原理:为每个调用上下文创建被调用函数的克隆副本,将原始调用重定向至克隆函数。
  • 优势:无需运行时调用栈追踪,直接利用现有覆盖率追踪机制(如AFL++的边覆盖率)区分上下文,避免哈希碰撞。
  • 实现:通过LLVM编译器在链接时(link-time)对目标程序进行插桩,生成克隆函数并重定向调用。

2. 选择性上下文敏感策略

  • 问题背景:完全上下文敏感会导致状态爆炸(如LibXML2可能有数百万个调用上下文)。
  • 解决方案:通过算法1(优先级克隆算法)选择性地克隆调用点,优先处理数据流多样性高的区域。
  • 优先级计算:基于静态指针分析(SVF框架的流敏感分析),统计每个调用点的参数对象多样性。优先级公式为:
    [ p = (n - n_o) ] 其中,(n)为函数总调用点数量,(n_o)为传递相同抽象对象的调用点数量。

3. 数据流多样性预测

  • 分析对象:函数指针类型参数的抽象对象(allocation sites)。
  • 工具链:使用SVF框架的流敏感指针分析(flow-sensitive pointer analysis)构建调用点的数据流特征。
  • 优化:忽略高频调用的错误处理函数(如调用者占比≥25%的函数),降低噪声。

4. 实验验证

  • 测试平台:在FuzzBench基准测试套件上对比四种配置:
    • Context:基于哈希的上下文敏感(Angora风格);
    • LTO:无碰撞的边覆盖率(AFL++优化版);
    • Predictive:本文提出的方法;
    • Random:随机克隆策略基线。
  • 评估指标:唯一漏洞数量、队列大小、吞吐量、代码覆盖率。

四、主要结果

1. 漏洞发现能力

  • Predictive发现125个唯一漏洞,显著优于Context(102个,+22.55%)和LTO(112个,+11.6%)。
  • 新漏洞:在5个成熟项目(如FFmpeg、libxml2)中发现8个长期存在的安全漏洞,其中6个获得CVE编号。
  • 典型案例:在STB图像库中,通过克隆stbi__process_marker函数的调用上下文,触发了一个堆溢出漏洞(CVE-2023-XXX)。

2. 性能与效率

  • 队列增长:Predictive的队列大小仅比LTO增加26.4%,而Context增加81.7%。
  • 吞吐量:Predictive的执行速度比LTO降低6.5%,远优于Context的20.3%降幅。
  • 覆盖率:Predictive在8个测试项目中覆盖率超过LTO,表明其能更有效地探索已有覆盖区域的状态空间。

3. 数据流预测的有效性

  • 高优先级((p \geq 0.9))的克隆选择在75%的案例中直接关联到漏洞触发路径。
  • 在libxml2中,预测模型成功识别出导致XML解析器状态差异的关键调用点。

五、结论与价值

科学价值

  1. 理论创新:提出了一种基于数据流多样性的上下文敏感预测模型,为模糊测试的路径探索提供了新思路。
  2. 技术突破:通过函数克隆实现无碰撞的上下文敏感覆盖追踪,解决了传统哈希方法的精度与性能矛盾。

应用价值

  1. 工业实践:方法已集成至AFL++,可直接用于现实世界的模糊测试任务。
  2. 漏洞挖掘:在已被广泛测试的项目中发现新漏洞,证明了其实际有效性。

六、研究亮点

  1. 选择性上下文敏感:首次将“预测性选择”引入模糊测试,避免全程序上下文敏感的状态爆炸问题。
  2. 静态分析与动态测试结合:利用静态指针分析指导动态测试的优先级决策,提升漏洞挖掘效率。
  3. 开源实现:代码已在GitHub开源(https://github.com/eurecom-s3/predictive-cs-fuzzing),推动社区应用。

七、其他价值

论文还揭示了传统上下文敏感方法(如Angora)的局限性:
- 哈希碰撞导致50.7%的覆盖图条目失效(使用(2^{16})大小映射时);
- 增大映射至(2^{20})可减少碰撞,但会因缓存未命中导致吞吐量下降一个数量级。
这些发现为后续研究提供了重要参考。

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com