Static Analysis of JNI Programs via Binary Decompilation

被引:6
作者
Park, Jihee [1 ]
Lee, Sungho [2 ]
Hong, Jaemin [1 ]
Ryu, Sukyoung [1 ]
机构
[1] Korea Adv Inst Sci & Technol KAIST, Sch Comp, Daejeon 34141, South Korea
[2] Chungnam Natl Univ, Dept Comp Sci & Engn, Daejeon 34134, South Korea
基金
新加坡国家研究基金会;
关键词
!text type='Java']Java[!/text; Codes; Source coding; Static analysis; Libraries; Computer architecture; Security; !text type='Java']Java[!/text] native interface; binary decompilation; static analysis; !text type='JAVA']JAVA[!/text;
D O I
10.1109/TSE.2023.3241639
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
JNI programs are widely used thanks to the combined benefits of C and Java programs. However, because understanding the interaction behaviors between two different programming languages is challenging, JNI program development is difficult to get right and vulnerable to security attacks. Thus, researchers have proposed static analysis of JNI program source code to detect bugs and security vulnerabilities in JNI programs. Unfortunately, such source code analysis is not applicable to compiled JNI programs that are not open-sourced or open-source JNI programs containing third-party binary libraries. While JN-SAF, the state-of-the-art analyzer for compiled JNI programs, can analyze binary code, it has several limitations due to its symbolic execution and summary-based bottom-up analysis. In this paper, we propose a novel approach to statically analyze compiled JNI programs without their source code using binary decompilation. Unlike JN-SAF that analyzes binaries directly, our approach decompiles binaries and analyzes JNI programs with the decompiled binaries using an existing JNI program analyzer for source code. To decompile binaries to compilable C source code with precise JNI-interoperation-related types, we improve an existing decompilation tool by leveraging the characteristics of JNI programs. Our evaluation shows that the approach is precise as almost the same as the state-of-the-art JNI program analyzer for source code, and more precise than JN-SAF.
引用
收藏
页码:3089 / 3105
页数:17
相关论文
共 38 条
[31]  
Oracle, 2020, CHAPT 2 DES OV COMP
[32]  
Schwartz Edward J., 2013, Proceedings of the 22nd USENIX Security Symposium. Security '13, P353
[33]   More Sound Static Handling of Java']Java Reflection [J].
Smaragdakis, Yannis ;
Balatsouras, George ;
Kastrinis, George ;
Bravenboer, Martin .
PROGRAMMING LANGUAGES AND SYSTEMS, APLAS 2015, 2015, 9458 :485-503
[34]   ILEA: Inter-language analysis across Java']Java and C [J].
Tan, Gang ;
Morrisett, Greg .
ACM SIGPLAN NOTICES, 2007, 42 (10) :39-56
[35]   Sound C Code Decompilation for a Subset of x86-64 Binaries [J].
Verbeek, Freek ;
Olivier, Pierre ;
Ravindran, Binoy .
SOFTWARE ENGINEERING AND FORMAL METHODS, SEFM 2020, 2020, 12310 :247-264
[36]   JN-SAF: Precise and Efficient NDK/JNI-aware Inter-language Static Analysis Framework for Security Vetting of Android Applications with Native Code [J].
Wei, Fengguo ;
Lin, Xingwei ;
Ou, Xinming ;
Chen, Ting ;
Zhang, Xiaosong .
PROCEEDINGS OF THE 2018 ACM SIGSAC CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY (CCS'18), 2018, :1137-1150
[37]  
Wei T, 2007, LECT NOTES COMPUT SC, V4634, P170
[38]   A Generic Approach to Automatic Deobfuscation of Executable Code [J].
Yadegari, Babak ;
Johannesmeyer, Brian ;
Whitely, Benjamin ;
Debray, Saumya .
2015 IEEE SYMPOSIUM ON SECURITY AND PRIVACY SP 2015, 2015, :674-691