AFL和libFuzzer的可用性评估与计算机科学学生
心理健康应用与在线支持社区计算方法在HCI中的应用大学教授与研究人员软件工程师与开发者
文献标题
A Usability Evaluation of AFL and libFuzzer with CS Students
文献信息
- 主题领域: 软件安全测试,特别是模糊测试工具的可用性研究
- 关键词: 可用安全性与隐私、模糊测试、用户研究、学生参与者、工具可用性
研究背景与问题
-
问题与挑战:
- 模糊测试作为一种发现软件漏洞的重要技术,其复杂性和对专业知识的高要求阻碍了普通开发者的使用。
- 现有研究较少关注模糊测试工具的可用性问题,多集中在其性能优化上。
- 之前的研究(如Plöger等人的研究)显示,即便是计算机科学学生和高水平的CTF选手,在完成模糊测试任务时也面临诸多困难。大部分参与者未能完成任务,难以获得关于模糊测试流程后续步骤的有效数据。
-
重要性:
- 提高模糊测试工具的可用性可以扩大其应用范围,使非专家也能便利地使用,从而缩小专业人员与普通开发者之间的技术差距,提高软件安全性。
-
研究动机与相关工作:
- 作者旨在通过详细分析两个流行模糊测试工具(AFL 和 libFuzzer)的实际使用情况,弥补现有研究在工具可用性方面的不足。
- 借助用户研究的方式,识别这些工具在使用过程中可能存在的问题,探索如何改进可用性。
解决方案
方法
-
总体思路:
- 将两个主流模糊测试工具 AFL 和 libFuzzer 的可用性与性能进行对比,通过学生参与的一项深入的20小时用户研究,全面分析使用流程的每一步。
-
创新之处:
- 在研究设计上,任务被划分为七个明确的子任务,方便记录数据和诊断问题。
- 提供了一个支持系统 (Hints & Help),用于在参与者卡住时提供帮助,提升数据采集范围。
- 包含了 AFL 的模糊测试以及 libFuzzer 的对比,这在之前的研究中未被深入比较。
-
实验设计:
- 对象: 47名具有基本C/C++和Linux能力的计算机科学研究生。参与者被随机分配并对两个模糊测试工具进行交替使用。
- 任务分配: 参与者需完成7个明确划分的子任务,包括理解目标程序、选择功能点、编写模糊测试目标代码(fuzz targets)、运行测试工具等。
- 工具与目标:
- 测试工具:AFL和libFuzzer。
- 目标程序:选择了两个简单且实际的开源项目(libroxml 和 tomlc99)。
- 评分与数据收集:
- 单独评分参与者在每一步的完成情况。
- 收集参与者的目录和命令行历史记录、访谈内容以及操作日志。
研究成果
主要发现
-
成功率:
- 使用AFL的成功率为29%,libFuzzer为14%。
- 在完成所有任务的参与者中,仅53%使用AFL成功找到漏洞,而libFuzzer仅为18%。
-
可用性问题:
- 文档不足: AFL 的文档被认为难以阅读,libFuzzer文档稍好但仍不便用户理解。
- 挑战步骤:
- libFuzzer 在编译和工具集成(instrumentation)上困难较多,导致许多参与者无法正确完成所需流程。
- 使用内存或地址检测工具(如 AddressSanitizer,简称ASAN)对两个工具均造成了阻碍。
- 运行信息不友好:
- AFL 的运行时输出较好,但 crash 的信息反馈不够清晰。
- libFuzzer 的运行时信息不直观,但 crash 信息反馈较好(有行号、函数名等细节)。
- 模糊测试启停决策困难: 参与者不确定模糊测试运行是否正常,也无法判断何时可以结束测试。
-
参与者表现:
- 成功参与者通常具有较好的挫折耐受力,但总体表现与其编程经验关联性较小。
- 少部分人采用了目标程序的 "模糊目标代码外" 测试(Fuzz-Target-Less),这在 AFL 上表现较好。
优势对比
- AFL:
- 文档用户支持稍弱,但流程错误提示直观,运行时信息反馈更明确。
- 不需要编写复杂模糊目标代码使任务复杂性有所降低。
- libFuzzer:
- Crash输出较详细,特别是在使用 ASAN 时。
- 但整体可用性远不如 AFL,参与者在其使用过程中遇到了更多问题。
实验设计创新成功
通过划分子任务和提供支持系统,相较之前的研究(Plöger等),更多参与者完成了全部步骤,为模糊测试工具的改进提供了更详细的数据支持。
提出的改进建议
- 改进文档:
- 添加高层次总览,细分步骤,提供完整的使用示例。
- 构建流程自动化:
- 简化和自动化目标程序的编译与集成过程。
- 工具平等提示:
- 提高如编译错误、未集成等关键问题的警告信息。
- 增强界面指导:
- 提供可视化运行时反馈,简化结果分析。
- 改善模糊测试元数据:
- 改进与模糊测试性能相关的指标及其可解释性,使用户能更好地理解运行结果。
- 更智能的无模糊目标测试:
- 提升对不需要编写 fuzz target 工作流的支持。
局限性与未来方向
-
局限性:
- 样本仅为计算机科学学生,结果可能与实际开发者存在偏差。
- 目标程序设计简化,难以完全反映真实开发场景。
- 任务的分步指导可能已减轻了部分实际工具使用的复杂性。
-
未来方向: 推广此方法至更复杂的目标程序和更广泛的开发者群体,包括专业软件工程师。同时,基于本研究推荐的改进点设计出新一代模糊测试工具,并通过真实开发者评价其效果。
研究问题 / 现实痛点
这篇论文在当前问题库中对应的问题线索。
help
研究问题
3- AFL 和 libFuzzer 这些模糊测试工具的可用性如何?分类: 编程、计算与物理原型教育同类问题arrow_forward
- 影响计算机专业学生使用模糊测试工具成功率的关键障碍是什么?分类: 编程、计算与物理原型教育同类问题arrow_forward
- AFL 和 libFuzzer 在可用性和性能上有哪些对比优势?分类: 编程、计算与物理原型教育同类问题arrow_forward
lightbulb
现实痛点
1- 开发者难以使用复杂的模糊测试工具来提升软件安全。分类: 编程、计算与物理原型教育同类问题arrow_forward
快捷操作
广告推荐
学习 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 篇相关论文