유닛테스트를 활용한 c/c++ 라이브러리 그레이박스 퍼징 적용 자동화
Automated Applying Greybox Fuzzing to C/C++ Library Using Unit Test
0
조회
0
다운로드
1
인용
0
참고문헌
키워드
초록
그레이박스 퍼징은 소프트웨어에 존재하는 알려지지 않은 보안 취약점을 찾는 효과적인 방법으로 최근까지 활발하게 연구되고 있다. 단, 대부분의 그레이박스 퍼징 도구들은 실행파일을 필요로 하기 때문에 직접 실행할 수 없는 라이브러리는 별도의 실행파일을 준비해야 한다. 이러한 실행파일을 만드는 것은 라이브러리에 대한 이해 및 퍼징에 대한이해가 동시에 필요한 어려운 일이다. 본 연구에서는 라이브러리를 위한 실행파일을 자동으로 생성하는 방법을 제안하고 이를 LLVM 기반의 도구로 구현한다. 제안하는 방법은 대상 라이브러리 프로젝트에 존재하는 유닛테스트에 대한 정적/동적 분석을 통해 라이브러리를 테스트할 수 있는 실행파일 및 시드파일을 자동으로 생성한다. 생성한 실행파일은 기존 그레이박스 퍼징 도구들이 주로 사용하는 인터페이스를 보유하여 AFL과 같은 다양한 그레이박스 퍼징 도구와 호환된다. 우리는 이 도구를사용해 오픈소스 프로젝트로부터 생성한 실행파일과 시드파일을 바탕으로 코드 커버리지 및 알려지지 않은 취약점을찾음으로써 제안하는 방법의 성능을 보인다.
Abstract
Greybox fuzzing is known as an effective method to discover unknown security flaws reside in software and has beenactively researched today. However, most of greybox fuzzing tools require an executable file. Because of this, a library,which cannot be executed by itself requires an additional executable file for greybox fuzzing. Generating such an executablefile is challengeable because it requires both understanding of the library and fuzzing. In this research, we suggest the approach to generate an executable file automatically for a library and implement thisapproach as a tool based on the LLVM framework. This tool shows that executable files and seed files can be generatedautomatically by static/dynamic analysis of a unit test in the target project. A generated executable file is compatible withvarious greybox fuzzers like AFL because it has a common interface for greybox fuzzers. We show the performance of thistool as code coverage and discovered unknown security bugs using generated executable files and seed files from opensource projects through this tool.
참고문헌 (12)
- "Amerian Fuzzy Lob"[URL]
- Böhme, Marcel, "Coverage-bas ed greybox fuzzing as markov chain", IEEE Transactions on Software Engin eering, 45(5), pp.489~506 (2017)
- Sanjay Rawat, "VUzzer : Applica tion-aware Evolutionary Fuzzing", ND SS, 17, pp.1~14 (2017)
- Hui Peng, "T-Fuzz : fuzzing by progra m transformation", 2018 IEEE Sympos ium on Security and Privacy (SP), pp.697~710 (2018)
- Peng Chen, "Angora: Effici ent fuzzing by principled search", 2018 IEEE Symposium on Security and P rivacy (SP), pp.711~725 (2018)
- Shuitao Gan, "Collafl: Path sensitive fuzzing", 2018 IEEE Symposium on Se curity and Privacy (SP), pp.679~696 (2018)
- Mike Aizatsky, "Announcing oss-fuzz:Continuous fuzzing for open source so ftware", Google Open Source Blog, ~ (2016)
- Chris Lattner, "LLV M: A compilation framework for lifelo ng program analysis & transformatio n", International Symposium on Code Generation and Optimization: Feedba ck-Directed and Runtime Optimizatio n, pp.75~ (2004)
- "Libfuzzer"[URL]
- "Google Test"[URL]
- Konstantin Serebryany, "AddressSanitizer: A fast a ddress sanity checker", as part of the 2012 USENIX Annual Technical Conference, pp.309~318 (2012)
- "lafintel"[URL]
