Libafl

渗透技巧 2年前 (2022) admin
817 0 0

 本次分享的论文:《LibAFL: A Framework to Build Modular and Reusable Fuzzers》发表于acm ccs 2022。

Libafl

background

目前学术界fuzzing研究现状:

  • 大多数研究都基于afl/afl++进行二次开发

  • 不同的研究工作之间互不兼容

  • fuzzer本身没有一个精确、普适性的标准定义

在这个背景下,作者定义了fuzzer的组成,并基于这些定义使用rust语言实现了Libafl。

Modern fuzzer的组成

  1. Input:被fuzz程序的输入数据

  2. Corpus:输入数据和附属数据的存储

  3. Schedular:从corpus中取种子的策略

  4. Stage:对单个testcase进行操作的action unit

  5. Observer:提供执行一次目标程序的信息

  6. Executer:使用输入来执行程序

  7. Feedback:依据程序的执行反馈结果,来决定当前输入是否加入corpus

  8. Mutator:从一个或多个输入生成新的testcases

  9. Generator:从0开始生成一个新的测试用例

Design

Libafl的组成主要分为三部分:libafl core、libafl targets以及libafl CC。libafl core包含fuzzer组件及其实现,它的很大一部分只依赖于 Rust core+alloc,因此可以在没有任何标准库的情况下运行。LibAFL Targets 包含存在于目标程序中的代码,例如用于覆盖跟踪的运行时库。libafl CC提供编译wrapper。
Libafl

Evaluation

libafl针对不同类型的fuzzing技术如struct aware、roadblock bypassing,都做了对比实验,结果如下:

Libafl


Libafl


Libafl


Libafl


Libafl


原文始发于微信公众号(COMPASS Lab):Libafl

版权声明:admin 发表于 2022年10月30日 下午5:30。
转载请注明:Libafl | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...