[SE] Grey Box Fuzzing : Generation Based Fuzzing

parkheeddong·2023년 6월 8일
0

Software Engineering

목록 보기
18/19
post-thumbnail

👇 Mutation Based Fuzzing과 Generation Based Fuzzing 차이

Mutation Based Fuzzing = valid한 seed의 입력이 중요하다.
Generation Based Fuzzing = program의 grammer, 즉 spec이 중요하다.

Generation Based Fuzzing


명세(specification)을 이용해서 테스트 케이스를 만드는 방법이다.

📌 specification

타겟 프로그램의 valid한 입력을 만들어 낼 수 있는 문법(grammer)

📌 grammer

input의 syntatical 구조

🌳 Example

context free grammer의 경우, start symbol과 production rules로 구성된다.
start symbol : <start>
production rule : <A> ::= <B>

이 경우, 이 grammer로 만들어 낼 수 있는 testcase는 100개이다.

문법은 보통 recursive하게 정의된다.

이와 같이 무한개의 testcase를 만들어낼 수 있게 된다.

artihmetic expression의 grammer을 이용해서, 아래와 같이 testcase (1+2)*(3.4/5.6)을 derive할 수 있다.

🌳Generation Based Fuzzing의 이슈

1) 좋은 grammer을 만드는 것(build하는 것)이 중요하다.

2) grammer의 어떠한 production rules를 적용할지, 어떻게 derive할지도 중요한 이슈이다.

문법으로부터 production rule을 잘 derive 하는 것이 매우 중요하다.

그저 랜덤하게 자바스크립트 문법으로부터 derive하면, 매우 의미 없는 javascript testcases를 만들어내게 된다.

0개의 댓글