Android调试器爆漏洞,可获取设备内存数据

2015-06-30 08:34


本月中旬,谷歌推出了针对查找安卓系统漏洞的“安卓安全奖励”计划,发现一次漏洞最少可获500美元奖励。不过半月,真的有人发现了安卓系统漏洞。

趋势科技(Trend Micro)近日发现了存在于Android调试器Debuggerd中的漏洞,该漏洞可以获取设备内存中的数据,包括Android 4.0 Ice Cream Sandwich(冰淇淋三明治)到Lollipop(棒棒糖)等系统均受到影响。

Debuggerd是android的一个daemon进程,负责在进程异常出错时,将进程的运行时信息dump出来供分析。Debuggerd生成的coredump数据是以文本形式呈现,被保存在 /data/tombstone/ 目录下,共可保存10个文件,当超过10个时,会覆盖重写最早生成的文件。从4.2版本开始,Debuggerd同时也是一个实用工具:可以在不中断进程执行的情况下打印当前进程的native堆栈。这可以协助分析进程执行行为,但最最有用的地方是:它可以非常简单的定位到native进程中锁死或错误逻辑引起的死循环的代码位置。

然而一个构造精巧的ELF(Executable and Linkable Format)文件可以导致调试器崩溃,然后通过tombstone文件和对应的logd日志文件暴露内存内容。此文件可用于拒绝服务攻击,以及帮助绕过ASLR执行恶意代码。导致漏洞的原因是在执行字符串复制命令时,Debuggerd会使用sym->st_name作为offset,而不进行错误检查。这个值可以轻易被恶意的ELF文件控制,它可以将offset值指向不可读取的内存,从而导致Debuggerd崩溃。如果反复崩溃就会造成拒绝服务攻击,也无法再连接Debuggerd了。如果精心构造offset就会使Debuggerd暴露相应的内存内容,Debuggerd会将它们存入dump和log文件中。不过仅仅利用该漏洞是无法进行代码执行的,而通过该漏洞暴漏的信息则可以和其他漏洞结合从而用于代码执行。

该漏洞可被恶意或重新打包的应用程序利用。不过因为不能直接通过代码执行,能造成的影响会相对有限。目前受到漏洞影响的系统版本包括Android 4.0 (Ice Cream Sandwich)到Lollipop(5.x),而在最新版本Android M中该漏洞已经得到了修复。

据悉,趋势科技已经在今年4月27日向谷歌提交了漏洞报告,谷歌承认了该问题的存在,并将其判定为低等级漏洞。在今年5月15日的Android Open Source Project (AOSP,Android 开放源代码项目) 大会上,谷歌更新了一个针对该漏洞的补丁。