"매 random/mutated input 으로 crash, hang, UB 의 hunt". 매 1988 Miller (Wisconsin) 의 random input shell experiment 가 origin. 2026 현재 매 coverage-guided (AFL++, libFuzzer, Honggfuzz), structure-aware (libprotobuf-mutator), grammar-based (Nautilus), LLM-augmented (OSS-Fuzz Gen) 가 mainstream. Google OSS-Fuzz 가 100K+ bug 발견, Chrome/Linux kernel/OpenSSL 의 routine workflow.
매 핵심
매 fuzzing categories
Black-box (dumb): random input, no instrumentation. 매 zzuf, radamsa.
Coverage-guided (grey-box): input 의 mutation + branch coverage feedback. 매 AFL++, libFuzzer, Honggfuzz.
White-box (concolic): symbolic execution + solver. 매 KLEE, SAGE.
Structure-aware: protobuf, JSON 의 grammar 의 valid input. 매 libprotobuf-mutator, FuzzGrammar.
Differential: 매 동일 input 을 두 implementation 에 → divergence 의 bug.
언제: 매 untrusted input 의 parser, codec, deserializer 가 있는 경우. 매 security-critical library 의 release 전 mandatory.
언제 X: pure functional code 의 deterministic 한 input space (property-based testing 이 더 적절). 매 GUI / network state-heavy code.
❌ 안티패턴
Sanitizer 없이 fuzz: 매 silent corruption 을 miss. 매 ASan 의 mandatory.
Seed corpus 없음: 매 coverage 의 plateau 가 빠름. 매 valid sample 10-100 개 의 seed.
CI 에 30s 만 fuzz: 매 너무 짧음. 매 minimum 10min, ideal continuous (OSS-Fuzz pattern).
Crash 만 의 focus: 매 hang, OOM, slow input 도 bug. 매 timeout / rss_limit 설정.
🧪 검증 / 중복
Verified (Miller 1990 "Empirical Study of Reliability of UNIX Utilities"; AFL++ docs; OSS-Fuzz reports).