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

소프트웨어 안전성 검증을 위한 입력 파일 기반 동적 기호 실행 방법

Input File Based Dynamic Symbolic Execution Method for Software Safety Verification

0

조회

0

다운로드

0

인용

0

참고문헌

키워드

주제분류컴퓨터학

초록

최근 소프트웨어 자동화 기술 연구는 단일 경로의 테스트 케이스 생성뿐만 아니라, 다양한 테스트 케이스를 통해 취약점으로 도달할 수 있는 최적화된 경로를 파악하는 것에 중점을 두고 있다. 이러한 자동화 기술 중 Dynamic Symbolic Execution(이하, DSE) 기술이 각광 받고 있지만, 현재 대부분의 DSE 기술 적용 연구는 리눅스 바이너리 혹은 특정 모듈 자체만을 대상으로 적용하는 데 그치고 있는 실정이다. 하지만 대부분의 소프트웨어의 경우 입력 파일을 기반으로 작업이 수행되고, 또 이러한 과정에서 취약점이 다수 발생하고 있다. 따라서 본 논문은 소프트웨어 안전성 검증을 위한 입력 파일 기반 동적 기호 실행 방법을 제안한다. 실제 바이너리 소프트웨어 3종에 적용한 결과 제안하는 방법을 통해 효과적으로 해당 지점에 도달하는 테스트 케이스를 생성할 수 있었다. 이는 DSE 기술이 실제 소프트웨어 분석의 자동화에 활용될 수 있음을 보여준다.

Abstract

Software automatic technology research recently focuses not only on generating a single path test-case, but also on finding an optimized path to reach the vulnerability through various test-cases. Although Dynamic Symbolic Execution (DSE) technology is popular among these automatic technologies, most DSE technology researches apply only to Linux binaries or specific modules themselves. However, most software are vulnerable based on input files. Therefore, this paper proposes an input file based dynamic symbolic execution method for software vulnerability verification. As a result of applying it to three kinds of actual binary software, it was possible to create a test-case effectively reaching the corresponding point through the proposed method. This demonstrates that DSE technology can be used to automate the analysis of actual software.

참고문헌 (14)

  1. 2016 Internet Security Threat Report, "Symantec", ~ (2016)
  2. IBM X-Force Threat Intelligence Report, "IBM", ~ (2016)
  3. Heelan, Sean, "Automatic generation of control flow hijacking exploits for software vulnerabilities", ~ (2009)
  4. Avgerinos, Thanassis, "Automatic exploit generation", Communications of the ACM, 57(2), pp.74~84 (2014)
  5. Cha, Sang Kil, "Unleashing mayhem on binary code", Security and Privacy (SP), 2012 IEEE Symposium on. IEEE, pp.380~394 (2012)
  6. Huang, Shih-Kun, "Software crash analysis for automatic exploit generation on binary programs", IEEE Transactions on Reliability, 63(1), pp.270~289 (2014)
  7. Cadar, Cristian, "Symbolic execution for software testing in practice : preliminary assessment", Proceedings of the 33rd International Conference on Software Engineering, pp.1066~1071 (2011)
  8. Cadar, Cristian, "KLEE : Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs", OSDI, 8, pp.209~224 (2008)
  9. Sen, Koushik, "CUTE : a concolic unit testing engine for C", ACM SIGSOFT Software Engineering Notes, 30(5), pp.263~272 (2005)
  10. Godefroid, Patrice, "DART : directed automated random testing", ACM Sigplan Notices, 40(6), pp.213~223 (2005)
  11. Burnim, Jacob, "Heuristics for scalable dynamic test generation", Automated Software Engineering, 2008. ASE 2008. 23rd IEEE, 2008, 443~446
  12. Chipounov, Vitaly, "S2E : a platform for in-vivo multi-path analysis of software systems", ACM SIGPLAN Notices, 46(3), pp.265~278 (2011)
  13. Bellard, Fabrice, "QEMU, a fast and portable dynamic translator", USENIX Annual Technical Conference, pp.41~46 (2005), FREENIX Track
  14. Lattner, Chris, "LLVM : A compilation framework for lifelong program analysis &transformation", Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization, pp.75~ (2004), IEEE Computer Society

관련 논문AI추천

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