discovRE: Efficient Cross-Architecture Identification of Bugs in Binary Code

被引:173
作者
Eschweiler, Sebastian [1 ,2 ]
Yakdan, Khaled [1 ,2 ]
Gerhards-Padilla, Elmar [2 ]
机构
[1] Univ Bonn, Bonn, Germany
[2] Fraunhofer FKIE, Wachtberg, Germany
来源
23RD ANNUAL NETWORK AND DISTRIBUTED SYSTEM SECURITY SYMPOSIUM (NDSS 2016) | 2016年
关键词
D O I
10.14722/ndss.2016.23185
中图分类号
TP [自动化技术、计算机技术];
学科分类号
0812 ;
摘要
The identification of security-critical vulnerabilities is a key for protecting computer systems. Being able to perform this process at the binary level is very important given that many software projects are closed-source. Even if the source code is available, compilation may create a mismatch between the source code and the binary code that is executed by the processor, causing analyses that are performed on source code to fail at detecting certain bugs and thus potential vulnerabilities. Existing approaches to find bugs in binary code 1) use dynamic analysis, which is difficult for firmware; 2) handle only a single architecture; or 3) use semantic similarity, which is very slow when analyzing large code bases. In this paper, we present a new approach to efficiently search for similar functions in binary code. We use this method to identify known bugs in binaries as follows: starting with a vulnerable binary function, we identify similar functions in other binaries across different compilers, optimization levels, operating systems, and CPU architectures. The main idea is to compute similarity between functions based on the structure of the corresponding control flow graphs. To minimize this costly computation, we employ an efficient pre-filter based on numeric features to quickly identify a small set of candidate functions. This allows us to efficiently search for similar functions in large code bases. We have designed and implemented a prototype of our approach, called discovRE, that supports four instruction set architectures (x86, x64, ARM, MIPS). We show that discovRE is four orders of magnitude faster than the state-of-the-art academic approach for cross-architecture bug search in binaries. We also show that we can identify Heartbleed and POODLE vulnerabilities in an Android system image that contains over 130,000 native ARM functions in about 80 milliseconds.
引用
收藏
页数:15
相关论文
共 56 条
[1]  
Aho Alfred V., 1974, The Design and Analysis of Computer Algorithms
[2]  
Aho AV, 2003, COMPILERS PRINCIPLES, V2
[3]  
[Anonymous], 2013, DD-WRT Firmware Image r21676
[4]  
[Anonymous], ImageMagick
[5]  
[Anonymous], 2009, International Food Safety Authorities Network (INFOSAN) BISPHENOL A (BPA) - Current state of knowledge and future actions by WHO and FAO, P1
[6]  
[Anonymous], 2011, P 18 ACM C COMP COMM
[7]  
[Anonymous], 2013, ReadyNAS Firmware Image v6.1.6
[8]  
Avgerinos Thanassis., 2011, Proceedings of the 18th Symposium on Network and Distributed System Security (NDSS), P59
[9]  
Balakrishnan Gogul, 2007, THESIS
[10]  
Bao T, 2014, PROCEEDINGS OF THE 23RD USENIX SECURITY SYMPOSIUM, P845