Fuzzer

지선·2023년 3월 23일

🐣퍼징(Fuzzing)이란?

소프트웨어 테스트 기법으로 프로그램에 대해 무수히 많은 데이터를 입력해 프로그램의 충돌이 발생하는 취약점의 위치를 찾아내는 기법이다. 즉, 프로그램의 취약점을 효율적으로 찾아낼 수 있는 기법인 것이다.

🐣퍼징 기법

프로그래밍 활용 정도에 따라
1. 블랙박스 퍼징 (black-box)
대상 프로그램의 입력과 출력 데이터만 사용하는 기법 (대상 프로그램 내부 정보 사용x)
ex)SPIKE, BFF, FOE 등

2. 화이트박스 퍼징 (white-box)
대상 프로그램의 내부 구조와 실행 중 발생하는 정보를 사용하는 기법

3. 그레이박스 퍼징 (gray-box)
블랙박스와 화이트박스의 중간적 특성
ex)AFL, VUzzer 등

입력 데이터 생성하는 법에 따라
1. 생성 기반 퍼징
데이터 구조와 프로토콜을 이해해 프로그램에 적합한 입력 데이터를 잘 생성할 수 있지만 시간이 많이 소요될 수 있다.

2. 변이 기반 퍼징
입력 데이터에 대해 무작위적으로 조금씩 변이를 주어 새로운 입력 데이터를 생성한다. 시간은 조금 소요되지만 유효하지 않은 입력 데이터가 생성되는 경우가 많다. dumb 퍼징이라고 불리기도 한다.

🐣퍼징 방식

덤 퍼징: 정상 처리가 가능한 데이터를 변이시켜 테스트 케이스를 생성함
지능적 퍼징: 입력 데이터의 구조를 이용해 구조를 반영한 입력 값을 생성함

profile
긍정왕되기

0개의 댓글