基于LLVM的AFL分析和自动故障检测
发布时间
阅读量:
阅读量
简介
模糊测试(Fuzzing)是一种通过设计特定测试输入,对软件实施大规模测试以识别潜在漏洞的技术手段。目前,诸多严重的远程代码执行及权限提升类漏洞均是借助Fuzzing技术被发现的,该技术已被证实是当前检测软件安全隐患最为有效的测试方式。然而,Fuzzing方法仍存在路径覆盖率不足的问题,而许多代码缺陷的触发往往需要更高的路径覆盖度,而非单纯的随机输入。
AFL(American Fuzzy Lop)是一款采用遗传算法生成测试用例的模糊测试工具,能够有效应对上述挑战。AFL提供了两种不同的模糊测试策略:
- 针对开放源代码软件:在编译过程中植入插桩代码,以便于进行fuzz操作
- 针对非开放源代码软件:结合QEMU工具直接对二进制文件实施fuzz
此外,AFL分别基于gcc和llvm平台实现了两种版本,本文仅探讨基于llvm架构的AFL在针对具备源码的开源软件时所采用的插桩与fuzz流程。
使用
流程概述
首先采用afl-clang-fast工具对源代码进行编译并插入检测点,随后运行afl-fuzz程序,以testcase(即输入的测试文件)作为程序的输入进行执行。AFL将在该testcase的基础上自动进行变异操作,生成新的输入数据,从而促使程序出现崩溃现象。所有引发崩溃的案例均会被系统记录下来,以便后续开展深入分析。
全部评论 (0)
还没有任何评论哟~
