Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

NaClDroid: Native Code Isolation for Android Applications

论文下载

摘要

作者移植谷歌浏览器的沙盒技术——Google’s Native Client到android上,用来保护app不受到恶意第三方库的native code在因为能够直接读写内存而造成运行时修改代码,泄露用户隐私信息的影响。

NaClDroid

  • 主要是讲解了如何将Native Client移植到android上。
  • Dalvik调用so的时候:修改了系统的dlopen,dlsym函数。当Dalvik调用相关函数的时候,会首先重新起一个线程当做bridge,将接下去的函数执行交个Native Client。

Fig

  • 调用JNI函数的时候:首先复制了一份JNIenv,然后把所有的函数指针指向bridge中相关的函数,然后NaCl会接管这个函数。

Fig

  • 修改了Runtime.exec()等这些API,使得APP不能执行不在白名单之内的文件夹中的so。同时把shell组的uid删除,防止APP通过shell运行native。

实验

  • 作者首先测试了native code的使用情况,发现204,040个APP中有8272个APP使用so。

Fig

  • 作者自己写了很多测试用的APP,包含了很多packages,overhead平均低于10%。