퍼저와 Rust 코드 연결하기
퍼저는 입력을 변형하고 실행한 경로의 정보를 이용해 다음 자료를 고른다. afl.rs는 이 흐름을 Rust 검사 목표에 연결한다. 프로그램에서 어떤 부분을 실행할지와 어떤 상태를 실패로 볼지는 목표 코드에서 정한다. 도달하지 않는 진입점이나 너무 제한적인 입력 해석은 탐색 범위를 줄일 수 있다.
반복 실행과 남은 상태
지속 실행 모드는 같은 프로세스에서 목표를 반복하므로 정적 초기화가 첫 실행에서만 일어날 수 있다. 캐시나 전역 상태가 남으면 같은 입력도 다른 경로로 진행할 수 있다. 상태를 초기화하는 클로저를 제공하는 기능이 있으나 대상 자료 구조가 초기화를 지원하는지 확인해야 한다. 모든 상태가 자동 복원된다고 가정하지 않는다.
계측 설정과 실행 기록
비교 연산의 탐색을 돕는 CMPLOG 같은 계측 설정과 조건부 컴파일 구성이 결과에 영향을 준다. 여러 실행을 구성할 때는 각 설정이 유효한 범위를 확인한다. 시스템 설정을 조정하는 명령은 코드 빌드와 다른 작업이다. 발견한 실패는 입력과 소스 및 환경을 맞춰 재실행하고 일반 검사로 남겨 같은 오류의 재발을 확인한다.
관련 문서
AFLplusplus / Cargo-fuzz / Arbitrary Rust / Bolero Rust 검사 도구