Park, Geon (re-st)

(극다중 지향성 퍼징) FishFuzz

[research] 1 min read

요약

타깃이 자동으로 정해지는 다중 지향성 퍼징으로, 정적분석 결과인 수천 개의 예상지점을 가지고 인풋을 스케쥴링 함.

키워드

큐 컬링 | Sanitizer-guided fuzzing (SGF)

1. 목적

  • 다이나믹 큐 컬링으로 퍼저의 성능 최적화 (w/ .favored flag)
  • 시드-타깃 거리 계산 개선 (w/ function-lvl CG, CFG, and Static analysis)
  • 타깃 우선순위 동적 조정 (w/ instrumentation)

../Figure 3 Overview of FISHFUZZ workflow.png

3. 구현

  • 모든 sanitizer 레이블 고려
    • llvm bc에 instrument한 그 각 줄을 타깃으로
    • sanitizer 레이블은 compiler-rt
  • LLVM 기반 정적 분석 1,500LoC
    • CFG, CG 추출
    • 정적 함수 거리 계산
  • AFL/AFL++ 확장
    • cull_queue에서 inter-function exploration 구현 2,000LoC
  • 컴파일러 Instrumentation 200LoC
    • 런타임 거리 갱신
    • 타깃 메타데이터 기록

5. 결과

  • 벤치마크 성능 비교
    • TortoiseFuzz, 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가 별로다.
    • 여러 개 만들고 트레이드오프 계산필요

Source: https://www.usenix.org/system/files/usenixsecurity23-zheng.pdf

#Paper-Summary 

<< Previous Post

|

Next Post >>

← 뒤로