zoukankan      html  css  js  c++  java
  • [安卓安全] 01.安卓本地数据存储:Shared Preferences安全风险浅析

    Android本地数据存储:Shared Preferences安全风险浅析

    安卓Shared Preferences存储安全风险描述

    Android系统提供了以下四种Android应用本地存储方式:Shared Preferences、SQLite Databases、Internal Storage(内存储)、External Storage(外存储)等存储方式。Shared Preferences是一种轻量级的基于XML文件存储的键值对(key-value)数据的数据存储方式,一般用于储存应用的配置等信息。

    Shared Preferences存储安全风险

    1. 开发者在创建文件时没有正确的选取合适的创建模式(MODE_PRIVATEMODE_WORLD_READABLE以及MODE_WORLD_WRITEABLE)进行权限控制。
    2. 开发者过度依赖Android系统内部存储安全机制,将用户信息、密码等敏感重要的信息明文存储在Shared Preferences文件中,导致攻击者可通过root手机来查看敏感信息。

    在乌云漏洞平台上,存在大量Shared Preferences文件中明文存储个人身份信息、密码以及token等重要敏感信息导致泄露的漏洞,如网易阅读Android客户端漏洞导致账号密码泄漏、高朋团购网泄漏用户敏感信息、苏宁易购用户敏感信息泄露。

    Shared Preferences存储安全影响范围

    Android所有系统。

    Shared Preferences存储安全风险详情

    // 取得活动的preferences对象.
    SharedPreferences uiState = act.getSharedPreferences(CONFIG_DATA, mode);
    
    1. 上面这段代码,是取得活动的preferences对象,如果是MODE_WORLD_READABLE模式创建Shared Preferences文件,其他应用对该文件具有可读权限。使用攻击代码,会查看到这个文件的数值。
    2. 若使用MODE_WORLD_WRITEABLE模式创建Shared Preferences文件并含有“android:sharedUserId”属性值,使得其他应用对该应用的Shared Preferences文件具备可写的权限。使用MODE_WORLD_WRITEABLE模式创建Shared Preferences,虽然其他应用不可读取该应用的Shared Preferences文件,但是如果恶意应用与该应用具有相同的“android:sharedUserId”属性值和签名key时,恶意应用即可对其Shared Preferences文件进行写操作,使用攻击代码,可以获取这个文件的读写权限并修改文件中的数值。
    3. 在具备root权限的程序或用户对任何应用程序通过任意模式创建的的Shared Preferences文件都具有可读可写的权限。使用攻击代码,可以任意读写应用创建的文件。

      root下可任意读写应用创建的Shared Preferences,因此不可将密码等用户敏感信息明文存储在其中。

    Shared Preferences存储安全风险修复建议

    1. 避免使用MODE_WORLD_WRITEABLE和MODE_WORLD_READABLE模式创建进程间通信的文件。
    2. 如果需要进程间数据共享,可考虑content provider。
    3. 避免将密码等敏感数据信息明文存储在Shared Preferences中。
    4. 避免滥用“android:sharedUserId”属性。

     

    本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 
    转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4989641.html

     

     

  • 相关阅读:
    hdu 3268 09 宁波 现场 I
    hdu 3697 10 福州 现场 H
    CodeForces Round #521 (Div.3) D. Cutting Out
    #Leetcode# 226. Invert Binary Tree
    zufe 蓝桥选拔
    #Leetcode# 100. Same Tree
    #Leetcode# 6. ZigZag Conversion
    PAT 1084 外观数列
    #Leetcode# 38. Count and Say
    #Leetcode# 22. Generate Parentheses
  • 原文地址:https://www.cnblogs.com/superdo/p/4989641.html
Copyright © 2011-2022 走看看