天天看點

Android常見漏洞

常見漏洞

漏洞名稱: Log敏感資訊洩露

漏洞描述: 程式運作期間列印了使用者的敏感資訊,造成洩露

修改建議: 建議禁止隐私資訊的log

漏洞名稱: web https校驗錯誤忽略漏洞

漏洞描述: 漏洞可導緻中間人攻擊

修改建議: 建議不要忽略ssl認證錯誤

漏洞名稱: sql注入漏洞

漏洞描述: 漏洞可能導緻使用者資料庫中的資訊洩露或者篡改

修改建議: 建議使用安全sqlite,如sqlcipher

漏洞名稱: https空校驗漏洞

漏洞描述: 漏洞可導緻中間人攻擊

修改建議: setHostnameVerifier接口請設定安全選項級别

漏洞名稱: Provider元件暴露漏洞

漏洞描述: 沒有權限限制的導出元件可以使其他app通路本程式的資料,導緻資料洩露

修改建議: 建議增權重限限制

漏洞名稱: Fragment注入漏洞

漏洞描述: 漏洞導緻通過intent輸入适當的extra就可以調用其内部的任意fragment

修改建議: 不要導出PreferenceActivity

漏洞名稱: WebView遠端代碼執行(CVE-2014-1939)

漏洞描述: 在4.0至4.2的Android系統上,Webview會增加searchBoxJavaBredge_,導緻遠端代碼執行。攻擊者可以向頁面植入Javascript,通過反射在用戶端中執行任意惡意代碼

修改建議: 在Webview中調用removeJavascriptInterface(“searchBoxJavaBredge_”)

漏洞名稱: ContentResolver暴露漏洞

漏洞描述: 通過暴露的ContentResolver可以繞過provider的權限限制

修改建議: 對使用ContentResolver的元件不導出或者添權重限限制

漏洞名稱: https通信沒有校驗伺服器證書

漏洞描述: 應用沒有校驗伺服器證書,可導緻中間人攻擊,洩露通信内容

修改建議: 不要重寫TrustManager類,或者實作checkServerTrusted,增加對伺服器證書的校驗

漏洞名稱: https通信允許所有的伺服器證書

漏洞描述: 應用沒有校驗伺服器證書,可導緻中間人攻擊,洩露通信内容

修改建議: 不要調用setHostnameVerifier設定ALLOW_ALL_HOSTNAME_VERIFY标志位

漏洞名稱: Activity安全漏洞

漏洞描述: Activity存在崩潰或者異常,任意其它應用可導緻存在此漏洞的應用崩潰或者功能調用

修改建議: 對傳給Activity的intent中的參數進行嚴格的檢測,如無必要不要導出這個Activity

漏洞名稱: WebView遠端代碼執行(CVE-2012-6636)

漏洞描述: JavascriptInterface允許攻擊者向頁面植入Javascript,通過反射在用戶端中執行任意惡意代碼。所有應用在4.2以下的應用會受影響,編譯API level 小于17的應用在全部系統中都受影響

修改建議: 若應用編譯時API level小于17,需要提升SDK版本。如果希望4.2以下的手機不受影響,可以參考替代方案https://github.com/pedant/safe-java-js-webview-bridge

漏洞名稱: Service安全漏洞

漏洞描述: Service存在崩潰或者異常,任意其它應用可導緻存在此漏洞的應用崩潰或者功能調用

修改建議: 對傳給Service的intent中的參數進行嚴格的檢測,如無必要不要導出這個Service

漏洞名稱: 使用不安全的加密模式

漏洞描述: 使用AES或者DES加密時,使用的預設加密模式或者顯式指定使用ECB模式.容易受到選擇明文攻擊(CPA),造成資訊洩露

修改建議: 顯式指定使用CBC模式加密

漏洞名稱: Receiver安全漏洞

漏洞描述: BroadcastReceiver存在崩潰或者異常,任意其它應用可導緻存在此漏洞的應用崩潰或者功能調用

修改建議: 對傳給BroadcastReceiver的intent中的參數進行嚴格的檢測,如無必要不要導出這個Receiver

漏洞名稱: 加密時不能指定IV

漏洞描述: CBC加密時,使用了常量作為IV,可被進行BEAST攻擊,造成資訊洩露

修改建議: 動态生成IV的數值

漏洞名稱: 存在外部可通路的表單

漏洞描述: 應用中存在外部可通路的表單,造成資訊洩露

修改建議: 稽核這些表單的通路權限,如果非必要不要導出

漏洞名稱: 私有檔案周遊漏洞

漏洞描述: 通過存在漏洞的URI,可以周遊讀取應用的私有資料檔案,造成資訊洩露

修改建議: 修改存在檔案周遊漏洞的URI的ContentProvider的實作,對輸入進行嚴格的檢測和過濾

漏洞名稱: Selection SQL注入漏洞

漏洞描述: 應用存在Selection SQL注入漏洞,會導緻存儲在ContentProvider中的資料被洩漏和篡改

修改建議: 修改存在注入漏洞的URI的ContentProvider的實作,對輸入進行嚴格的檢測和過濾

漏洞名稱: Projection SQL注入漏洞

漏洞描述: 應用存在Projection SQL注入漏洞,會導緻存儲在ContentProvider中的資料被洩漏和篡改

修改建議: 修改存在注入漏洞的URI的ContentProvider的實作,對輸入進行嚴格的檢測和過濾

