위키득계정 ↗
기술

Arbitrary Rust

Arbitrary Rust기술
분야
구조화된 검사 입력 생성
환경
Rust
입력
원시 바이트 버퍼
생성 방식
트레이트 구현과 선택적 derive
Arbitrary는 바이트 입력에서 Rust의 타입에 맞는 구조화된 값을 생성하는 라이브러리다. 퍼저가 만든 비정형 데이터를 검사 대상이 받는 자료 구조로 바꾸는 데 쓰인다.

바이트와 자료 구조 연결하기

퍼저는 바이트를 변형해 새 입력을 만들지만 검사 대상은 숫자 묶음이나 열거형 및 구조체를 받을 수 있다. Arbitrary는 바이트를 이런 값으로 해석하는 생성 규칙을 제공한다. 탐색 엔진 자체와 역할이 다르며 생성한 값으로 어떤 함수를 실행하고 무엇을 확인할지는 검사 코드에서 정한다.

자동 생성과 필드 제어

derive 기능을 켜면 지원되는 타입에 생성 구현을 자동으로 만들 수 있다. 필드에 고정값이나 기본값을 두거나 사용자 함수를 연결해 특정 범위를 구성할 수도 있다. 구현을 직접 작성하면 더 세밀한 제어가 가능하지만 어떤 입력 영역이 실제로 생성되는지 검토해야 한다.

타입 유효성과 업무 규칙

Rust 타입에 맞는 값이라고 업무상의 모든 제약을 만족하는 것은 아니다. 반대로 생성 단계에서 조건을 지나치게 제한하면 잘못된 입력을 처리하는 경로를 놓칠 수 있다. 정상 자료와 오류 자료를 어느 수준에서 다룰지 결정한다. 실패 입력을 재현할 때는 바이트와 생성 규칙 및 대상 소스의 버전을 함께 관리한다.

관련 문서

Bolero Rust 검사 도구 / Proptest / libFuzzer / QuickCheck Rust