天天看點

安卓安全需要注意的地方安卓安全需要注意的地方

安卓安全需要注意的地方

最近公司産品通過第三方安全機構評估之後暴露了不少安全問題,對此感覺該做個筆記總結總結,畢竟是花了錢獲得的知識。

終端Root利用漏洞

問題:

終端在ROOT條件下如果被惡意應用擷取ROOT權限後則可以随意通路任意應用儲存的任何資料,造成資料洩露、資料非法篡改等風險。

一個應用程式的程序就是一個安全的沙盒,每一個Android應用程式都會在安裝時就配置設定一個獨有的Linux使用者ID,這就為它建立了一個沙盒,使其不能與其他應用程式進行接觸。這個使用者ID會在安裝時配置設定給它,并在該裝置上一直保持同一個數值。

所有的Android應用程式必須用證書進行簽名認證,而這個證書的私鑰是由開發者保有的。該證書可以用以識别應用程式的作者。簽名影響安全性的最重要的方式是通過決定誰可以進入基于簽名的permisssions。

解決:

參考:http://blog.csdn.net/lintax/article/details/70988565

最後決定采用檢測su指令的方法。

AllowBackUp安全漏洞

問題:

當 allowBackup 标志為 true 時,使用者即可通過 adb backup 和 adb restore 來進行對應用資料的備份和恢複,這可能會帶來一定的安全風險。 adb backup 容許任何一個能夠打開 USB 調試開關的人從Android 手機中複制應用資料到外設,一旦應用資料被備份之後,所有應用資料都可被使用者讀取;adb restore 容許使用者指定一個恢複的資料來源(即備份的應用資料)來恢複應用程式資料的建立。是以,當一個應用資料被備份之後,使用者即可在其他 Android 手機或模拟器上安裝同一個應用,以及通過恢複該備份的應用資料到該裝置上,在該裝置上打開該應用即可恢複到被備份的應用程式的狀态。

解決:

在Mainefest檔案将allowBackUp設定為false。

Activity、Service最小權限:

android:exported 是Android中的四大元件Activity,Service,Provider,Receiver 四大元件中都會有的一個屬性。

exported 的預設值根據Activity中是否有intentfilter 來定。沒有任何的filter意味着這個Activity隻有在詳細的描述了他的class name後才能被喚醒 .這意味着這個Activity隻能在應用内部使用,因為其它application并不知道這個class的存在。是以在這種情況下,它的預設值是false。從另一方面講,如果Activity裡面至少有一個filter的話,意味着這個Activity可以被其它應用從外部喚起,這個時候它的預設值是true。

Service也類似。

WebView安全漏洞

該漏洞源于程式沒有正确限制使用WebView.addJavascriptInterface方法,遠端攻擊者可通過使用JavaReflection API利用該漏洞執行任意Java對象的方法,簡單的說就是通過addJavascriptInterface給WebView加入一個JavaScript橋接接口,JavaScript通過調用這個接口可以直接操作本地的JAVA接口。通過JavaScript,可以通路目前裝置的SD卡上面的任何東西,甚至是聯系人資訊,短信等

谷歌提供了解決方案:

安卓安全需要注意的地方安卓安全需要注意的地方