哥伦比亚大学的研究人员近日发布了Crylogger,这是一种开放源代码动态分析工具,可检测Android应用程序中存在的加密漏洞。
研究者用Crylogger测试了Google Play商店中1780个流行的Android应用程序,涵盖了流行的信息流媒体、文件和密码管理器、身份验证应用程、个人通讯等多种应用,结果令人震惊,几乎所有Android应用都存在加密漏洞:
所有受测应用都违反26条加密规则中的至少一项
1775个应用使用了不安全的伪随机数生成器(PRNG)
1764个应用使用了损坏的哈希函数(SHA1、MD2、MD5等)
1076个应用程序使用CBC操作模式(在客户端-服务器方案中容易受到填充oracle攻击的影响)
820个应用程序使用静态对称加密密钥(硬编码)
关于Crylogger
接受检测的每个带有工具化密码库的应用程序都在Crylogger中运行,该工具记录程序执行期间传递给密码API的参数,然后使用密码规则列表离线检查其合法性。
研究人员解释说:“加密(密码)算法是所有安全系统的基本组成部分:例如,加密哈希函数和加密算法可以保证诸如完整性和机密性之类的安全属性。”
“所谓加密滥用就是调用的加密API未遵守通用安全准则,例如由密码学家或NIST和IETF等组织建议的准则。”
为了确认可以真正利用Crylogger识别并标记加密漏洞,研究人员手动对28个经过测试的应用程序进行了反向工程,并发现其中14个确实容易受到攻击(即使某些问题可能被开发人员认为不在加密范围内,因为它们需要提升权限才能有效利用)。
双管齐下
通过对150个样本应用的对比测试,研究者发现Crylogger(动态分析工具)与CryptoGuard(检测Java应用程序加密滥用的一个开源静态分析工具)存在互补关系,前者漏掉的一些漏洞会被后者检测到,反之亦然。
研究人员建议开发者在应用在应用商店上架或发布之前,同时使用以上两个工具对应用进行测试。
令人揪心的发现
如本文开头所述,太多的应用程序破坏了太多的加密规则。而且,太多的应用程序和库开发人员选择忽略这些问题。
研究人员通过电子邮件向306个违反9个或更多加密规则的Android应用程序开发人员发送了电子邮件:只有18个开发人员回覆,只有8个开发人员在第一封电子邮件后继续进行交流,并提供了有关其发现的有用反馈。他们还联系了流行的Android库的6位开发人员,并从其中2位获得了答案。