今年8月,有研究人员发现了Google Play Core Library核心库中发现了一个安全漏洞,攻击者利用该漏洞可以在任意应用范围内进行本地代码执行。本文从安全角度分析漏洞的影响。
背景
Google Play Core Library核心库是app与Google Play应用商店运行时的接口。利用Core Library核心库可以实现以下功能:
- 下载其他语言资源;
- 管理特征模块的分发;
- 管理资产包的分发;
- 触发app 内的更新;
- 请求app内的检查。
Google Play Core Library核心库是应用本身与Google Play服务之间交互的网关,从动态代码加载到本地资源分发,再到与Google Play 审查机制的交互。
许多主流的应用常用的库包括:
- Google Chrome
- SnapChat
- Booking
- Edge
Google Play应用商店中,Facebook和instagram截止目前的下载了分别超过50亿和10亿。
CVE-2020-8913
在每个应用的沙箱中,都有2个文件夹:一个存放从Google Play中接收到的验证过的文件,一个存放没有经过验证的文件。从Google Play服务下载的文件会进入验证文件夹,而从其他源下载的文件会被送到非验证的文件夹。当文件写入验证文件夹后,就会与加载和执行它的Google Play core核心库来交互。
另外一个特征允许其他源将文件推送到应用的沙箱中。但这有一些限制:文件会被推送到非验证的文件夹,但这个过程不是库自动处理的。
该漏洞利用了以上2个特征,使用了文件遍历。当第三方源推送文件到另一个应用后,就需要提供要写入的文件的路径。如果攻击者使用文件便利(../verified_splits/my_evil_payload.apk),payload就会写入验证过的文件夹,会自动加载到有漏洞的应用并在该范围内执行。谷歌已经于2020年4月6日修复了该漏洞。
关于漏洞的更多技术细节参见:
漏洞影响
如果把这些使用Google Play Core library核心库的主流应用和本地代码执行漏洞结合起来,就会发现其中的威胁。如果有恶意应用利用了该漏洞,就可以在应用程序中实现代码执行,获得有漏洞的应用相同的访问权限。比如:
- 向银行应用中注入代码来获取凭证信息,同时利用SMS 权限来窃取双因子认证码;
- 向企业APP中注入代码来获取企业资源的访问权限;
- 向社交媒体应用中注入代码来监控受害者,使用位置权限来追踪设备;
- 向即时应用中注入代码来获取所有消息,也可以以受害者名义发送消息。
因为该漏洞在4月已经修复了,那么威胁在哪里呢?答案就是因为补丁需要由开发者推送到应用中。由于这是客户端的漏洞,每个开发者需要获取最新版本的库,并插入到应用中。
从该漏洞发布后,研究人员就开始监控这些有漏洞的应用。今年9月份,SandBlast Mobile分析发现有13%的Google Play 应用程序使用了该库,这些应用中有8%是有漏洞的。与9月份的版本相比,当前版本中仍然有很多的应用受到该漏洞的影响。其中包括很多大公司的应用:
- 社交应用 – *Viber
- 旅游应用 – *Booking
- 商业应用 – ***Cisco Teams
- 地图和导航应用 – Yango Pro (Taximeter), **Moovit
- 约会应用 – **Grindr, OKCupid
- 浏览器 – Edge
- 小工具 – Xrecorder, PowerDirector
本文发布之前,研究人员已经通过了以上受影响的漏洞APP尝试,截止目前,Viber、Booking、Grindr、Moovit、Cisco teams都已经更新。
Demo
Demo 视频参见:https://www.youtube.com/embed/Dfa8JEvnteY
如Demo 视频所见,漏洞利用非常容易。唯一需要做的就是创建一个hello world应用,调用有漏洞的APP 中的exported intent来将文件推送到文件便利路径的验证过的文件夹中。在Demo 视频中,研究人员使用了有漏洞的Google Chrome 应用进行测试,并创建了一个payload来获取书签信息。
本文翻译自:
https://research.checkpoint.com/2020/vulnerability-in-google-play-core-library-remains-unpatched-in-google-play-applications/