论文部分内容阅读
目前,越来越多的混合应用出现在了各大Android应用市场中,根据IDC的数据统计显示,截至2016年第三季度,Android占据了智能手机操作系统份额的86.8%。这些应用包含了 Android原生的Java代码以及Web页面。为了提高用户的使用体验,混合应用一般都会向Web页面暴露一些本地Java方法供Web页面中的JavaScript代码调用,访问一些设备资源。JavaScript代码调用本地Java方法时,应用程序首先会与远程服务器建立链接,随后在建立起的链接中调用本地的Java方法。然而,仔细分析发现,整个调用过程存在比较明显的攻击面。第一,在建立链接过程中,为了保护数据的传输,Android混合应用通常使用SSL或TLS与远端服务器建立HTTPS链接。但是由于开发者的安全意识不够强或者开发时的疏忽,一些HTTPS链接并没有想象的那么安全,特别是当HTTPS链接中的SSL证书出现错误时,对这些错误的不恰当处理也容易引起中间人攻击和钓鱼攻击。第二,假如JavaScript调用的本地Java方法可以执行敏感的操作,如发送短信、访问联系人信息、获取地理位置信息等,如果这种调用发生在HTTP这种不安全的链接中时,容易引发中间人攻击,恶意代码被注入后可以在用户不知情的情况执行敏感的操作,造成用户隐私数据泄露甚至对设备造成一定的危害。为了检测Web到Native调用机制的安全性,论文设计并实现了一个检测模型,该检测模型包括静态分析部分和动态分析部分,能够(1)判断应用程序与远程服务器建立的HTTPS链接是否安全;(2)并可以在HTTP链接中检测是否存在JavaScript调用本地敏感的Java方法。为了测试此检测模型的对Web到Native调用机制安全性的检测能力,检测模型检测了从国内第三方市场中下载的13820个应用程序,静态分析发现1360个应用可能存在SSL证书错误处理不当,随后动态分析确定了 711个存在SSL错误处理安全问题的应用程序。为了更加详细的分析JavaScript在HTTP链接中调用本地敏感的Java方法,实验进一步选取了 400个应用程序对其进行详细分析,最终发现43个应用程序会在HTTP链接中调用敏感的Java方法。