Fuzzer

BigTree·2023년 3월 23일
0

Fuzzzer ?

퍼저(Fuzzer)는 소프트웨어 프로그램에 랜덤한 값을 입력하는 프로그램이다. 퍼저를 이용해서 퍼즈 테스팅(Fuzz testing) 또는 퍼징(fuzzing)은 이러한 퍼저를 사용하여 소프트웨어 프로그램의 문제를 테스트하는 기법이다. 주로 소프트웨어나 컴퓨터 시스템들의 보안 문제를 테스트하기 위해 사용된다. 퍼즈 테스팅은 HTTP api를 포함한 모든 프로그램에 적용 할 수 있다.

Fuzzer 기법

Fuzzer에서 입력하는 값은 input의 형식과 관계 없이 완벽하게 무작위 값을 대입할 수도 있고, input의 형식과 맞는 무작위의 값을 대입 할 수도 있다. 또 Fuzzer가 무작위로 생성하는 값을 기준으로도 기법을 나눌 수 있다.

Dumb Fuzzer

소프트웨어 프로그램의 input에서 요구하는 입력값 형식과 상관없이 완전하게 랜덤한 값을 입력하는 Fuzzer이다. Dumb Fuzzer에서 사용할 수 있는 기법으로 Mutation Fuzzer가 있다.

pros and cons

proscons
Fuzzer를 만들기 위한 일의 양이 적다.완전히 무작위한 입력값으로모든 소프트웨어를 다루기 어렵다.
(Code coverage가 높다)
Fuzzer의 기능과 설정이 직관적이다.프로그램 자체보다 프로그램 parser를 테스트 하게 된다.

Smart Fuzzer

소프트웨어 프로그램 input의 형식에 맞는 입력값을 생성하여 입력하는 Fuzzer이다. Generation-Based Fuzzer는 Smart Fuzzer에서 사용할 수 있는 기법 중 하나이다.

pros and cons

proscons
Dumb Fuzzer보다 더 적합한 값을 입력할 수 있다.
(높은 Code coverage)
Fuzzer를 만드는 데 더 많은 노력이 필요하다.
더 많은 bug를 잡아낼 수 있다.

Mutation-Based Fuzzer

무작위로 생성된 대부분의 입력값은 프로그램의 입력값 filtering으로 거부될 수 있다. Mutation-Based Fuzzer는 이를 개선하기 위해 valid한 input을 약간 변형하는 방식으로 랜덤한 input을 생성한다.

Generation-Based Fuzzer

제공된 valid한 input의 구조를 분석하여 이전의 데이터와 완전히 다른 새로운 input을 생성하는 기법이다.

Bug를 발생시킬 수 있다고 여겨지는 데이터들

ValueDescription
Empty stringsSometimes, empty string by-pass missing value checks and trigger bugs
Long stringsBugs as a result of truncation come to the surface as a result of passing long strings to programs
Strings with variant lengthShort, medium, and long strings can trigger bugs as well
0Similar to empty strings, value 0 can sometimes pass the missing value checks and trigger bugs
Negative numbersTriggers bugs related to assuming positive numbers but lacking validation for that
DecimalsTriggers bugs related to assuming integers but lacking validation for that
Special charactersBring up bugs related to embedding values in URL or saving in database
Max / Min numbersDoes the code cope well with a maximum allowed number? what about the minimum?




출처
https://ko.wikipedia.org/wiki/%ED%8D%BC%EC%A7%95
https://rninche01.tistory.com/entry/Fuzzing-%EA%B3%B5%EB%B6%80
https://testfully.io/blog/fuzz-testing/
https://www.fuzzingbook.org/html/MutationFuzzer.html4
https://cpuu.postype.com/post/589162

0개의 댓글