DOI : https://doi.org/10.1145/3548606.3560602 

[LibAFL: A Framework to Build Modular and Reusable Fuzzers]

Fioraldi, Andrea, et al. "LibAFL: A Framework to Build Modular and Reusable Fuzzers." Proceedings of the 2022 ACM SIGSAC Conference on Computer and Communications Security. 2022. 

이 논문은 ACM CCS 2022에서 발표되었으며, 저자인 Andrea Fioraldi 은 프랑스 EURECOM에 소속되어있다. 그는 AFL++를 운영하고 있는 사람이기도 하다(참고: AFL++ 논문리뷰)


소프트웨어의 버그 및 취약점을 탐지하는 방법으로써 Fuzzing이 널리 활용되고 있다. 특히 AFL이라는 도구가 공개된 이후 많은 연구자들이 이 프로젝트를 기반으로 자신만의 기능들을 추가하는 작업을 많이 해왔다. 그런데 이런식으로 파생되어 나오는 작업들이 너무 많다보니, 이것들을 객관적으로 평가하고 좋은 점을 선택하여 차용하는데 많은 어려움이 발생하게 되었다. 이는 기존의 모든 퍼징 프레임워크가 확장 가능하도록 설계되지 않았기 때문이다.

본 논문에서는 LibAFL이라는 새로운 형식의 퍼징 프레임워크를 제안한다. LibAFL은 Rust언어로 구현하며,  기존에 알려진 20개 이상의 퍼징 기술을 통합할 것이다. 특히 모듈화되어 있으며 재사용가능한 퍼저를 만들 수 있도록 하는 것을 목표로 하였다. 

  • it is easily extensible
  • it is based on a categorization of components of modern fuzzers
  • it is designed to exploit the features of Rust, such as easy and fast serialization of objects and component slotting at compile-time
  • it already implements a wide range of fuzzing algorithms, features, and instrumentation options proposed by recent works in the field.


우선 최신 퍼저들의 동향을 살펴보았을 때 어떠어떠한 기능이 필수적으로 포함되면 좋은지를 분석했다. 이 논문에서는 9가지의 basic entities를 기준으로 삼았다.

  1. Input
  2. Corpus
  3. Scheduler
  4. Stage
  5. Observer 
  6. Executor
  7. Feedback
  8. Mutator
  9. Generator


프레임워크는 구체적으로 다음과 같이 설계하였다. 이를 통해 Extensibility, Portability, Scalability를 확보하였다.


실험을 통해 확인해보니, LibFuzzer를 사용하는 것이 기존의 AFL++, HonggFuzz, LibFuzzer 보다 성능이 좋았다. 논문에서 사용된 실험데이터는 FuzzBench 에서 확인할 수 있다. https://github.com/AFLplusplus/libafl_paper_artifacts

비록 아직 통합이 덜되었거나 구현이 덜 된 지점도 있다. 앞으로 해당 프로젝트를 꾸준히 개선해나갈 것이다. 이 프로젝트는 아래 github에서 오픈소스로 관리된다.

https://github.com/AFLplusplus/LibAFL


Software Security Engineer

Wanna support CPUU's work?