Gmail Android app的最新版本(在写作本文时是8.7.15.206199545)存在一个不安全的网络安全配置,为通过用户提供的CA实现对Android7以上版本(43% 以上的Android系统)的中间人攻击提供了可能性。
Android Nougat通过引入CA认证提高了安全性,所有API 级别24以上且运行在安卓7以上版本的应用程序,都实现了默认网络安全配置,不信任用户在系统中配置的CA,以防止用户误安装被攻击者控制的CA而引起中间人攻击。
但是,自定义网络安全配置允许特定应用程序信任用户提交的CA,这会明显削弱默认安全配置的安全性。
让我们来看Gmail Android app。在用Droidstat-x做静态分析之前,我已经动态测试了很多应用程序并发现了这个问题。最新版本(8.7.15.206199545)通过设置一个自定义信任锚,就可以在网络安全配置文件中实现对用户提供CA的信任。这意味着,攻击者只要成功诱导用户安装被控制的CA,就可以在同一个网络段中拦截应用程序通信。
网络安全配置文件在/res/xml文件夹中,名称为network_security_config.xml。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
启动Gmail app,可以获得所有app通信数据,比如最新邮件同步。
这个错误还提醒我们证书锁定的重要性。即使用户提供的CA被app安装和信任,证书锁定仍可以帮助我们防御这种攻击。
当出于调试目的或项目还在开发阶段时,可以使用元素<debug-overrides>,该元素仅允许应用程序在调试模式下信任用户提供的CA。
已有应用程序都应该实现API级别24以上,以便在安卓7以上版本运行时受到默认安全配置的安全保护。
另外,申请在应用商店上架的新应用程序被要求实现26级别及以上的API,从2018年11月1日开始,应用程序更新也有同样要求。
实现证书锁定。
2018/5/30 将漏洞报告给谷歌安全
2018/5/30 创建问题80482278
我们已接收您的漏洞提交,决定不将其作为安全漏洞进行修复。
在我们看来,您描述的问题只会发生社会工程学中,我们的用户很少收到这种攻击。请参阅https://sites.google.com/site/bughunteruniversity/nonvuln/attacks-facilitating-phishing-or-social-engineering获得更多解释。
很抱歉我们的VRP不能接受这份报告。只有对我们用户数据的保密性或完整性造成重大影响的技术安全漏洞的报告才会被接受,我们认为您提到的问题不符合标准。
如果您认为我们的理解有误,麻烦告知!
2018/5/30 我们试图证明,基础操作系统会遭受这种类型的攻击,因此不应该放弃这个问题。
2018/5/31 最后的请求没有得到回复。我们试图确认这是否为谷歌的最后决定。
2018/6/4 谷歌安全回复:
您好,我不知道安卓团队为什么得出这样的结论。这不是一个安全漏洞,我们接受这个结论。
2018/6/4 我们回复,并明确指出,研究这个漏洞的最终目标不是为了帮助像之前链接中的示例那样的网络钓鱼或社会工程。
2018/6/5 谷歌安全回复:
重新阅读报告后,我们认为你是对的。我不知道Gmail app是否或为什么这样做,但是它会从Android Nougat的硬件设置中退出。我们会继续调查。
2018/6/8 谷歌安全回复:
感谢您的报告。
我们会根据您的报告提出这个漏洞。初看报告时可能会觉得这个问题没那么严重,但是评审团会很快重新评审。
评审团将在下次会议上评估您的报告,一旦我们得到更多的信息会及时通知您。您现在要做的就是等待。如果您在2-3周内没有收到我们的回复或者有关于漏洞的其他信息,请告诉我们!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2019-1-8 15:01
被CCkicker编辑
,原因: