퍼저(Fuzzer)는 소프트웨어 프로그램에 랜덤한 값을 입력하는 프로그램이다. 퍼저를 이용해서 퍼즈 테스팅(Fuzz testing) 또는 퍼징(fuzzing)은 이러한 퍼저를 사용하여 소프트웨어 프로그램의 문제를 테스트하는 기법이다. 주로 소프트웨어나 컴퓨터 시스템들의 보안 문제를 테스트하기 위해 사용된다. 퍼즈 테스팅은 HTTP api를 포함한 모든 프로그램에 적용 할 수 있다.
Fuzzer에서 입력하는 값은 input의 형식과 관계 없이 완벽하게 무작위 값을 대입할 수도 있고, input의 형식과 맞는 무작위의 값을 대입 할 수도 있다. 또 Fuzzer가 무작위로 생성하는 값을 기준으로도 기법을 나눌 수 있다.
소프트웨어 프로그램의 input에서 요구하는 입력값 형식과 상관없이 완전하게 랜덤한 값을 입력하는 Fuzzer이다. Dumb Fuzzer에서 사용할 수 있는 기법으로 Mutation Fuzzer가 있다.
pros and cons
pros | cons |
---|---|
Fuzzer를 만들기 위한 일의 양이 적다. | 완전히 무작위한 입력값으로모든 소프트웨어를 다루기 어렵다. (Code coverage가 높다) |
Fuzzer의 기능과 설정이 직관적이다. | 프로그램 자체보다 프로그램 parser를 테스트 하게 된다. |
소프트웨어 프로그램 input의 형식에 맞는 입력값을 생성하여 입력하는 Fuzzer이다. Generation-Based Fuzzer는 Smart Fuzzer에서 사용할 수 있는 기법 중 하나이다.
pros and cons
pros | cons |
---|---|
Dumb Fuzzer보다 더 적합한 값을 입력할 수 있다. (높은 Code coverage) | Fuzzer를 만드는 데 더 많은 노력이 필요하다. |
더 많은 bug를 잡아낼 수 있다. |
무작위로 생성된 대부분의 입력값은 프로그램의 입력값 filtering으로 거부될 수 있다. Mutation-Based Fuzzer는 이를 개선하기 위해 valid한 input을 약간 변형하는 방식으로 랜덤한 input을 생성한다.
제공된 valid한 input의 구조를 분석하여 이전의 데이터와 완전히 다른 새로운 input을 생성하는 기법이다.
Value | Description |
---|---|
Empty strings | Sometimes, empty string by-pass missing value checks and trigger bugs |
Long strings | Bugs as a result of truncation come to the surface as a result of passing long strings to programs |
Strings with variant length | Short, medium, and long strings can trigger bugs as well |
0 | Similar to empty strings, value 0 can sometimes pass the missing value checks and trigger bugs |
Negative numbers | Triggers bugs related to assuming positive numbers but lacking validation for that |
Decimals | Triggers bugs related to assuming integers but lacking validation for that |
Special characters | Bring up bugs related to embedding values in URL or saving in database |
Max / Min numbers | Does 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