유닛테스트를 활용한 c/c++ 라이브러리 그레이박스 퍼징 적용 자동화

Automated Applying Greybox Fuzzing to C/C++ Library Using Unit Test

초록

그레이박스 퍼징은 소프트웨어에 존재하는 알려지지 않은 보안 취약점을 찾는 효과적인 방법으로 최근까지 활발하게 연구되고 있다. 단, 대부분의 그레이박스 퍼징 도구들은 실행파일을 필요로 하기 때문에 직접 실행할 수 없는 라이브러리는 별도의 실행파일을 준비해야 한다. 이러한 실행파일을 만드는 것은 라이브러리에 대한 이해 및 퍼징에 대한이해가 동시에 필요한 어려운 일이다. 본 연구에서는 라이브러리를 위한 실행파일을 자동으로 생성하는 방법을 제안하고 이를 LLVM 기반의 도구로 구현한다. 제안하는 방법은 대상 라이브러리 프로젝트에 존재하는 유닛테스트에 대한 정적/동적 분석을 통해 라이브러리를 테스트할 수 있는 실행파일 및 시드파일을 자동으로 생성한다. 생성한 실행파일은 기존 그레이박스 퍼징 도구들이 주로 사용하는 인터페이스를 보유하여 AFL과 같은 다양한 그레이박스 퍼징 도구와 호환된다. 우리는 이 도구를사용해 오픈소스 프로젝트로부터 생성한 실행파일과 시드파일을 바탕으로 코드 커버리지 및 알려지지 않은 취약점을찾음으로써 제안하는 방법의 성능을 보인다.

키워드

security testinggreybox fuzzinglibrary fuzzing
제목
유닛테스트를 활용한 c/c++ 라이브러리 그레이박스 퍼징 적용 자동화
제목 (타언어)
Automated Applying Greybox Fuzzing to C/C++ Library Using Unit Test
저자
장준언김휘강
DOI
10.13089/JKIISC.2019.29.4.807
발행일
2019
저널명
정보보호학회논문지
29
4
페이지
807 ~ 819