论文部分内容阅读
在Android平台应用开发过程中,ARM二进制代码库的引入极大地提升了常用算法的执行效率。然而,二进制代码库的引入带来的不仅仅是便利,理解二进制代码所需的时间远高于理解源码,从而会显著地提高分析工作的复杂性,因此在二进制代码中存在的问题就更难被发现。目前针对Android平台应用程序中的二进制代码以及代码库的审查研究主要关注的是应用程序对二进制代码API调用的正确性,研究人员较少地关注二进制代码本身存在的问题和缺陷。如果安全问题并不是来自于错误的API调用,而是产生于代码内部的错误实现,现有的审查方案就难以发现这类问题。为了深入开展Android平台的二进制代码库安全审计,我们设计并实现了一个Android平台二进制代码库的分析系统NativeSpeaker,它具备识别二进制代码库中特定类型的安全漏洞的功能,可被用于在第三方应用市场的应用中进行大规模分析,找到此类漏洞。我们基于NativeSpeaker对目前Android平台二进制代码库进行了大规模分析,我们采集并分析了第三方应用市场中的20000个应用程序,共分析了20353个二进制代码库。我们主要关注二进制代码库中的密码学误用问题,具体地,我们的分析发现有大约30%的开发者以二进制代码库的方式实现了密码算法等安全相关的功能。然而这些以二进制代码库形式实现的安全函数存在很高比例的安全问题:我们发现即使在使用量最高的二进制代码库中(前1%),仍然有三分之一的二进制代码库存在密码学误用问题。进一步,我们选取了由此类误用问题引起的不安全通信漏洞作为分析对象来验证这类密码学误用问题的危害性,结果表明,存在密码学漏洞问题的二进制代码库中,四分之一的分析对象都实现了不安全的网络通信过程。我们的研究工作表明,密码学误用的安全问题广泛存在于Android平台的二进制代码库中。更为严重的是,由于这些二进制代码库中密码算法误用漏洞无法通过API调用分析发现,它们可能会长期隐藏于流行的第三方代码库中,并广泛影响使用这些第三方库的应用程序的安全性。因此,我们提出的NativeSpeaker系统能够为Android平台二进制代码的安全审计提供更加详细的代码理解,从而帮助分析人员和开发人员消除此类安全隐患。