Android安全開發規範

1、Activity 安全
   描述:可被外部調用的activity,起因是因爲 menifest.xml中Activity的屬性explorted=true ,導致可以被劫持或者單個activity調用出現異常。
   檢測方法:在ADB shell 環境下輸入 am start -n com.qihoo.something/com.qihoo360.SomeActivity
   修復方案:
   1. 拒絕外部調用activity。
    (1)如果AndroidManifest中的activity聲明瞭intent-filter,則默認exported爲true。如果禁止外部調用需要設置爲exported=false 

2、broadcast receiver 安全
   描述:可接受外部廣播,起因是因爲 menifest.xml中broadcast receiver的屬性explorted=true ,導致接受惡意廣播出現異常。
   檢測方法:在ADB shell 環境下輸入 am broadcast send -n com.qihoo.something/com.qihoo360.SomeReceiver
   修復方案:
   1. 拒絕外部的廣播。
    (1)在 androidmenifest.xml 中修改broadcast receiver的 explorted=false
    
3、logcat 信息泄露漏洞
   描述:爲了方便調試 system.out.println()使用了函數
   檢測方法:在ADB shell 環境下輸入 logcat 命令
   修復方案:
   1. 刪除代碼航中的system.out.println()函數
   
4、web接口(SQL注入、XSS、代碼執行)
   描述:使用web接口按照公司web安全規範進行執行
   檢測方法:'參考web安全規範
   修復方案: 參考web安全規範

5、任意文件讀取漏洞
   描述:一般情況下對應用目錄進行權限限制
   檢測方法:ADB shell下 執行 ls -R -l /data/data/someApp/
   修復方案:chmod -wrx /data/data/someApp/
   
6、webview組件安全
   描述: WebView組件中的接口函數addJavascriptInterface存在遠程代碼執行漏洞,遠程攻擊者利用此漏洞能實現本地java和js的交互,可對Android移動終端進行網頁掛馬從而控制受影響設備。 
   檢測方法: 訪問精心構造的惡意html文件,導致執行adb 系統命令
   修復方案:
   針對4.2一下版本使用remove addJavascriptInterface,在Android 3.0以下,系統自己添加了一個叫searchBoxJavaBridge_的Js接口,
   要解決這個安全問題,我們也需要把這個接口刪除,調用  removeJavascriptInterface方法。這個searchBoxJavaBridge_是跟google的搜索框相關的。
   
7、master-key漏洞
   描述: 在Android中,每個應用都有個加密簽名,以確保應用中的內容未被篡改。這次發現的漏洞允許黑客在保持簽名完整的情況下,修改應用中的內容。
   檢測方法:暫無
   修復方案:安裝android master-key漏洞補丁
   
8、自身校驗安全(涵應用自行下載第三方軟件服務自身校驗)
   描述: 自動更新時校驗下載的文件是否遠端服務器文件,且安裝時校驗該文件是否是遠端服務器下載的文件。
   檢測方法:暫無
   修復方案:使用公鑰簽名或者apk包自帶揹包算法等或者CRC校驗
   
9、content provider漏洞
  1、任意讀取漏洞
   描述:客戶端APP的實現中定義了一個可以訪問本地文件的Content Provider組件,默認的android:exported="true",對應com.qihoo.android.jobs.html5.LocalFileContentProvider,該Provider實現了openFile()接口,通過此接口可以訪問內部存儲app_webview目錄下的數據,由於後臺未能對目標文件地址進行有效判斷,可以通過"../"實現目錄跨越,實現對任意私有數據的訪問(當然,也可以訪問任意外部存儲數據
   檢測方法:暫無
   修復方案:凡只用於內部調用的組件,導出配置都應該設置爲false,即android:exported="false"。 provider提供者要對讀取者做身份驗證,常用方法是獲取當前調用者的uid,反查調用者的包名,獲取該包的簽名做驗證。

10、忽略證書驗證訪問https(ALLOW_ALL_HOSTNAME_VERIFIER)
  1、忽略證書驗證訪問https(ALLOW_ALL_HOSTNAME_VERIFIER)
   描述:setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER),接受所有證書,導致中間人攻擊
   檢測方法:暫無
   修復方案: 實現證書鎖定的方法有兩種:一種是前文提到的實現X509TrustManager接口,另一種則是使用KeyStore。具體可參考 Android開發文檔中HttpsURLConnection類的概覽說明。
   
11、關鍵信息網絡中傳輸是否加密
  1、信息傳輸需進行加密,協議進行加密(SSL)
   描述:信息在網絡中傳輸確保不被泄露用戶信息
   檢測方法:暫無
   修復方案: 使用加密傳輸方案(取決於需求而定)
   
12、關鍵信息本地(設備中)存儲是否加密
  1、存儲包括但不限於sqlite xml txt dat等文件在本地存儲時是否有效加密
   描述:本地存儲關鍵數據時要加密
   檢測方法:暫無
   修復方案: 對於用戶密碼、重要的加密key等信息不得在本地保存。如果確需保存,不得以明文或者簡單Hash(如MD5)形式保存。
簡單Hash有很大概率可以利用彩虹庫碰撞出來。至少要使用用戶信息和一個本地獨特的信息在一起做Hash,比如密碼+IMEI。這樣可以極大降低本碰撞出的機率。

13、webview API接口是否進行白名單限制
  1、確保webview接口調用系統功能時僅限於該應用的功能範圍之內
   描述:webview接口避免使用第三方程序惡意使用發送短信,撥打電話,刪除文件
   檢測方法:暫無
   修復方案: 白名單進行限制,功能僅限於該應用的功能範圍之內

14、對於onreceive和oncreate等過程傳遞的數據沒有辦法獲取身份,那麼就需要在業務邏輯上避免用此類接口控制重要邏輯.

15、動態加載jar包時一定要有某種安全校驗機制(如:來源,簽名校驗,md5(不推薦))

16、用SharedPreference來保存數據時,對於敏感信息的key儘量使用縮寫或者其他不易知其意的命名,比如:KEY_PHONENUMBER, KEY_SERVER_IP_ADDRESS,應該改爲KEY_P_N, KEY_S_I_A等;


四、android滲透工具
   Ad Network Detector (1.2): http://market.android.com/details?id=com.lookout.addetector
   App Backup & Restore (1.0.5): http://market.android.com/details?id=mobi.infolife.appbackup
   App Cache Cleaner (1.1.3): http://market.android.com/details?id=mobi.infolife.cache
   ARPspoof: https://github.com/robquad/Arpspoof/Arpspoof.apk/qr_code
   CACertMan (0.0.2-20110906): http://market.android.com/details?id=info.guardianproject.cacert
   CacheMate for Root Users Free (2.4.2): http://market.android.com/details?id=com.aac.cachemate.demo
   Carrier IQ Detector (1.1.1): http://market.android.com/details?id=com.lookout.carrieriqdetector
   DeuterIDE (0.5): http://market.android.com/details?id=com.didactic.DeuterIDE
   Devcheats (1.2): http://market.android.com/details?id=miquelco.devcheats
   DroidVPN (1.8.7c): http://market.android.com/details?id=com.aed.droidvpn
   Gibberbot (0.0.9-RC4): http://market.android.com/details?id=info.guardianproject.otr.app.im
   InfoSec Reference (40): http://market.android.com/details?id=hackers.reference.free
   IPv6 and More (2.1): http://market.android.com/details?id=com.tsts.ipv6

 

------------------ 摘取自360安全編碼規範

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章