JGRE: an Analysis of JNI Global Reference Exhaustion Vulnerabilities in Android

Yacong Gu,Kun Sun,Purui Su,Qi Li,Yemian Lu,Dengguo Feng,Lingyun Ying
DOI: https://doi.org/10.1109/dsn.2017.40
2017-01-01
Abstract:Android system applies a permission-based security model to restrict unauthorized apps from accessing system services; however, this security model cannot constrain authorized apps from sending excessive service requests to exhaust the limited system resource allocated for each system service. As references from native code to a Java object, JNI Global References (JGR) are prone to memory leaks, since they are not automatically garbage collected. Moreover, JGR exhaustion may lead to process abort or even Android system reboot when the victim process could not afford the JGR requests triggered by malicious apps through inter-process communication. In this paper, we perform a systematic study on JGR exhaustion (JGRE) attacks against all system services in Android. Our experimental results show that among the 104 system services in Android 6.0.1, 32 system services have 54 vulnerabilities. Particularly, 22 system services can be successfully attacked without any permission support. After reporting those vulnerabilities to Android security team and getting confirmed, we study the existing ad hoc countermeasures in Android against JGRE attacks. Surprisingly, among the 10 system services that have been protected, 8 system services are still vulnerable to JGRE attacks. Finally, we develop an effective defense mechanism to defeat all identified JGRE attacks by adopting Androids low memory killer (LMK) mechanism.
What problem does this paper attempt to address?