FunRank: 함수 호출 관계 및 데이터 흐름 분석을 통한 공개된 취약점 식별
FunRank: Finding 1-Day Vulnerability with Call-Site and Data-Flow Analysis
0
조회
0
다운로드
0
인용
0
참고문헌
키워드
초록
최근 소프트웨어 제품의 복잡성 증가로 오픈소스 소프트웨어를 적극 활용하는 경우가 많아지고 있다. 이는 개발 기간 단축에 도움을 주지만, 동시에 사용된 오픈소스 소프트웨어간의 서로 다른 개발 생명 주기(SDLC)가 전체 제품의 버전 최신화를 어렵게 하기도 한다. 이로 인해 사용된 오픈소스 소프트웨어의 알려진 취약점에 대한 패치가 공개되었음에도 불구하고, 패치를 신속히 적용하지 못해 공개 취약점의 위협에 노출되는 경우가 많다. 특정 장치가 이런 위협에 노출되어있는지를 신속히 판별하기 위한 공개 취약점 식별 기법에 관한 여러 연구 들이 수행되어 왔는데, 기존 기법들은 취약점이 발생하는 함수의 크기가 작거나 인라인되는 경우 취약점 발견에 어려움을 겪는 경우가 많다. 본 연구는 이런 문제를 해결하기 위해 함수 호출 관계 및 데이터 흐름 분석을 통한 바이너리 코드 유사성 비교 도구인 FunRank를 개발하였다. 개발된 도구는 기존 연구들과 달리, 컴파일러에 의해 인라인 될 수 있는 크기가 작은 함수의 코드를 식별해야만 발견할 수 있는 공개취약점 또한 찾아낼 수 있도록 설계되어 있다. 본 연구에서 인위적으로 만들어진 벤치마크 및 실제 펌웨어로부터 추출된 바이너리를 이용해 실험한 결과, FunRank가 바이너리 코드 내에서 인라인 된 함수를 잘 찾아내고, 이를 통해 공개된 취약점의 존재성을 빠르게 확인하는 데에 도움을 줌을 보일 수 있었다.
Abstract
The complexity of software products led many manufacturers to stitch open-source software for composing a product. Using open-source help reduce the development cost, but the difference in the different development life cycles makes it difficult to keep the product up-to-date. For this reason, even the patches for known vulnerabilities are not adopted quickly enough, leaving the entire product under threat. Existing studies propose to use binary differentiation techniques to determine if a product is left vulnerable against a particular vulnerability. Despite their effectiveness in finding real-world vulnerabilities, they often fail to locate the evidence of a vulnerability if it is a small function that usually is inlined at compile time. This work presents our tool FunRank which is designed to identify the short functions. Our experiments using synthesized and real-world software products show that FunRank can identify the short, inlined functions that suggest that the program is left vulnerable to a particular vulnerability.
참고문헌 (24)
- Y. Xu, "Patch based vulnerability matching for binary programs", Proceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis, pp.376~387 (2020)
- "CVE-2021-44228"[URL]
- "Observation of Attacks Targeting Apache Log4j2 RCE Vulnerability(CVE-2021-44228)"[URL]
- I. U. Haq, "A survey of binary code similarity", ACM Computing Surveys(CSUR), 54(3), pp.1~38 (2021)
- D. Kim, "Revisiting binary code similarity analysis using interpretable feature engineering and lessons learned", IEEE Transactions on Software Engineering, pp.1~23 (2022)
- P. Sun, "Hybrid firmware analysis for known mobile and iot security vulnerabilities", 2020 50th Annual IEEE, 2020, 373~384[DOI]
- Y. David, "Firmup : Precise static detection of common vulnerabilities in firmware", ACM SIGPLAN Notices, 53(2), pp.392~404 (2018)
- P. P. Chang, "Inline function expansion for compiling c programs", Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation, pp.246~257 (1989)
- R. W. Scheifler, "An analysis of inline substitution for a structured programming language", Communications of the ACM, 20(9), pp.647~654 (1977)
- "An Inline Function is As Fast As a Macro"[URL]
- M. Chandramohan, "Bingo : Cross-architecture cross-os binary search", Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp.678~689 (2016)
- H. Zhang, "Precise and accurate patch presence test for binaries", 27th USENIX Security Symposium (USENIX Security 18), pp.887~902 (2018)
- X. Xu, "Neural network-based graph embedding for cross-platform binary code similarity detection", Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security, pp.363~376 (2017)
- "CVE-2017-16544"[URL]
- "IDA pro"[URL]
- A. Jia, "1-to-1 or 1-to-n? investigating the effect of function inlining on binary similarity analysis", ACM Transactions on Software Engineering and Methodology, Just accepted[DOI]
- A. Jia, "Comparing one with many–solving binary2source function matching under function in"
- "A powerful and user-friendly binary analysis platform!"[URL]
- N. Nethercote, "Valgrind : a framework for heavyweight dynamic binary instrumentation", ACM Sigplan notices, 42(6), pp.89~100 (2007)
- "python3"[URL]
- "Firmware Analysis Tool"[URL]
- "BinDiff"[URL]
- W. D. Clinger, "Proper tail recursion and space efficiency", Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation, pp.174~185 (1998)
- "Object size checking to prevent (some) buffer overflows"[URL]
