본문 바로가기
KERD
논문KCI 등재

라이브러리 퍼징의 커버리지 향상 방법 연구

A Study of Coverage Improvement for Library Fuzzing

0

조회

0

다운로드

0

인용

0

참고문헌

키워드

주제분류컴퓨터학

초록

라이브러리 구현의 결함을 발견하기 위해 동적 분석 방법인 퍼징(fuzzing)이 사용되고 있다. 라이브러리 대상 퍼징은 구현된 함수만 테스트를 할 수 있으므로 더 높은 코드 커버리지를 달성하기 위해서는 구현되지 않은 함수들을추가로 구현해주어야 한다. 하지만 라이브러리 함수들의 호출 관계를 고려하지 않고 함수를 추가하면 이미 테스트를수행한 함수가 추가되는 문제가 발생할 수 있다. 본 논문에서는 라이브러리 퍼징의 코드 커버리지 성능을 향상시키기 위한 개선 방법을 제안한다. 먼저, 라이브러리 퍼징의 대상 함수를 효율적으로 추가하기 위해 라이브러리의 함수호출 그래프 분석하고 구현되지 않은 라이브러리 함수를 추가 구현한다. 그리고 라이브러리의 해결하기 어려운 제약조건을 가진 분기를 탐색하는 방법으로 하이브리드 퍼징을 적용한다. OpenSSL, mbedTLS, Crypto++을 대상으로 실험한 결과, 제안한 방법이 코드 커버리지를 증가에 효과적인 것을 확인하였다.

Abstract

Fuzzing is used to find vulnerabilities for a library. Because library fuzzing only tests the implemented functions, in order to achieve higher code coverage, additional functions that are not implemented should be implemented. However, if a function is added without regard to the calling relationship of the functions in the library, a problem may arise that the function that has already been tested is added. We propose a novel method to improve the code coverage of library fuzzing. First, we analyze the function call graph of the library to efficiently add the functions for library fuzzing, and additionally implement a library function that has not been implemented. Then, we apply a hybrid fuzzing to explore for branches with complex constraints. As a result of our experiment, we observe that the proposed method is effective in terms of increasing code coverage on OpenSSL, mbedTLS, and Crypto++.

참고문헌 (12)

  1. 장준언, "유닛테스트를 활용한 c", c++ 라이브러리 그레이박스 퍼징 적용 자동화, 2019, pp.29(4), 807~819[DOI]
  2. Netcraft, "Half a million widely truste d websites vulnerable to Heartbleed bug", ~ (2014)
  3. J. Drak, "Stagefright: Scary Code in the Heart of Android", BlackHat USA, ~ (2015)
  4. B. P. Miller, "An Empirical Study of the Reliability of UNIX Utilities", Communications of the ACM, 33(12), pp.32~44 (1990)
  5. R. Majumdar, "Hybrid Concolic Testing", Proceedings of the International Conference on Software Engineering, pp.416~426 (2007)
  6. l. Yun, "QSYM: A Practical Concolic Execution Engine Tailored for Hybrid Fuzzing", Proceedings of the USENIX Security, pp.745~761 (2018)
  7. M. Cho, "Intriguer:Field-Level Constraint Solving for Hybrid Fuzzing", Proceedings of the ACM SIGSAC Conference on Computer and Communications Security, pp.515~530 (2019)
  8. "Cryptofuzz" (2019)[URL]
  9. libFuzzer - a library for coverage-guided fuzz testing, LLVM project, "K. Serebryany", ~ (2015)
  10. "OpenSSL"[URL]
  11. "mbedTLS"[URL]
  12. "Crypto++"[URL]

관련 논문AI추천

이 간행물의 다른 논문 (28건)