Android 属性 allowBackup 安全风险浅析

1. allowBackup 安全风险描述

Android API Level 8 及其以上 Android 系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中 AndroidManifest.xml 文件中的 allowBackup 属性值,其属性值默认是 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 文件内容:

    
    
        
        
        
            
                
                    
                    
                
            
            
        
    
    

    该POC应用启动后如下左图所示与登录之后如下右图所示:

    Android 属性 allowBackup 安全风险浅析_第1张图片

  2. AndroidManifest.xml 文件显示设置 allowBackup 属性值为 false,即 android:allowBackup="false",则 Android 应用不可通过 adb 命令进行备份和恢复整个应用的数据

    AndroidManifest.xml文件内容:

    
    
        
        
        
            
                
                    
                    
                
            
            
        
    
    

    该POC应用启动后如下左图所示与登录之后如下右图所示:

    Android 属性 allowBackup 安全风险浅析_第2张图片

5. allowBackup 风险修复建议

出于安全考虑,阿里聚安全建议关闭应用备份功能:在 AndroidMenifest.xml 文件中,将相应组件的 “android:allowBackup” 属性设置为 “false”,如下示例:


    
        
            
            
        
    
    

转自 阿里聚安全博客常见漏洞系列

你可能感兴趣的:(应用漏洞,移动应用,移动应用开发,移动app)