漏洞名稱: 存在可被惡意通路的表單

漏洞描述: 存在可以利用SQL注入方式通路的表單,造成資訊洩露

修改建議: 修複相關的SQL注入漏洞

漏洞名稱: 同源繞過漏洞

漏洞描述: activity接收使用file://路徑的協定,卻沒有禁用Javascript的執行,通過此漏洞可以讀取應用的任意内部私有檔案,造成資訊洩露

修改建議: 禁用file協定或禁止file協定加載的檔案執行Javascript

漏洞名稱: 本地代碼執行漏洞

漏洞描述: Activity接受外部傳入的url參數,且存在WebView遠端代碼。攻擊者可從本地或者遠端對用戶端進行注入,執行任意惡意代碼

修改建議: 不要導出此Activity,或者對接受的url參數進行嚴格判斷

常見風險

風險名稱: app備份風險

風險描述: 允許程式備份,可能導緻使用者資訊洩露

修改建議: 如果不需要備份則添加allowBackup=false,或者實作加密備份

風險名稱: Log資訊洩露

風險描述: 程式運作期間的log資料可能洩露

修改建議: 建議釋出版去掉log資訊

風險名稱: Intent洩露使用者敏感資訊

風險描述: Intent資料包含使用者的敏感資訊,可能導緻洩露

修改建議: 将敏感資訊加密,采用權限限制Intent的範圍

風險名稱: Receiver元件暴露風險

風險描述: 廣播可被外部調用導緻敏感資訊洩露

修改建議: 無需暴露的元件請設定exported=false;若需要外部調用,建議添加自定義signature或signatureOrSystem級别的私有權限保護;需要暴露的元件請嚴格檢查輸入參數,避免應用出現拒絕服務。程序内動态廣播注冊建議使用LocalBroadcastManager;或者使用registerReceiver(BroadcastReceiver, IntentFilter, broadcastPermission, Handler)替代registerReceiver(BroadcastReceiver, IntentFilter)

風險名稱: 廣播資訊洩露風險

風險描述: 廣播可以被其他惡意程式進行接收,導緻使用者資訊洩露或者終止廣播

修改建議: 建議使用顯式調用方式發送Intent;程序内發送消息建議使用LocalBroadcastManager;或者使用權限限制接收範圍,如使用sendBoardcast(Intent, receiverPermission)替代sendBoardcast(Intent)

風險名稱: 外部存儲使用風險

風險描述: 存儲在外部空間的資料可能造成資訊洩露

修改建議: 建議敏感資料不要采用外部存儲,外部存儲做好權限限制和加密處理

風險名稱: app調試風險

風險描述: 允許程式被調試

修改建議: 将debugable的值修改為false

風險名稱: 私有配置檔案讀風險

修改建議: 建議禁用全局讀操作,改為MODE_PRIVATE

風險名稱: 使用者自定義權限濫用風險

風險描述: 以下權限為normal權限,可能導緻敏感資訊洩露

修改建議: 建議修改為signature或者signatureOrSystem

風險名稱: 私有配置檔案讀寫風險

修改建議: 建議禁用全局寫操作 改為MODE_PRIVATE

風險名稱: 私有配置檔案寫風險

修改建議: 建議禁用全局讀寫操作 改為MODE_PRIVATE

風險名稱: 私有檔案洩露風險

風險描述: 存在敏感檔案洩露風險

修改建議: 建議禁用MODE_WORLD_READABLE和MODE_WORLD_READABLE選項打開檔案

風險名稱: Activity元件暴露風險

風險描述: Activity接口可被其它應用調用,用于執行特定的敏感操作或釣魚欺騙,建議添加 android:exported=false,若需要外部調用,需自定義signature或者signatureOrSystem級别的權限

修改建議: 無需暴露的元件請設定exported=false;若需要外部調用,建議添加自定義signature或signatureOrSystem級别的私有權限保護;需要暴露的元件請嚴格檢查輸入參數,避免應用出現拒絕服務。

風險名稱: 全局可讀檔案

風險描述: 應用記憶體在其它任何應用都可以讀取的私有檔案,可能造成資訊洩漏

修改建議: 将檔案屬性改為隻有所屬使用者或同組使用者可以讀取

風險名稱: 全局可寫檔案

風險描述: 應用記憶體在其它任何應用都可以修改的私有檔案,可能造成應用行為被修改甚至是代碼注入

修改建議: 将檔案屬性改為隻有所屬使用者或同組使用者可以修改

風險名稱: Uri使用者敏感資訊洩露

風險描述: Uri中包含使用者敏感資訊,導緻逆向分析者很容易獲得相關資訊

修改建議: Uri路徑做轉換

風險名稱: 嘗試使用root權限

風險描述: 如果程式具有root權限,且沒有對調用做限制的話,可能被惡意利用

修改建議: 禁用不必要的高權限,并對關鍵權限加上校驗限制

風險名稱: Url使用者敏感資訊洩露

風險描述: Url中包含使用者敏感資訊,可能導緻資訊洩露

修改建議: 資料加密處理

風險名稱: 外部URL可控的Webview

風險描述: Activity可被其它應用程式掉用并加載一個外部傳入的連結,可被用來進行釣魚攻擊,或者進一步進行漏洞利用

修改建議: 減少不必要的Activity的導出

風險名稱: KeyStore風險