프로그램 분석을 위한 정적분석 기반 역추적 제어흐름그래프 생성 방안 모델
Static Analysis Based on Backward Control Flow Graph Generation Method Model for Program Analysis
0
조회
0
다운로드
0
인용
0
참고문헌
키워드
초록
프로그램 자동 분석 방법 중 하나인 기호 실행은 지난 몇 해 동안 기술적으로 크게 향상 되었다. 그러나 여전히 기호실행 그 자체만을 이용하여 프로그램을 분석하는 것은 실용적이지 않다. 가장 큰 이유로는 프로그램 분석 중에 발생하는 경로 폭발 문제로 인한 메모리 부족으로, 기호 실행을 이용해 프로그램의 모든 경로의 해를 구할 수 없다. 따라서 분석가는 모든 경로의 해를 구하는 것이 아닌 취약성을 갖는 지점으로 기호 실행 탐색 경로를 구성하는 것이 실용적이다. 본 논문에서는 기호 실행 과정에서 사용될 수 있는 정적분석 기반 바이너리 역방향 제어 흐름 그래프 생성방법 기술을 제안한다. 역방향 제어 흐름 그래프 생성을 통해 분석가는 바이너리 내의 잠재적인 취약지점을 선정할수 있고, 해당 지점으로부터 생성된 역추적 경로는 향후 기호 실행을 위해 효율적으로 사용될 수 있다. 우리는 리눅스바이너리(x86)를 대상으로 실험을 진행하였고, 실제로 잠재적인 취약점 선정 및 역추적 경로 생성이 바이너리의 다양한 상황에서 가능함을 보였다.
Abstract
Symbolic execution, an automatic search method for vulnerability verification, has been technically improved over the lastfew years. However, it is still not practical to analyze the program using only the symbolic execution itself. One of thebiggest reasons is that because of the path explosion problem that occurs during program analysis, there is not enoughmemory, and you can not find the solution of all paths in the program using symbolic execution. Thus, it is practical forthe analyst to construct a path for symbolic execution to a target with vulnerability rather than solving all paths. In thispaper, we propose a static analysis - based backward CFG(Control Flow Graph) generation technique that can be used insymbolic execution for program analysis. With the creation of a backward CFG, an analyst can select potential vulnerablepoints, and the backward path generated from that point can be used for future symbolic execution. We conductedexperiments with Linux binaries(x86), and indeed showed that potential vulnerability selection and backward CFG pathgeneration were possible in a variety of binary situations.
참고문헌 (19)
- Heelan, Sean, "Automatic generation of control flow hijacking exploits for software vulnerabilities" (2009)
- Avgerinos, Thanassis, "Automatic exploit generation", Communications of the ACM, 57(2) (2014)
- Cha, Sang Kil, "Unleashing mayhem on binary code", Security and Privacy (SP), 2012 IEEE Symposium on (2012), IEEE
- Huang, Shih-Kun, "Software crash analysis for automatic exploit generation on binary programs", IEEE Transactions on Reliability, 63(1), pp.270~289 (2014)
- Cadar, Cristian, "Symbolic execution for software testing in practice: preliminary assessment", Proceedings of the 33rd International Conference on Software Engineering (2011), ACM
- Cadar, Cristian, "KLEE:Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs", OSDI, 8 (2008)
- Sen, Koushik, "CUTE: a concolic unit testing engine for C", ACM SIGSOFT Software Engineering Notes, 30(5) (2005), ACM
- Godefroid, Patrice, "DART: directed automated random testing", ACM Sigplan Notices, 40(6) (2005), ACM
- Burnim, Jacob, "Heuristics for scalable dynamic test generation", Automated Software Engineering, 2008. ASE 2008. 23rd IEEE, 2008, ~[DOI]
- Chipounov, Vitaly, "S2E:a platform for in-vivo multi-path analysis of software systems", ACM SIGPLAN Notices, 46(3), pp.265~278 (2011)
- Cadar, Cristian, "Symbolic execution for software testing: three decades later", Commun, 56(2), pp.82~90 (2013), ACM
- Lightweight Static Taint Analysis for Binary Executables Vulnerability Testing, "Sanjay Rawat", University of Grenoble, ~ (2009)
- Rohit Mothe, "DPTrace: Dual Purpose Trace for Exploitability Analysis of Program", BlackHat US (2016)
- Haller, Istvan, "Dowsing for Overflows: A Guided Fuzzer to Find Buffer Boundary Violations", Presented as part of the 22nd USENIX Security Symposium, pp.49~64 (2013)
- Neugschwandtner, "The borg:Nanoprobing binaries for buffer overreads", Proceedings of the 5th ACM Conference on Data and Application Security and Privacy, pp.87~97 (2015), ACM
- "Static simgle assignment form" (2019)[URL]
- "Binary Ninja" (2019)[URL]
- "CVE-2016-0160"[URL]
- "CGC-Binary"[URL]
