Park, Geon/FishFuzz 논문

Created Fri, 01 Sep 2023 12:00:00 +0900 Modified Fri, 12 Sep 2025 17:46:02 +0900
569 Words

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 발견
  • 다양한 프로그램에서 탐색 및 버그 발견 효과 확인
  • UBSan 벤치마크는 타깃이 버그가 아니라 그냥 의도된 overflow일 수도 있음

7. 한계점

  • cxxfilt에선 FFAFL이 우세, CVE-2017-13731은 FFAFL++과 AFL++만 발동
    • “이것은 FishFuzz가 intra-ftn. explor.은 건드리지 않기 때문이다”
  • 보통 exploitation을 길게하면 좋지만, UBSan같이 간단한 타깃은 아님
  • 타깃집합이 ~10로 작으면 FishFuzz가 별로다.
    • 여러 개 만들고 트레이드오프 계산필요