Android安全問題筆記

開發的App在安全檢測工具上監測到一些問題,故特開security欄研究android app 安全問題,此文爲檢測到的一些安全問題

  • AllowBackup 配置

    • Android API Level 8 及其以上 Android 系統提供了爲應用程序數據的備份和恢復功能

    • 此功能的開關決定於該應用程序中 AndroidManifest.xml 文件中的Application節點 allowBackup 屬性值,其屬性值默認是 True。當 allowBackup 標誌爲 true 時,用戶即可通過 adb backup 和 adb restore 來進行對應用數據的備份和恢復,這可能會帶來一定的安全風險。

  • WebView JS交互問題

    • 調用了高危API addJavascriptInterface,Android系統版本4.2以下可以導致遠程命令執行

    • 安全檢測給出的修復建議:不使用addJavascriptInterface進行javascript層與java層的通信,可以使用shouldOverrideUrlLoading或着onConsoleMessage等函數進行通信

  • 第三方平臺授權信息寫在了本地

    • 微信登陸授權信息secret與appid寫在了本地

    • 檢測平臺修復建議:將信息放在服務器端,由服務器端來中轉接口調用請求

  • BroadCastReceiver組件的數據接受

    • 使用registerReceiver(mReceiver,intentFilter)的方式動態註冊的BroadCastReceiver是公開的組件,外部應用可以給該動態註冊的BroadCastReceiver發送惡意數據

    • 檢測平臺修復建議:建議使用registerReceiver(BroadCastReceiver receiver,IntentFilter filter,String broadcastPermission,Handler scheduler)增加權限或使用LocalBroadCastManger

  • Intent劫持風險安全

    • 使用隱式Intent來發送廣播,惡意程序可以通過註冊收聽同樣的action的broadcastreceiver來劫持Intent,如果Intent中有敏感信息,會造成敏感信息泄露

    • 檢測平臺修復建議:如果Intent中包含敏感信息,那麼在sendBoadcast之前需要顯式指定component

  • Intent附帶數據漏洞

    • 如果getIntent()的intent附帶空數據、異常或畸形數據,在處理getXXXExtra()獲取數據時沒進行異常捕獲,會出現ClassNotFoundException異常導致應用Crash

    • 阿里聚安全建議

      • 將不必要的導出的組件設置爲不導出,防止引起拒絕服務,尤其是殺毒、安全防護、鎖屏防盜等安全應用; 在AndroidMenifest.xml文件中,將相應組件的“android:exported”屬性設置爲“false”,如下示例:

        <activity android:name="XXXActivity"
                  android:exported="false"/> 
        
      • Intent處理數據時進行捕獲異常通過Intent.getXXXExtra()獲取的數據時進行以下判斷,以及用try catch方式進行捕獲所有異常,以防止應用出現拒絕服務漏洞:空指針異常 類型轉換異常 數組越界訪問異常 類未定義異常 其他異常

    • Android應用本地拒絕服務漏洞淺析

  • 數據存儲安全問題

    • 存在安全問題的數據存儲 Shared Preferences、Intentnal Storage、Android Database

    • 風險條件

      • 使用MODE_WORLD_READABLE模式創建存儲文件或使用MODE_WORLD_WRITEABLE模式創建存儲文件並含有"android:shareUserId" 屬性值和測試簽名
    • 風險原理

      • 使用MODE_WORLD_READABLE模式創建Shared Preferences文件,使得其他應用對該Shared Preferences文件具備可讀的權限;
      • 使用MODE_WORLD_WRITEABLE模式創建Shared Preferences文件並含有“android:sharedUserId”屬性值,使得其他應用對該應用的Shared Preferences文件具備可寫的權限。
      • 在具備root權限的程序或用戶對任何應用程序通過任意模式創建的的Shared Preferences文件都具有可讀可寫的權限
    • 修復建議

      • 避免使用MODE_WORLD_WRITEABLE和MODE_WORLD_READABLE模式創建進程間通信的文件
      • 避免將密碼等敏感數據信息明文存儲在Shared Preferences中
      • 避免濫用“Android:sharedUserId”屬性
  • Content Provider 文件目錄遍歷漏洞

    • 風險觸發條件
      • 對外暴露的Content Provider組件實現了opneFile()的接口
      • 且沒有對文件的Uri進行有效的判斷和過濾
    • 漏洞原理
      • 對外暴露的Content Provider實現了openFile()接口,其它應用可以調用該Content Provider 並調用它的openFile()方法進行數據訪問,如果沒有對訪問權限和目標文件Uri進行有效的判斷,就可以遍歷訪問任意可讀文件
    • 修復建議
      • 將不必要導出的Content Provider設置爲不導出
      • 去除沒有必要的OpenFile()接口
      • 對openFile訪問的文件路徑進行有效判斷
      • 使用簽名驗證來控制Content
      • Provider共享數據的訪問權限:設置protectionLevel=”signature”
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章