AFL和libFuzzer的可用性评估与计算机科学学生

心理健康应用与在线支持社区计算方法在HCI中的应用大学教授与研究人员软件工程师与开发者

文献标题

A Usability Evaluation of AFL and libFuzzer with CS Students

文献信息

  • 主题领域: 软件安全测试,特别是模糊测试工具的可用性研究
  • 关键词: 可用安全性与隐私、模糊测试、用户研究、学生参与者、工具可用性

研究背景与问题

  • 问题与挑战:

    1. 模糊测试作为一种发现软件漏洞的重要技术,其复杂性和对专业知识的高要求阻碍了普通开发者的使用。
    2. 现有研究较少关注模糊测试工具的可用性问题,多集中在其性能优化上。
    3. 之前的研究(如Plöger等人的研究)显示,即便是计算机科学学生和高水平的CTF选手,在完成模糊测试任务时也面临诸多困难。大部分参与者未能完成任务,难以获得关于模糊测试流程后续步骤的有效数据。
  • 重要性:

    • 提高模糊测试工具的可用性可以扩大其应用范围,使非专家也能便利地使用,从而缩小专业人员与普通开发者之间的技术差距,提高软件安全性。
  • 研究动机与相关工作:

    • 作者旨在通过详细分析两个流行模糊测试工具(AFL 和 libFuzzer)的实际使用情况,弥补现有研究在工具可用性方面的不足。
    • 借助用户研究的方式,识别这些工具在使用过程中可能存在的问题,探索如何改进可用性。

解决方案

方法

  • 总体思路:

    • 将两个主流模糊测试工具 AFL 和 libFuzzer 的可用性与性能进行对比,通过学生参与的一项深入的20小时用户研究,全面分析使用流程的每一步。
  • 创新之处:

    1. 在研究设计上,任务被划分为七个明确的子任务,方便记录数据和诊断问题。
    2. 提供了一个支持系统 (Hints & Help),用于在参与者卡住时提供帮助,提升数据采集范围。
    3. 包含了 AFL 的模糊测试以及 libFuzzer 的对比,这在之前的研究中未被深入比较。
  • 实验设计:

    1. 对象: 47名具有基本C/C++和Linux能力的计算机科学研究生。参与者被随机分配并对两个模糊测试工具进行交替使用。
    2. 任务分配: 参与者需完成7个明确划分的子任务,包括理解目标程序、选择功能点、编写模糊测试目标代码(fuzz targets)、运行测试工具等。
    3. 工具与目标:
      • 测试工具:AFL和libFuzzer。
      • 目标程序:选择了两个简单且实际的开源项目(libroxml 和 tomlc99)。
    4. 评分与数据收集:
      • 单独评分参与者在每一步的完成情况。
      • 收集参与者的目录和命令行历史记录、访谈内容以及操作日志。

研究成果

主要发现

  1. 成功率:

    • 使用AFL的成功率为29%,libFuzzer为14%。
    • 在完成所有任务的参与者中,仅53%使用AFL成功找到漏洞,而libFuzzer仅为18%。
  2. 可用性问题:

    • 文档不足: AFL 的文档被认为难以阅读,libFuzzer文档稍好但仍不便用户理解。
    • 挑战步骤:
      • libFuzzer 在编译和工具集成(instrumentation)上困难较多,导致许多参与者无法正确完成所需流程。
      • 使用内存或地址检测工具(如 AddressSanitizer,简称ASAN)对两个工具均造成了阻碍。
    • 运行信息不友好:
      • AFL 的运行时输出较好,但 crash 的信息反馈不够清晰。
      • libFuzzer 的运行时信息不直观,但 crash 信息反馈较好(有行号、函数名等细节)。
    • 模糊测试启停决策困难: 参与者不确定模糊测试运行是否正常,也无法判断何时可以结束测试。
  3. 参与者表现:

    • 成功参与者通常具有较好的挫折耐受力,但总体表现与其编程经验关联性较小。
    • 少部分人采用了目标程序的 "模糊目标代码外" 测试(Fuzz-Target-Less),这在 AFL 上表现较好。

优势对比

  • AFL:
    • 文档用户支持稍弱,但流程错误提示直观,运行时信息反馈更明确。
    • 不需要编写复杂模糊目标代码使任务复杂性有所降低。
  • libFuzzer:
    • Crash输出较详细,特别是在使用 ASAN 时。
    • 但整体可用性远不如 AFL,参与者在其使用过程中遇到了更多问题。

实验设计创新成功

通过划分子任务和提供支持系统,相较之前的研究(Plöger等),更多参与者完成了全部步骤,为模糊测试工具的改进提供了更详细的数据支持。

提出的改进建议

  1. 改进文档:
    • 添加高层次总览,细分步骤,提供完整的使用示例。
  2. 构建流程自动化:
    • 简化和自动化目标程序的编译与集成过程。
  3. 工具平等提示:
    • 提高如编译错误、未集成等关键问题的警告信息。
  4. 增强界面指导:
    • 提供可视化运行时反馈,简化结果分析。
  5. 改善模糊测试元数据:
    • 改进与模糊测试性能相关的指标及其可解释性,使用户能更好地理解运行结果。
  6. 更智能的无模糊目标测试:
    • 提升对不需要编写 fuzz target 工作流的支持。

局限性与未来方向

  • 局限性:

    • 样本仅为计算机科学学生,结果可能与实际开发者存在偏差。
    • 目标程序设计简化,难以完全反映真实开发场景。
    • 任务的分步指导可能已减轻了部分实际工具使用的复杂性。
  • 未来方向: 推广此方法至更复杂的目标程序和更广泛的开发者群体,包括专业软件工程师。同时,基于本研究推荐的改进点设计出新一代模糊测试工具,并通过真实开发者评价其效果。

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/papers/chi/96236/2023

广告推荐

学习 AI 编程到 CodeNow

open_in_new打开DOI链接
DOI: https://doi.org/10.1145/3544548.3581178
一眼看懂

论文快照

fact_check
dataset
来源
CHI
calendar_month
年份
2023
emoji_events
奖项
未标记奖项
group
作者
3 位作者
sell
研究子方向
心理健康应用与在线支持社区、计算方法在HCI中的应用
work
职业/产业
大学教授与研究人员、软件工程师与开发者
article
内容状态
已索引正文
hub
相关论文
4 篇相关论文