2022. 1. 14. 16:18ㆍ취약점 분석/Fuzzing
퍼징(fuzzing)이란?
퍼즈 테스팅(Fuzz Testing) 다른말로 퍼징은 소프트웨어(프로그램)에 정상적인 데이터가 아닌 무작위/반무작위 데이터를 입력하여 소프트웨어가 가지고 있는 취약점을 탐지하는 기술입니다.
진화 알고리즘 : 이전 세대에서 유용하게 사용되었던 입력을 골라 다음 세대에서 재사용하여 무작위 생성
퍼징을 분류 할 때 정말 다양한 종류로 구분할 수 있습니다. 저는 퍼징을 2가지 종류로 분류를 할 것입니다.
첫번째로 퍼징은 프로그램의 정보를 활용하는 정도에 따라 다음과 같이 3가지로 분류 할 수 있습니다.
1. 화이트박스 퍼징(white-box) : 프로그램의 내부 구조와 실행 중에 발생하는 정보들을 사용하는 기법입니다.
2. 블랙박스 퍼징(black-box) : 프로그램의 내부 정보를 사용하지 않고 입력과 출력 데이터만 사용하는 기법이다.
3. 그레이박스 퍼징(gray-box) : 이 기법은 화이트박스와 블랙박스 중간의 특성을 가지며 프로그램의 내부 정보와 실행 중 발생하는 정보 일부만 사용하는 기법입니다.
두번째로 퍼징은 입력 데이터를 어떤 방식으로 생성하냐에 따라 2가지로 분류 할 수 있습니다.
1. 생성 기반(generation-based) : 입력 데이터를 아에 새롭게 처음부터 생성하는 기법입니다. Smart(똑똑한) 퍼징이라고 합니다.
2. 변이 기반(mutation-based) : 특정한(주어진) 입력 데이터를 조금씩 변이(수정)해서 새로운 데이터를 생성하는 기법입니다. Dumb(바보 같은) 퍼징이라고 합니다.
퍼징은 보안 취약점과 버그를 찾는 좋은 방법이지만 퍼징을 거쳤다고 해서 그 소프트웨어에 취약점이나 버그가 없다는 뜻은 아닙니다. 모든 입력가능한 변수값을 다 대입해 본것은 아니기 때문입니다.
* 입력 가능한 변수값 : 어떠한 조합도 변수값이 될 수 있기 때문에 범위는 무한대에 가깝습니다.
이상으로 퍼징에 대해 간단하게 알아보았습니다. 위에서 소개한 각 기법들은 다른 페이지에서 더 자세히 다루도록 하겠습니다.