메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

FuzzBench: An Open Fuzzer Benchmarking Platform and Service

noriwiki
FuzzBench: An Open Fuzzer Benchmarking Platform and Service
AuthorJonathan Metzman, Laszlo Szekeres, Laurent Simon, Read Sprabery, Abhishek Arya
ConferenceACM FSE
Year2021

개요

Fuzzer을 Evaluation하는 것은 매우 힘든 일이다. FuzzBench는 Fuzzer를 최대한 효율적으로, 그리고 정확히 Evaluating할 수 있는 Opensource Benchmark tool을 개발하였다.

Motivation & Importance

Fuzzing은 매우 효과적인 방식이지만 어떤 Fuzzer가 더 효과적인지 판단하는 것은 힘든 일이다. 이는 정규화된 Benchmarking tool, metrics, 그리고 representative program datase이 없다는 것에서 기인한다. 또다른 문제는 Fuzzing testing이 큰 Cost를 요구한다는 것이다. 보통 Evaluation을 위해서 CPU Resource를 몇달동안 돌려야 하기 때문에 매우큰 비용과 시간이 소요된다.

Main Idea

  • Fuzzing benchmark tool을 Modular, Extensible하게 만들어 쉽게 Porting할 수 있도록 한다.
  • Google의 Cloud computing resource를 무료로 이용하게 하여 Evaluating cost를 낮춘다.
  • Codecoverage와 같은 것도 비교할 수 있게 한다.
  • Raw dataset을 추출하게 하여, Further analysis에도 사용할 수 있게 한다.

Deseign

Readl-World Benchmark Programs
우선 다양한 Coding convention을 위해서 세심히 고른 다양한 Program을 제공하였다.
Metrics
발견된 Bug의 개수는 운에 의한 경우가 많음으로, 좀더 정확한 판단을 도울 것이라 생각하는 Code coverage를 바탕으로 Evaluation을 할 수 있도록 하였다. Coverage를 측정하기 위해서 Clang의 Source-based covereage를 사용하였다.
Reporting and Statistical Tests
통계 분석을 위한 다양한 정보를 제공할 수 있도록 하였다. 이러한 정보 제공은 각 Benchmark-level에서 결과를 제공하는 방식과, 전체의 Fuzzer를 비교한 Expreiment-level로 나누었다.
Platform Design
Platform design은 User-facing frontend와 실험을 돌리기 위한 backend로 분리하었다. User part에서는, Compiler integration을 위해서 DockerFiles을 제공하였다. Backend에서는, Scalability, Fair resource allocation, Platform independence를 고려하면서 디자인하였다. Backend는 Dispatcher, Workers, Trials, 그리고 Measuring corpus snapshot이 핵심 Architecture이다.

Conclusion

제시된 벤치마크 자동화, 시각화, 통계 검정까지 통합한 플랫폼은 연산 자원, 데이터 수집, 분석 인프라가 완벽히 연결된 구글 같은 곳이 아니면 디자인 하기 어렵다는 단점이 있을 것이다.