Static Analysis of JNI Programs via Binary Decompilation

被引:4
作者
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 条
[1]   Going Native: Using a Large-Scale Analysis of Android Apps to Create a Practical Native-Code Sandboxing Policy [J].
Afonso, Vitor ;
Bianchi, Antonio ;
Fratantonio, Yanick ;
Doupe, Adam ;
Polino, Mario ;
de Geus, Paulo ;
Kruegel, Christopher ;
Vigna, Giovanni .
23RD ANNUAL NETWORK AND DISTRIBUTED SYSTEM SECURITY SYMPOSIUM (NDSS 2016), 2016,
[2]   DroidNative: Automating and optimizing detection of Android native code malware variants [J].
Alam, Shahid ;
Qu, Zhengyang ;
Riley, Ryan ;
Chen, Yan ;
Rastogi, Vaibhav .
COMPUTERS & SECURITY, 2017, 65 :230-246
[3]   Too Quiet in the Library: An Empirical Study of Security Updates in Android Apps' Native Code [J].
Almanee, Sumaya ;
Unal, Arda ;
Payer, Mathias ;
Garcia, Joshua .
2021 IEEE/ACM 43RD INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE 2021), 2021, :1347-1359
[4]  
Andriesse D, 2016, PROCEEDINGS OF THE 25TH USENIX SECURITY SYMPOSIUM, P583
[5]  
[Anonymous], 2018, 98992018 ISOIEC, V4th
[6]  
ArgusLab, 2019, NATIVEFLOWBENCH
[7]  
Arzt S, 2014, ACM SIGPLAN NOTICES, V49, P259, DOI [10.1145/2666356.2594299, 10.1145/2594291.2594299]
[8]   Static Analysis of Implicit Control Flow: Resolving Java']Java Reflection and Android Intents [J].
Barros, Paulo ;
Just, Rene ;
Millstein, Suzanne ;
Vines, Paul ;
Dietl, Werner ;
d'Amorim, Marcelo ;
Ernst, Michael D. .
2015 30TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING (ASE), 2015, :669-679
[9]  
Calcagno C, 2011, LECT NOTES COMPUT SC, V6617, P459, DOI 10.1007/978-3-642-20398-5_33
[10]   BinGo: Cross-Architecture Cross-OS Binary Search [J].
Chandramohan, Mahinthan ;
Xue, Yinxing ;
Xu, Zhengzi ;
Liu, Yang ;
Cho, Chia Yuan ;
Kuan, Tan Hee Beng .
FSE'16: PROCEEDINGS OF THE 2016 24TH ACM SIGSOFT INTERNATIONAL SYMPOSIUM ON FOUNDATIONS OF SOFTWARE ENGINEERING, 2016, :678-689