6月4日,由InForSec主办,清华大学(网络研究院)-奇安信联合研究中心、复旦大学系统软件与安全实验室承办,中国科学院计算技术研究所计算机体系结构国家重点实验室、中国科学院软件研究所可信计算与信息保障实验室、百度安全、奇安信集团、蚂蚁集团、阿里安全协办的“网络安全四大顶会研究成果分享”之“移动互联网安全”(二)论坛在线上成功召开。本次会议由复旦大学副教授张源主持,共77人参加会议。我实验室廉轲轲博士参与了本次会议,并就其近期的研究工作做了报告,报告标题为《安卓系统服务数据存储机制安全分析》。
廉博士首先介绍了这篇研究工作的背景和动机。Android系统服务是安卓系统中至关重要的角色,用于执行很多关键任务,为了保障系统功能和提供更好的用户体验,安卓系统服务会将APP传输的数据保存在系统中。例如,AccountManagerService支持将用户在APP中的账户信息保存在系统中,使得用户在使用APP时无需重复输入登录凭证。目前针对安卓系统服务的安全研究很多,但是其数据存储过程却很少被理解,本项工作针对安卓系统中被忽略的数据存储过程进行了系统性安全分析。
然后,廉博介绍了安卓系统服务数据存储过程的三个特点:
APP侧和系统侧数据生命周期不一致。Android APP基于Binder IPC和系统服务进程进行通信,APP在将数据发送到系统进程后可以立即释放本地内存资源,然而系统服务却需要保存这些数据一段时间,以防将来被使用。如此,导致恶意的APP可以让系统进程消耗超过自身的内存资源。
受限的内存使用。安卓系统对每个进程的内存资源设置了限制,例如安卓11中系统进程的Dalvik堆内存资源上限是512M,当内存资源耗尽时,会抛出OOM错误,并触发系统恢复机制重启系统。
缺少内存大小检查。一个直观的检查策略是在存储来自APP的数据之前,检查本地内存是否足够,然后在对安卓系统服务代码分析过程后发现,系统中缺少足够的内存资源检查,尤其是安卓序列化机制中的设计缺陷更加剧了这些问题的存在。
基于这些特点,廉博提出了一种新类型的DoS攻击-稻草攻击,攻击者通过不断向系统服务进程中注入数据,耗尽系统服务进程内存资源,最终导致暂时性或持久性的系统DoS。由于Binder IPC机制的限制,每次通信所携带的数据量是有限的,因此攻击需要多次执行系统接口,攻击的过程类似于向骆驼背上不断添加稻草,因此命名为稻草攻击。
为了实现自动化检测安卓系统服务中的稻草漏洞,廉博提出了基于定向灰盒模糊测试的漏洞检测工具-StrawFuzzer,结合静态分析和动态测试技术,首先通过静态分析确定潜在的漏洞目标,再利用模糊测试技术验证漏洞是否存在。
最后,廉博介绍了该工具的实验结果以及一些研究发现。StrawFuzzer在最新的3个安卓系统上测试,发现了35个独特的漏洞,能够影响到474个系统服务接口,导致暂时性或持久性DoS攻击。此外,廉博还介绍了他们的一些研究发现,例如对漏洞攻击时长的分析,漏洞引入的原因分析,以及漏洞接口的权限分析等。
(转载自 复旦白泽战队公众号)