AFL++ 퍼즈 테스팅으로 버그 잡는 8가지 기법
Key Point
퍼즈 테스팅은 복잡한 입력을 받는 모든 프로그램에서 버그를 드러낼 수 있지만 실제로는 거의 사용되지 않으므로, 이 기법들을 적용하면 기존 테스팅에서 놓친 결함을 발견할 수 있다.
핵심 요약
- 6년간 약 1,000개 프로젝트를 퍼즈 테스팅한 경험에 바탕해 AFL++ 도구로 C/C++ 프로그램의 버그를 더 효과적으로 발견하는 기법 8가지를 소개한다.
- 먼저 Address Sanitizer(ASan)와 Undefined Behavior Sanitizer(UBSan)를 활성화하되, ASan 옵션에서 detect_stack_use_after_return=1과 max_malloc_fill_size로 최대한 민감하게 설정해야 한다.
- 지속 모드(persistent mode)를 사용하면 일반 모드보다 10배 빠르게 퍼즈 테스팅이 가능하며, 표준 템플릿이 아닌 개선된 fuzztmpl.c를 사용하는 것이 좋다.