위키득계정 ↗
기술

libFuzzer

libFuzzer기술
실행 방식
같은 프로세스에서 대상 함수 반복 호출
탐색 방식
커버리지 유도 진화적 퍼징
피드백 기반
LLVM SanitizerCoverage 계측
입력 관리
초기 코퍼스와 변형 입력
libFuzzer는 실행 경로의 커버리지를 이용해 입력을 변형하는 프로세스 내부 퍼징 엔진이다. 시험할 라이브러리와 연결해 대상 함수를 반복 호출하고 새로운 경로에 도달한 입력을 다음 탐색에 활용한다.

대상 함수를 통한 입력

시험 대상 라이브러리의 기능을 호출하는 진입 함수에 바이트 배열을 전달한다. 엔진은 같은 프로세스에서 서로 다른 입력으로 함수를 반복 실행한다.

새 경로를 남기는 코퍼스

기존 입력을 무작위로 변형하고 이전에 도달하지 않은 코드 경로를 실행하면 새 입력을 코퍼스에 보관한다. 이후 변형은 이렇게 늘어난 입력 집합을 다시 활용한다.

초기 입력과 구조의 관계

초기 입력 없이도 동작할 수 있지만 복잡한 구조의 자료를 받는 대상에서는 효율이 떨어질 수 있다. 다양한 초기 사례와 대상 함수의 가능한 한 결정적인 동작이 탐색에 중요하다.

오류 입력의 보관

충돌이나 검사 도구가 감지한 오류가 나타나면 이를 일으킨 입력을 남긴다. 공식 문서는 주요 새 기능의 적극적 개발은 중단됐지만 중요한 오류 수정은 지원한다고 설명한다.

관련 문서

Csmith / 델타 디버깅 / Hypothesis 테스트 도구 / 소프트웨어 테스트 / 디버깅 / 프로그래밍