위키득계정 ↗
기술

Cargo Fuzz

Cargo Fuzz기술
주요 언어
Rust
소프트웨어 유형
Cargo 하위 명령 도구
퍼징 엔진
libFuzzer
주요 기능
대상 실행과 입력 축소
Cargo Fuzz는 Rust 프로젝트에서 libFuzzer를 사용하는 퍼징 도구다. 검사 대상을 만들고 실행하는 Cargo 하위 명령을 제공하며 실패 입력과 입력 집합의 축소 및 커버리지 확인을 지원한다.

검사 대상의 구성

프로젝트에 퍼징 구성을 초기화하고 개별 검사 대상을 추가할 수 있다. 실행할 대상을 지정해 오류를 찾는 과정을 Cargo 명령과 연결한다. 일반 응용의 진입점과 구분되는 퍼징 대상을 관리하는 방식이다.

입력과 자료 집합의 축소

실패를 일으킨 입력은 tmin 기능으로 더 작은 재현 입력으로 줄일 수 있다. cmin은 여러 입력 파일로 이루어진 코퍼스를 축소한다. 하나의 실패 입력을 단순하게 하는 작업과 전체 입력 집합을 줄이는 작업을 구분한다.

분석과 실행 조건

입력의 디버그 표현을 출력하고 퍼징한 프로그램의 커버리지 정보를 생성할 수 있다. libFuzzer가 요구하는 LLVM 검사 도구와 컴파일 환경의 조건을 충족해야 한다. 지원 아키텍처와 운영체제 및 야간판 컴파일러 등의 실행 조건이 있다.

관련 문서

Proptest / QuickCheck Rust / Miri / Rust / 소프트웨어 테스트 / 디버깅