Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Blender: Self-randomizing Address Space Layout for Android Apps

论文下载

摘要

针对Android 5.x版本ASLR机制的安全性,本文介绍了一种新的攻击方式:“return-to-art” (ret2art),并且针对这种方式提出了相应的解决方案。

Ret2art

系统在启动的时候会将所有的系统lib加载到zygote进程中,并且所有的app进程都由zygote进程fork。这会导致不同APP加载的系统lib会共享同一个内存。攻击者很容易可以推测出这些系统lib的堆栈基地址,动态链接等信息。

Fig

Blender

System Libraries

Fig

  • 对于静态链接的,只要找一个空的随机地址复制过来即可。对于动态链接的:blinker会根据装载的lib绘制一个依赖表,将表中的lib重新安排地址的同时更新GOT。
  • 对于第三方库:修改了GPT中dlopen函数的动态链接,当加载lib的时候blinker重新为so安排地址。

ART

Fig

  • 有一些在boot.oat的分支和oat头文件中一些metadata信息都使用了绝对地址,当boot.oat地址重新安排的时候,这些值都需要patch
  • Class linker中一些指针指向了真实的地址,这些地址也需要被patch

实验

  • 随机性:

Fig