[论文解读] DeFuzz: Deep Learning Guided Directed Fuzzing
DeFuzz 提出了一种由深度学习引导的定向模糊测试框架,该框架使用预训练的 BiLSTM 模型通过分析函数抽象语法树(AST)中的注意力词来识别潜在的脆弱代码位置。随后,它将基于 AFL 的模糊测试引导至这些预测位置,在真实世界应用程序中比 AFL 多发现 43% 的漏洞,同时提升了代码覆盖率和效率。
Fuzzing is one of the most effective technique to identify potential software vulnerabilities. Most of the fuzzers aim to improve the code coverage, and there is lack of directedness (e.g., fuzz the specified path in a software). In this paper, we proposed a deep learning (DL) guided directed fuzzing for software vulnerability detection, named DeFuzz. DeFuzz includes two main schemes: (1) we employ a pre-trained DL prediction model to identify the potentially vulnerable functions and the locations (i.e., vulnerable addresses). Precisely, we employ Bidirectional-LSTM (BiLSTM) to identify attention words, and the vulnerabilities are associated with these attention words in functions. (2) then we employ directly fuzzing to fuzz the potential vulnerabilities by generating inputs that tend to arrive the predicted locations. To evaluate the effectiveness and practical of the proposed DeFuzz technique, we have conducted experiments on real-world data sets. Experimental results show that our DeFuzz can discover coverage more and faster than AFL. Moreover, DeFuzz exposes 43 more bugs than AFL on real-world applications.
研究动机与目标
- 解决传统模糊测试在实现高代码覆盖率和针对特定漏洞方面效率低下的问题。
- 通过利用深度学习识别可能脆弱的函数和代码位置,减少漏洞检测中的误报。
- 通过基于注意力的 BiLSTM 模型从软件函数的 AST 中预测脆弱地址,提升定向模糊测试的效率。
- 通过结合静态分析(AST 提取)与动态、定向模糊测试,增强软件安全测试能力。
- 评估深度学习在引导真实世界软件漏洞模糊测试方面的有效性。
提出的方法
- 从开源项目(LibTIFF、LibPNG、FFmpeg)的源代码中提取函数并生成抽象语法树(AST)。
- 基于通用漏洞披露(CVE)和国家漏洞数据库(NVD)记录,将函数标记为脆弱或非脆弱。
- 在标记的 AST 上训练基于注意力的双向长短期记忆(BiLSTM)模型,以识别与漏洞相关的注意力词。
- 使用训练好的模型预测新、未见过的软件中潜在的脆弱代码位置(地址)。
- 使用 AFLgo 对预测的脆弱位置实施定向模糊测试,将变异操作集中于高风险代码区域。
- 利用控制流图(CFG)计算当前执行路径到目标位置的距离,以指导模糊测试方向。
实验结果
研究问题
- RQ1在 AST 上训练的深度学习模型能否准确预测真实世界软件中的脆弱代码位置?
- RQ2将模糊测试引导至预测的脆弱位置是否能相比传统模糊测试提升代码覆盖率和漏洞发现能力?
- RQ3与 AFL 相比,DeFuzz 在发现漏洞数量和首次崩溃时间方面表现如何?
- RQ4预测的脆弱位置在多大程度上与真实世界应用程序中的实际错误位置一致?
- RQ5基于注意力的深度学习与定向模糊测试相结合,在减少误报和提升漏洞检测方面效果如何?
主要发现
- DeFuzz 在七个真实世界应用程序中发现了 63 个漏洞,而 AFL 仅发现 20 个漏洞。
- 在真实世界应用程序中,DeFuzz 比 AFL 多暴露了 43 个漏洞,显著提升了漏洞检测能力。
- 在六个应用程序中,AFL 在 24 小时内未能发现任何崩溃,而 DeFuzz 在所有六个应用中均成功暴露了崩溃。
- 该深度学习模型在 libming 的七个应用程序中准确预测了所有实际错误位置,且在 gifsponge 中的预测位置也极为接近(例如,764/802 行 vs. 771/790 行)。
- 通过聚焦于预测的脆弱区域而非随机输入生成,DeFuzz 实现了更快的代码覆盖率和更高的效率。
- 该模型检测到了内存溢出和双重释放漏洞,而 AFL 仅检测到内存溢出漏洞,表明其具备更广泛的漏洞暴露能力。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。