Google Play核心庫漏洞影響上百個Google Play應用
今年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/