安全套接层协议(SSL)是现代互联网上的一种根本性技术,让传输中数据能够进行加密、安全传输。不过据Tony Trummer和Tushar Dalvi这两位安全研究人员声称,许多大受欢迎的移动应用程序并没有合理地实施SSL。
Trummer和Tushar都是供职于知名职业社交网站LinkedIn的安全研究人员,他们在近日召开的Defcon安全大会的一场分会上详细介绍了发现结果。这项研究并没有得到其雇主(LinkedIn公司)的资助或赞助,而是利用他们俩自己的时间开展完成的。
这两位研究人员发现,在他们在iOS和安卓平台上测试的许多移动应用程序中,应用程序开发人员禁用了证书机构(CA)的验证机制。而这种验证机制却是确保SSL证书真实而有效的的最佳实践。
核查CA
Trummer和Tushar认为,只要利用简单的测试,就能核查是否与CA取得了联系。他们建议,研究人员应该安装BurpSuite软件(http://portswigger.net/burp/),这个网站应用程序安全测试工具箱既有免费版,也有收费版。Burpsuite可以用作网站流量的代理,为每个主机生成CA签名的证书。
可以配置装有移动应用程序的最终用户设备,以便指向该代理。要是来自该设备的安全SSL流量仍能够通过,这就表明CA验证机制没有在正常工作。
核查主机名称
就SSL而言,这点也很重要:证书名称与所联系的那个网站的名称相一致。为了测试已落实了相应的主机名称核查机制,可以为有别于所测试的目标域的域获得一份有效证书。
Trummer和Tushar都建议,随后应该配置BurpSuite,以便使用测试证书。要是来自移动应用程序的安全SSL流量仍能够通过,那么这表明可能存在问题。
Trummer特别指出,还有一些应用程序发送敏感的信息,比如信用卡数据,却根本没有任何SSL或加密机制。他表示,移动应用程序的开发人员需要接受培训,了解怎样才能合理地实施SSL安全技术。他补充说,厂商们应该落实相应政策,确保传输中数据得到了保护。
Trummer建议,安卓开发人员尤其要注意移动应用程序代码中的TrustManager、SSLSocket和HostName Verifier这些属性。
对iOS开发人员而言,需要特别注意和认真检查的几个方面是现代应用程序代码中的_AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_、SetAllowsAnyHTTPSCertificate和kCFStreamSSLAllowsAnyRoot这些函数。
原文地址:http://www.esecurityplanet.com/mobile-security/how-to-detect-ssl-leakage-in-mobile-apps.html