https://www.usenix.org/system/files/usenixsecurity23-zheng.pdf
요약
[[다중 지향성 퍼징|다중 지향성 퍼징]]이나, [[정적분석|정적분석]] 결과인 수천 개의 예상지점을 가지고 인풋을 [[power schedule|스케쥴링]] 함.
키워드 큐컬링 [[Sanitizer-guided fuzzing (SGF)|Sanitizer-guided fuzzing (SGF)]]
1. 목적
- 다이나믹 큐컬링으로 퍼저의 성능 최적화 (w/ .[[favored|favored]] flag)
- 시드-타깃 거리 계산 개선 (w/ function-lvl CG, CFG, and Static analysis)
- 타깃 우선순위 동적 조정 (w/ instrumentation)

3. 구현
- 모든 [[sanitizer|sanitizer]] 레이블 고려
- [[llvm bc|llvm bc]]에 instrument한 그 각 줄을 타깃으로
- sanitizer 레이블은 [[compiler-rt|compiler-rt]]
- LLVM 기반 정적 분석 1,500LoC
- CFG, CG 추출
- 정적 함수 거리 계산
- AFL/AFL++ 확장
- [[cull_queue|cull_queue]]에서 inter-function exploration 구현 2,000LoC
- 컴파일러 Instrumentation 200LoC
- 런타임 거리 갱신
- 타깃 메타데이터 기록
5. 결과
- 벤치마크 성능 비교
- [[TortoiseFuzz|TortoiseFuzz]], [[SAVIOR|SAVIOR]]의 벤치마크 + ad-hoc 벤치마크 (Two-Stage)
- 제외: non-resolvable exception, non-compatible to OS
- 기존 DGF(SGF 포함) 대비 개선
- 30 real-world program 대상 실험, 1주일
- TortoiseFuzz [27], SAVIOR [7], GREYONE [9], FuzzGen 의 프로그램 대상
- 38개 새로운 CVE 발견
- [[TortoiseFuzz|TortoiseFuzz]], [[SAVIOR|SAVIOR]]의 벤치마크 + ad-hoc 벤치마크 (Two-Stage)
- 다양한 프로그램에서 탐색 및 버그 발견 효과 확인
- UBSan 벤치마크는 타깃이 버그가 아니라 그냥 의도된 overflow일 수도 있음
7. 한계점
- cxxfilt에선 FFAFL이 우세, CVE-2017-13731은 FFAFL++과 AFL++만 발동
- “이것은 FishFuzz가 intra-ftn. explor.은 건드리지 않기 때문이다”
- 보통 exploitation을 길게하면 좋지만, UBSan같이 간단한 타깃은 아님
- 타깃집합이 ~10로 작으면 FishFuzz가 별로다.
- 여러 개 만들고 트레이드오프 계산필요