[论文解读] Security Issues in the Android Cross-Layer Architecture
本文提出一种基于流的模型,用于分析Android架构中的跨层交互,发现Android安全框架(ASF)对层间通信缺乏控制。实验表明,恶意应用程序可利用未受监控的系统调用——尤其是通过Zygote进程——发起拒绝服务攻击,表明其攻击面比以往认知更广。
The security of Android has been recently challenged by the discovery of a number of vulnerabilities involving different layers of the Android stack. We argue that such vulnerabilities are largely related to the interplay among layers composing the Android stack. Thus, we also argue that such interplay has been underestimated from a security point-of-view and a systematic analysis of the Android interplay has not been carried out yet. To this aim, in this paper we provide a simple model of the Android cross-layer interactions based on the concept of flow, as a basis for analyzing the Android interplay. In particular, our model allows us to reason about the security implications associated with the cross-layer interactions in Android, including a recently discovered vulnerability that allows a malicious application to make Android devices totally unresponsive. We used the proposed model to carry out an empirical assessment of some flows within the Android cross-layered architecture. Our experiments indicate that little control is exercised by the Android Security Framework (ASF) over cross-layer interactions in Android. In particular, we observed that the ASF lacks in discriminating the originator of a flow and sensitive security issues arise between the Android stack and the Linux kernel, thereby indicating that the attack surface of the Android platform is wider than expected.
研究动机与目标
- 调查Android分层架构中跨层交互的安全影响。
- 识别因对层间系统调用控制不足而产生的漏洞,特别是Android各层与Linux内核之间的交互。
- 评估Android安全框架(ASF)是否能有效区分跨层交互中的合法与恶意调用。
- 评估重放截获系统调用以演示可利用流的可行性。
- 证明Android的攻击面不仅限于Android堆栈,还因跨层访问控制薄弱而扩展至更广范围。
提出的方法
- 提出一种基于流的模型,用于表示Android五层架构(应用层、框架层、运行时层、类库层、Linux内核)之间的交互。
- 通过自定义内核模块进行系统调用日志记录,捕获并记录由Android系统服务器在应用框架层发起的系统调用。
- 开发一个测试应用程序(SysCallTester),用于读取日志并在Android设备上重放截获的系统调用。
- 通过实验评估21个关键系统调用(如bind、close、ioctl、socket)在Android 2.3.3和3.2版本上的重放成功率。
- 分析Linux内核和ASF在区分系统调用来源(系统服务器与不受信任的应用程序)方面的能力。
- 以Zygote进程为案例研究,展示不受控的进程分叉如何导致拒绝服务漏洞。
实验结果
研究问题
- RQ1Android安全框架(ASF)在多大程度上控制或监控Android组件与Linux内核之间的跨层系统调用?
- RQ2恶意应用程序是否可利用未受监控的系统调用触发关键漏洞,如资源耗尽?
- RQ3Zygote进程的进程分叉功能是否对未经授权的调用提供了充分保护?
- RQ4Linux内核在区分来自系统服务器与来自不受信任应用程序的系统调用方面有多有效?
- RQ5在考虑Android堆栈之外的跨层交互时,Android的实际攻击面有多大?
主要发现
- Android安全框架(ASF)无法有效区分系统调用的合法与恶意调用方,导致潜在滥用。
- Linux内核无法区分来自系统服务器(正常用户进程)的系统调用与来自恶意应用程序的系统调用,削弱了隔离保证。
- SysCallTester在Android 2.3.3和3.2上成功重放了85%(21个中的18个)截获的系统调用,表明许多系统调用可被重放并利用。
- Zygote漏洞允许恶意应用通过触发无限量的进程分叉,导致设备无响应,原因在于对fork系统调用缺乏访问控制。
- Android的攻击面远比预期更广,因为跨层交互——尤其是Android堆栈与Linux内核之间的交互——安全防护严重不足。
- Android当前设计中缺乏流级别安全建模与强制机制,导致此前未被发现的漏洞长期处于未被检测且可被利用的状态。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。