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

동적 기호 실행을 이용한 힙 메모리 OOB 취약점 자동 탐지 방법

Automated Method for Detecting OOB Vulnerability of Heap Memory Using Dynamic Symbolic Execution

0

조회

0

다운로드

0

인용

0

참고문헌

키워드

주제분류컴퓨터학

초록

OOB(Out-Of-Bounds)는 힙 메모리에서 발생하는 취약점 중 가장 강력한 취약점 중 하나이다. OOB 취약점을이용하면 Array의 길이를 속여 해당 길이만큼의 메모리를 읽기 혹은 쓰기가 가능하기 때문에 공격자는 기밀 정보에대한 무단 액세스를 악용할 수 있다. 본 논문에서는 동적 기호 실행과 쉐도우 메모리 테이블을 활용하여 힙 메모리에서 발생하는 OOB 취약점을 자동으로 탐지하는 방법을 제안한다. 먼저, 힙 메모리 할당 및 해제 함수 후킹을 통해 쉐도우 메모리 테이블을 구축한다. 이후 메모리 액세스가 발생할때, 쉐도우 메모리를 참조하여 OOB가 발생할 수 있는지를 판단하고, 발생 가능성이 존재할 경우 크래시를 유발하는 테스트케이스를 자동으로 생성한다. 제안하는 방법을 활용할 경우, 취약한 블록 탐색에 성공한다면 반드시 OOB를 유발하는 테스트케이스를 생성할 수 있다. 뿐만 아니라 전통적인 동적 기호 실행과는 다르게 명확한 목표 지점을설정하지 않더라도 취약점 탐색이 가능하다.

Abstract

Out-Of-Bounds (OOB) is one of the most powerful vulnerabilities in heap memory. The OOB vulnerability allows anattacker to exploit unauthorized access to confidential information by tricking the length of the array and reading or writingmemory of that length. In this paper, we propose a method to automatically detect OOB vulnerabilities in heap memoryusing dynamic symbol execution and shadow memory table. First, a shadow memory table is constructed by hooking heap memory allocation and release function. Then, when amemory access occurs, it is judged whether OOB can occur by referencing the shadow memory, and a test case for causinga crash is automatically generated if there is a possibility of occurrence. Using the proposed method, if a weak block searchis successful, it is possible to generate a test case that induces an OOB. In addition, unlike traditional dynamic symbolexecution, exploitation of vulnerabilities is possible without setting clear target points.

참고문헌 (16)

  1. "Resources vulnerability review 2017"[URL]
  2. "Vulnerability distribution of CVE security vulnerabilities by type"[URL]
  3. "Cyber Grand Challenge"[URL]
  4. SEREBRYANY, "AddressSanitizer: A fast address sanity checker", Proceedings of USENIX Annual Technical Conference (2012)
  5. T. Avgerinos, "Enhancing symbolic execution with veritesting", Proceedings of the International Conference on Software Engineering (ICSE), pp.1083~1094 (2014), ACM
  6. Y. Shoshitaishvili, "Firmalice - automatic detection of authentication bypass vulnerabilities in binary firmware", Proceedings of the Symposium on Network and Distributed System Security (NDSS) (2015)
  7. "The ultimate security vulnerability datasource"[URL]
  8. P. Godefroid, "SAGE: Whitebox fuzzing for security testing", Communications of the ACM, 55(3), pp.40~44 (2012)
  9. V. Chipounov, "S2E: A platform for in-vivo multi-path analysis of software systems", Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS XVI, pp.265~278 (2011), ACM
  10. Transformation-aware Exploit Gen- eration using a HI-CFG, "D. Caselden", University of Cal- ifornia, ~ (2013)
  11. S. K. Cha, "Unleashing Mayhem on binary code", Proceedings of the IEEE Symposium on Security and Privacy (2012)
  12. N. Stephens, "Driller: Augmenting fuzzing through selective symbolic execution", NDSS'16, pp.1~16 (2016), Internet Society
  13. I. Haller, "Dowsing for overflows: A guided fuzzer to find buffer boundary violations", Proceedings of the USENIX Security Symposium (2013)
  14. V. Ganesh, "Taint-based directed whitebox fuzzing", Proceedings of the International Conference on Software Engineering (ICSE) (2009)
  15. Nicholas Nethercote, "Valgrind: A framework for heavyweight dynamic binary instrumentation", Proc. of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '07), pp.89~100 (2007)
  16. Derek Bruening, "Practical memory checking with Dr. Memory", Proc. of the International Symposium on Code Generation and Optimization (CGO '11), pp.213~223 (2011)

관련 논문AI추천

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