安卓adb備份存在漏洞 可注入惡意APK
Android在系統(tǒng)備份后還原的處理上存在嚴(yán)重漏洞(CVE-2014-7952),使得攻擊者可以注入惡意的apk文件到備份文件中(這樣還原的時候惡意的應(yīng)用也安裝上去了)。該漏洞是由Android的命令行工具adb的問題導(dǎo)致的,影響目前所有版本的安卓系統(tǒng)(包括Android L)。目前該漏洞沒有修復(fù)。
ADB 功能預(yù)覽
ADB (Android debug bridge)可以執(zhí)行各種各樣的功能,可以通過pc向手機(jī)發(fā)送命令,它也可以對android手機(jī)進(jìn)行全備份,Search-Lab的研究者也正是通過這個功能發(fā)現(xiàn)的該漏洞。
Android系統(tǒng)對安裝的應(yīng)用提供了一種通過adb進(jìn)行備份與還原的機(jī)制。默認(rèn)情況下,應(yīng)用的完整備份包含存放在/data目錄下的私有文件,但是備份行為可以實(shí)現(xiàn)BackupAgent類來自定義,這樣應(yīng)用備份的時候就可以提供自定義的一些文件和數(shù)據(jù)(也就是,能決定備份的東西)。
備份管理器,能調(diào)用自定義的BackupAgent并沒有對應(yīng)用程序返回的數(shù)據(jù)流進(jìn)行過濾。在BackupAgent在執(zhí)行備份的時候,可以在用戶沒有感知的情況下注入其他的apk文件到備份的文件中。BackupAgent并不需要申請android權(quán)限。當(dāng)系統(tǒng)進(jìn)行還原的時候,系統(tǒng)就安裝了注入的android apk。
該漏洞的利用也很直接。攻擊者首先需要誘導(dǎo)用戶有惡意的BackupAgent類的應(yīng)用。該應(yīng)用可以表現(xiàn)為良性應(yīng)用,因為BackupAgent并不需要申請安卓權(quán)限。然后通過adb進(jìn)行備份,創(chuàng)建含有注入的惡意apk的備份文件,再恢復(fù)即可。
POC
Android 4.4.4和Android 5.1.1測試通過
Step 1: 安裝ADB_Backup_Injection.apk (com.searchlab.backupagenttest):
這個應(yīng)用不需任何授權(quán)
Step 2: 使用下面的命令建立備
adb backup -f backup.ab -apk com.searchlab.backupagenttest
Step 3 (可選): 如果你希望檢查一下剛才建立的備份,可以使用ABE工具
java -jar abe.jar unpack backup.ab backup.tar
在tar文件中你能找到注入的應(yīng)用 (com.searchlab.wifitest).
Step 4: 使用下面的命令還原
adb restore backup.ab
因為backup.ab文件已包含注入的應(yīng)用, file already contains the injected application, it will be restored (installed) as well.
Step 5: 驗證WiFi Test應(yīng)用被安裝,這個應(yīng)用使用android.permission.CHANGE_WIFI_STATE和android.permission.ACCESS_WIFI_STATE證明可權(quán)限提升。
地址:https://github.com/irsl/ADB-Backup-APK-Injection/