연구 소식

Ankou: 거리 기반 피트니스 함수를 사용한 그레이 박스 퍼징
작성일2020-04-27 15:22:24

Ankou: 거리 기반 피트니스 함수를 사용한 그레이 박스 퍼징

 

Fuzzing은 소프트웨어 테스트 케이스를 무작위로 생성하는 기술로, 사용하기 쉽고 많은 프로그램에서 취약점을 찾아낸 검증된 기술이라는 점에서 오늘날 여러 곳에서 사용되고 있다. 그 중에서 그레이 박스 퍼징(Grey-box Fuzzing)은 fuzzing에 프로그램의 실행 정보를 일부만 사용하는 것을 이야기 하는데, grey-box fuzzing에서는 fitness function을 정의하여 각각의 seed가 얼마나 좋은지를 평가한다. 우리 학과 차상길 교수의 소프트웨어 보안 연구실에서는 기존의 grey-box fuzzer가 사용하는 fitness function의 문제점을 개선한 Ankou라는 도구를 개발하여 공개하였다.

기존의 grey-box fuzzer는 주로 프로그램의 얼마나 많은 부분이 실행 되었는지를 측정하는 code coverage를 fitness function으로 주로 사용한다. 예를 들면 어떤 분기문이 실행 되었는가를 측정하는 branch coverage가 있다. 하지만 code coverage는 간추려진 실행 정보이기 때문에 정보의 손실이 생기게 된다. 가령 특정 branch의 조합으로만 발생하는 프로그램의 버그가 존재할 때, 해당되는 branch가 이미 다른 seed를 통해 이미 발견된 경우, fuzzer는 버그를 발견할 수 없게 된다.

차상길 교수 연구진은 각 seed 사이의 거리를 기반으로 한 새로운 fitness function을 정의하여, 새로운 branch의 조합을 가진 seed를 찾아낼 수 있었다. 통계학의 기술인 주성분 분석(Principal Component Analysis)을 이용하여 가지고 있는 seed의 branch 조합의 경향성을 발견하고, 새로 발견한 seed가 다른 branch의 조합을 보인다면 새로운 seed를 fuzzing에 사용하게 된다.

 

그림 1. Ankou의 개요

 

 

그림 1은 Ankou의 기본 구조를 간단하게 소개한다. Ankou가 기존의 grey-box fuzzer와 크게 다른 점은 그림의 Pool Manager부분이다. 상기한 것처럼 거리 기반의 fitness function을 새로 정의하여 seed를 분류하고, seed의 개수가 너무 많이 늘어나는 것을 방지하기 위해 Adaptive seed pool update를 하게 된다.

연구진은 Ankou를 현재 많이 사용되고 있는 grey-box fuzzer인 AFL(American Fuzzy Lop)과 Angora와 비교하여, Ankou의 우수성을 입증하였다. Ankou는 AFL보다 약 1.4배, Angora보다는 약 4.1배 많은 버그를 찾을 수 있었다.

본 연구 결과는 소프트웨어 엔지니어링 분야의 최고 학회인 ICSE 2020에 발표될 예정이며(https://softsec.kaist.ac.kr/~sangkilc/papers/manes-icse20.pdf), Ankou는 차상길 교수 연구진 GitHub에서 찾아볼 수 있다(https://github.com/SoftSec-KAIST/Ankou).