0%

What The Fuzz! (WTF)

What the fuzz 간단 정리

What is Fuzzing?

  • Fuzzing or fuzz testing은 프로그램 내 잠재적 취약점을 찾는데 사용되는 자동화된 SW 기술.
  • Input이 있는 모든 SW는 Fuzzed 될 수 있음.

Why Fuzzing?

  • Manual Testing시 tester의 역량에 따라 결과가 달라짐.
  • 사람이 못하는 취약점을 찾을 수 있다.
  • Application이 복잡할 수록 attack surface가 많아지지만, 사람이 테스트 하기에 어려움.
  • 이미 알려진 취약점이 다시 나오지 않도록 Regression testing 하는 데 사용.

Common issues with fuzzing

  • 원하는 종류의 취약점을 발견하는데 까지 시간이 오래 걸릴 수 있다.
  • Smart Fuzzer(Input 구조를 알고 있는)를 사용하는데 몇 가지 작업이 좀 필요하다.
  • 아무리 좋은 Fuzzer도 모든 취약점을 발견할 수 없다.
  • Fuzzing 결과에 취약점이 없다 해도 그 프로그램은 100% 안전한 게 아니다.
  • 발견된 취약점은 검증이 반드시 필요하다.

What in needed for fuzzing?

  • Input이 있는 Fuzzing 대상
  • 찾고 싶은 취약점 종류
  • 사용할 Fuzzer

What types of bug can a fuzzer find?

  • 이론 상 모든 종류의 취약점을 찾을 수 있음
  • Logical Bug 보다 Memory Corruption 종류가 찾기 더 쉬움

Architecture of a typical fuzzer

  • 전형적인 Fuzzer의 3가지 구조.
  • Test Case Generator - Worker에서 사용할 input을 생성
  • Logger - bug분석에 필요한 모든 것을 기록 (input, 결과)
  • Worker - input을 가지고 fuzzing 실행, 버그 탐지

fuzzer-architecture

Reference