위키득계정 ↗
기술

AFL Rust

AFL Rust기술
분야
Rust 퍼징 연결
탐색 기반
AFLplusplus
명령 체계
Cargo afl
입력 처리
목표 함수와 반복 실행
AFL Rust는 Rust 코드에 AFLplusplus 퍼징을 연결하는 afl.rs 프로젝트다. 입력을 반복적으로 대상 코드에 전달하고 실행 피드백을 이용해 안정성 문제를 탐색하도록 돕는다.

퍼저와 Rust 코드 연결하기

퍼저는 입력을 변형하고 실행한 경로의 정보를 이용해 다음 자료를 고른다. afl.rs는 이 흐름을 Rust 검사 목표에 연결한다. 프로그램에서 어떤 부분을 실행할지와 어떤 상태를 실패로 볼지는 목표 코드에서 정한다. 도달하지 않는 진입점이나 너무 제한적인 입력 해석은 탐색 범위를 줄일 수 있다.

반복 실행과 남은 상태

지속 실행 모드는 같은 프로세스에서 목표를 반복하므로 정적 초기화가 첫 실행에서만 일어날 수 있다. 캐시나 전역 상태가 남으면 같은 입력도 다른 경로로 진행할 수 있다. 상태를 초기화하는 클로저를 제공하는 기능이 있으나 대상 자료 구조가 초기화를 지원하는지 확인해야 한다. 모든 상태가 자동 복원된다고 가정하지 않는다.

계측 설정과 실행 기록

비교 연산의 탐색을 돕는 CMPLOG 같은 계측 설정과 조건부 컴파일 구성이 결과에 영향을 준다. 여러 실행을 구성할 때는 각 설정이 유효한 범위를 확인한다. 시스템 설정을 조정하는 명령은 코드 빌드와 다른 작업이다. 발견한 실패는 입력과 소스 및 환경을 맞춰 재실행하고 일반 검사로 남겨 같은 오류의 재발을 확인한다.

관련 문서

AFLplusplus / Cargo-fuzz / Arbitrary Rust / Bolero Rust 검사 도구