1. 程式人生 > >Android屬性allowBackup安全風險淺析

Android屬性allowBackup安全風險淺析

adding 條件 mission android手機 code 16px ans xtra ddl

1.allowBackup安全風險描述

Android API Level 8及其以上Android系統提供了為應用程序數據的備份和恢復功能,此功能的開關決定於該應用程序中AndroidManifest.xml文件中的allowBackup屬性值[1] ,其屬性值默認是True。當allowBackup標誌為true時,用戶即可通過adb backup和adb restore來進行對應用數據的備份和恢復,這可能會帶來一定的安全風險。

Android屬性allowBackup安全風險源於adb backup容許任何一個能夠打開USB 調試開關的人從Android手機中復制應用數據到外設,一旦應用數據被備份之後,所有應用數據都可被用戶讀取;adb restore容許用戶指定一個恢復的數據來源(即備份的應用數據)來恢復應用程序數據的創建。

因此,當一個應用數據被備份之後,用戶即可在其他Android手機或模擬器上安裝同一個應用,以及通過恢復該備份的應用數據到該設備上,在該設備上打開該應用即可恢復到被備份的應用程序的狀態。

尤其是通訊錄應用,一旦應用程序支持備份和恢復功能,攻擊者即可通過adb backup和adb restore進行恢復新安裝的同一個應用來查看聊天記錄等信息;對於支付金融類應用,攻擊者可通過此來進行惡意支付、盜取存款等;因此為了安全起見,開發者務必將allowBackup標誌值設置為false來關閉應用程序的備份和恢復功能,以免造成信息泄露和財產損失。

2.allowBackup安全影響範圍

Android API Level 8以及以上系統

3.allowBackup安全風險詳情

1)allowBackup 風險位置:

AndroidMannifest.xml文件android:allowBackup屬性;

2) allowBackup風險觸發前提條件:

未將AndroidMannifest.xml文件中的android:allowBackup屬性值設為false;

3) allowBackup風險原理:

當allowBackup標誌值為true時,即可通過adb backup和adb restore來備份和恢復應用程序數據;

4.allowBackup風險POC

1) 不在AndroidManifest.xml文件設置allowBackup屬性值,其默認值為”true”,則應用可通過adb命令進行備份整個應用的數據;
AndroidManifest.xml文件內容:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.alibaba.jaq.allowbackuppoc"
          android:versionCode="1"
          android:versionName="1.0"><uses-sdk android:minSdkVersion="10"/><uses-permission android:name="android.permission.READ_PHONE_STATE" /><application
               android:label="@string/app_name"><activity android:name="LoginActivity"
                  android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter></activity><activity android:name=".HomeActivity"/></application></manifest>

該POC應用啟動後如下左圖所示與登錄之後如下右圖所示:

技術分享

通過adb命令備份該應用登錄之後的應用數據:

技術分享
技術分享

通過作者Nikolay Elenkov寫的解密程序Android Backup Extractor[3]解密出備份的文件”allowBackup.ab”,可得知該POC應用的數據(登錄用戶名和密碼)如下圖所示:

技術分享

在另外一臺Android手機上,安裝該POC應用,然後通過恢復上面備份的數據,可以使得新安裝的應用達到登錄狀態:

技術分享

恢復數據之前:

技術分享

點擊“恢復我的數據”,恢復數據之後,在沒有輸入用戶名和密碼的情況下,通過恢復數據,點擊應用圖標,直接進入登錄狀態:

技術分享

2) 在AndroidManifest.xml文件顯示設置allowBackup屬性值為false,即android:allowBackup="false",則Android應用不可通過adb命令進行備份和恢復整個應用的數據;
AndroidManifest.xml文件內容:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.alibaba.jaq.allowbackuppoc"
          android:versionCode="1"
          android:versionName="1.0"><uses-sdk android:minSdkVersion="10"/><uses-permission android:name="android.permission.READ_PHONE_STATE" /><application
            android:allowBackup="false"
            android:label="@string/app_name"><activity android:name="LoginActivity"
                  android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter></activity><activity android:name=".HomeActivity"/></application></manifest>

該POC應用啟動後如下左圖所示與登錄之後如下右圖所示:

技術分享

通過adb命令備份該應用登錄之後的應用數據:

技術分享

通過解密出備份的文件”allowBackup.ab”,通過如下圖所示可得知該POC應用的備份的數據為空,因此備份不成功:

技術分享

在另外一臺Android手機上,安裝該POC應用,然後通過恢復上面備份的數據,可以使得新安裝的應用達到登錄狀態:

技術分享

恢復數據之前:

技術分享

恢復數據之後,重新打開應用,發現沒有直接進入登錄狀態:

技術分享

5.allowBackup風險修復建議

阿裏聚安全建議將allowBackup屬性值顯示設置為false:

出於安全考慮,阿裏聚安全建議關閉應用備份功能; 在AndroidMenifest.xml文件中,將相應組件的“android:allowBackup”屬性設置為“false”,如下示例:

<application
        android:allowBackup="false"
        android:label="@string/app_name"><activity android:name="LoginActivity"
              android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter></activity><activity android:name=".HomeActivity"/></application

[消息來源:阿裏聚安全常見漏洞介紹,POC 以及解決方案系列,作者/Jason_HZ,轉載請註明來自FreeBuf黑客與極客(FreeBuf.COM)]


來源: http://www.freebuf.com/articles/terminal/60778.html

來自為知筆記(Wiz)

Android屬性allowBackup安全風險淺析