-
자동화된 메커니즘을 이용하여 소프트웨어의 취약점을 발견하는 방법
-
분석 대상 소프트웨어에 대해 입력 값을 변형하면서 소프트웨어 오류 및 결함을 찾는 기술
-
블랙박스 퍼징: 대상 소프트웨어에 대한 이해 없이 퍼징을 수행
-
그레이박스 퍼징: 대상 소프트웨어에 대해 사전 분석된 정보, 데이터 모델을 바탕으로 퍼징
-
입력은 파일 기반(.pdf, .png, .wav 등) 이거나 네트워크 기반(http, SNMP 등) 을 사용
-
돌연변이 기반 퍼징
- 유효한 입력 테스트 케이드들의 집합을 시작
- 기존 입력에 작은 변경을 반복적으로 도입
- 오류를 야기시키는 입력들은 유효한 입력과 비슷한 경우가 많다.
- 입력의 영역은 프로그램 구성 요소와 연관 있고 이러한 방법이 구성요소들 간 문제점을 찾는데 효과적이다
-
그레이박스 퍼징
-
프로그램의 실행 정보를 일부만 사용
-
AFL++, libfuzzer
-
단계

- 유효한 입력을 나타내는 테스트 케이스 집합(seed)으로 시작
- 기존의 입력에 반복적으로 작은 변경을 도입하면서 새로운 동작을 기대
- 새로운 동작을 탐색하는 돌연변이 입력이 있다면 시드로 추가 (새로운 구조적 테스트 요구사항을 포함하는 경우만)
-
AFL++
- 유명한 fuzzing 툴인 AFL(American Fuzzy Lop) 프로젝트 에서 파생된 오픈소스 툴
- AFL: 테스트 케이스의 코드 커버리지를 효과적으로 높이기 위해 유전 알고리즘을 사용하는 무료 소프트웨어 퍼저
- 리눅스 기반으로 실행되지만 도커 이미지로도 퍼징을 돌릴 수 있는 환경 제공
- 실행 화면
- ctrl + c 를 통해 퍼징 중단
- out/default/crash에 crash를 발생시키는 입력 값들이 저장됨
