위키득계정 ↗
기술

LibAFL

LibAFL기술
분야
퍼저 구성 프레임워크
구현 언어
Rust
대상
소스와 바이너리 기반 탐색
구성 특징
교체 가능한 부품과 계측 연동
LibAFL은 Rust로 사용자 정의 퍼저를 구성하는 재사용 부품 모음이다. 입력 형태와 계측 방식 및 탐색 구성을 조합해 대상 환경에 맞는 퍼징 도구를 만들 수 있다.

완성 도구와 부품 모음

미리 정해진 실행 방식만 사용하는 대신 탐색의 각 부분을 바꿔 구성할 수 있다. 바이트 입력뿐 아니라 구조화된 입력 형태를 선택할 수 있어 문법이나 자료 구조를 고려하는 탐색에 활용한다. 유연성이 큰 만큼 목표의 실행 경계와 실패 판정 및 입력 처리를 직접 설계해야 한다.

계측 백엔드 선택

소스를 계측하는 방식과 바이너리만 있는 대상에 적용하는 방식을 제공한다. SanitizerCoverage와 Frida 및 QEMU 같은 연동 구성은 서로 다른 관찰 범위와 환경 조건을 가진다. 지원 목록에 이름이 있다고 모든 플랫폼에서 같은 방식으로 실행되는 것은 아니므로 해당 예제와 빌드 조건을 확인한다.

확장과 결과 해석

여러 코어와 기계로 작업을 확장하기 위한 통신 기능을 제공하며 no_std 구성으로 특수 환경에 적용할 수도 있다. 확장한 실행 수만큼 오류 탐지 능력이 자동으로 보장되지는 않는다. 입력 모음과 실패 자료를 관리하고 결과가 재현되는지 확인한다. 부품이나 계측을 교체할 때에는 이전 결과와 비교 가능한 조건인지도 살핀다.

관련 문서

AFLplusplus / AFL Rust / Cargo-fuzz / libFuzzer