Skip to main content
QUICK REVIEW

[论文解读] BinderCracker: Assessing the Robustness of Android System Services

Huan Feng, Kang G. Shin|arXiv (Cornell University)|Apr 23, 2016
Advanced Malware Detection Techniques参考文献 21被引用 7
一句话总结

BinderCracker 是一种自动化的、参数感知的模糊测试框架,通过直接向 Binder IPC 接口注入格式错误的事务来测试 Android 系统服务的鲁棒性。它在六个 Android 版本中发现了超过 100 个此前未知的漏洞,包括严重的远程代码执行和拒绝服务(DoS)缺陷,暴露了尽管客户端 API 有保护措施,服务器端输入验证仍普遍失效的问题。

ABSTRACT

In Android, communications between apps and system services are supported by a transaction-based Inter-Process Communication (IPC) mechanism. Binder, as the cornerstone of this IPC mechanism, separates two communicating parties as client and server. As with any client-server model, the server should not make any assumption on the validity (sanity) of client-side transaction. To our surprise, we find this principle has frequently been overlooked in the implementation of Android system services. In this paper, we demonstrate the prevalence and severity of this vulnerability surface and try to answer why developers keep making this seemingly simple mistake. Specifically, we design and implement BinderCracker, an automatic testing framework that supports parameter-aware fuzzing and has identified more than 100 vulnerabilities in six major versions of Android, including the latest version Android 6.0, Marshmallow. Some of the vulnerabilities have severe security implications, causing privileged code execution or permanent Denial-of-Service (DoS). We analyzed the root causes of these vulnerabilities to find that most of them exist because system service developers only considered exploitations via public APIs. We thus highlight the deficiency of testing only on client-side public APIs and argue for the necessity of testing and protection on the Binder interface - the actual security boundary. Specifically, we discuss the effectiveness and practicality of potential countermeasures, such as precautionary testing and runtime diagnostic.

研究动机与目标

  • 调查由于过度依赖客户端 API 强制执行而导致的 Android 系统服务中输入验证漏洞的普遍性和严重性。
  • 查明开发者为何在已知客户端-服务器架构最佳实践的情况下,仍持续忽视服务器端健壮性。
  • 设计并实现一种自动化测试框架,能够对 Binder IPC 事务进行深度、语义感知的模糊测试,以暴露隐藏漏洞。
  • 倡导将安全测试和验证从公共客户端 API 转移到 Binder 接口——真正的安全边界——而非依赖客户端 API。
  • 证明参数感知模糊测试相较于传统黑盒模糊测试,在发现更深层次、更关键缺陷方面的有效性。

提出的方法

  • BinderCracker 自动发现并爬取 Java 和原生 Android 系统服务的 RPC 接口。
  • 通过记录和变异真实事务实现参数感知模糊测试,利用运行时重建远程对象句柄以保持语义有效性。
  • 具备对 Binder 事务结构深度理解的重放引擎,可在保持模式完整性的同时变异复杂、非基本数据类型。
  • 通过依赖跟踪和分层反序列化,将高层级事务结构转换为可模糊测试的原始输入。
  • 支持半有效输入变异,以提高测试覆盖率,并发现随机黑盒模糊测试遗漏的边界情况。
  • 系统在运行时维护事务模式和发送者元数据,以提升攻击可见性和崩溃归因能力。

实验结果

研究问题

  • RQ1由于信任客户端 API,Android 系统服务中输入验证漏洞的普遍程度如何?
  • RQ2为何 Android 系统服务开发者在已知安全风险的情况下,仍持续未能实现服务器端输入验证?
  • RQ3与传统黑盒模糊测试相比,参数感知模糊测试能否显著提升对深层关键漏洞的发现能力?
  • RQ4所识别漏洞的根本原因是什么,它们与关于 API 安全性的错误假设有何关联?
  • RQ5运行时诊断和模式日志在提升漏洞利用可见性和漏洞分析方面有多有效?

主要发现

  • BinderCracker 在六个主要 Android 版本中(包括 Android 6.0(Marshmallow))识别出超过 100 个此前未知的漏洞。
  • 超过 70% 的已识别漏洞可被利用进行远程代码执行或永久性拒绝服务(DoS)攻击,其中一些导致 Android 运行时的系统级崩溃。
  • 在相同时间内,参数感知模糊测试发现的漏洞数量是等效黑盒模糊测试的 7 倍。
  • 大多数漏洞的根本原因在于开发人员依赖客户端 API 强制执行,错误地认为私有 API 或反序列化过程是安全或不可访问的。
  • 大量漏洞源于对远程对象句柄、反序列化数据和非公开接口缺乏健全性检查。
  • 该框架表明,服务器端健壮性不仅必要,而且被严重低估;Binder 接口才是真正的安全边界,必须加以保护。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。