APP安全測評checklist

leader不要打我啊,我要借用一下我組app的安全測評檢查方案,這些最基本的安全防範措施應該是每一個app都要注意的吧:html

對了,首先,你的app得先混淆啊~:AndroidStudio 混淆打包java

先來個checklist:android

編號web

檢查項目數據庫

測評結果安全

1服務器

明文傳輸用戶名、密碼和驗證碼等敏感信息。架構

 

2app

不安全的本地存儲。ide

 

3

泄漏後臺服務器地址,致使服務器可控

 

4

邊信道信息泄漏

 

5

未使用有效的token機制,致使能夠繞過鑑權

 

6

傳輸數據可修改,形成越權訪問

 

7

登陸設計缺陷,存在被暴力破解風險

 

8

利用業務邏輯缺陷製做短信炸彈

 

9

關鍵頁面存在釣魚劫持風險,致使用戶信息泄露

 

10

能夠從新編譯打包

 

11

WebView漏洞

 

12

Web表單設計缺陷,存在SQL注入漏洞

 

13

組件Content Provider配置錯誤,致使數據泄漏

 

14

組件Activity配置錯誤,致使登陸頁面被繞過

 

15

組件Service配置錯誤,致使非法權限提高

 

16

組件Broadcast Receiver配置錯誤,致使拒絕服務、非法越權

 

17

開啓allowbackup備份權限,存在備份數據泄露風險

 

18

開啓Debuggable屬性,存在應用信息篡改泄露風險

 

19

下載非官方開發工具,致使IOS版本APP被植入惡意代碼

 

20

開發者證書不規範,致使開發者身份信息不明

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

具體的解釋:

一、明文傳輸用戶名、密碼和驗證碼等敏感信息

問題描述:用戶登陸過程當中,在與服務器端交互時明文傳輸用戶名、密碼或者驗證碼等,可致使用戶敏感信息泄露。

檢測結果:手機鏈接Fiddler代理,在Fiddler代理中抓包測試。APP登陸操做: 帳號、登陸憑證不安全傳輸。

密碼雖然是MD5散列後的數值,可是傳輸使用的是http協議,存在被嗅探竊取的可能性,一旦泄漏,黑客可以直接經過該用戶名和Password登陸。

整改建議:登陸憑證信息需加密傳輸,建議使用自定義加密協議或使用https方式傳輸。

二、 不安全本地存儲

問題描述:安卓開發者使用多種方法將數據存儲在安卓應用中,而存儲在本地的數據文件若是未加密,易形成敏感信息泄漏。

檢測結果:Shared Preferences用戶名和登陸憑證實文存儲在healthConfig.xml文件中。

SQLite 未發現敏感數據存儲

SD卡敏感數據存儲 未發現數據寫入。

整改建議:對存儲在本地的敏感數據進行加密。

三、泄漏後臺服務器地址,致使服務器可控

問題描述:在使用BurpSuite等工具對應用進行監聽的過程當中,發現後臺服務器地址。對後臺服務器進行測試,若後臺服務器存在漏洞,則可控制後臺服務器。

檢測結果:後臺服務器地址爲**********,未發現可致使服務器可控的安全漏洞。

四、邊信道信息泄漏

問題描述:當APP處理用戶或其它數據源輸入的數據時,可能會把數據放在不安全的位置,容易致使邊信道被攻擊者利用形成信息泄露。

檢查結果:用戶登陸憑證、設備ID等敏感數據出如今log中。

整改建議:對logcat的打印數據進行過濾,敏感數據不能出如今log中。

五、未使用有效的token機制,致使能夠繞過鑑權

問題描述:若是被測應用沒有使用有效的token機制,對登錄響應中的服務器返回的鑑權信息進行修改,便可繞過服務器鑑權,直接訪問系統內部信息。

檢測結果:從代理抓包分析,APP登陸是會將一個deviceid和用戶憑證一塊兒提交,用戶登陸成功後,該deviceid將做爲後續接口調用的憑證,即Token。

經查,該deviceid爲設備中某些公開信息(IMEI、設備型號、操做系統版本等)的Base64編碼結果,不具有隱私性,黑客能夠經過獲取這些公開信息僞造用戶身份。

整改建議:在deviceid中加入隨機數據。

六、傳輸數據可修改,形成越權訪問

問題描述:利用已有的用戶名密碼登陸應用,當應用訪問某一模塊時,使用BurpSuite等代理工具進行監聽,對訪問該模塊時的關鍵信息進行替換,則可越權訪問他人的應用模塊。

檢測結果:同第5條。

七、登陸設計缺陷,存在被暴力破解風險

問題描述:用戶登陸過程當中,未對同一用戶的登陸失敗次數作限制,致使存在被暴力破解的風險。

問題詳情:對登陸接口進行暴力破解,錯誤50次後,輸入正確用戶名和密碼仍然成功登陸,代表沒有對登陸接口作暴力破解防禦。

整改建議:限制帳號登陸錯誤次數,超過閥值時須要提供驗證碼機制。

八、利用業務邏輯缺陷製做短信炸彈

問題描述:若是在用戶註冊過程當中存在邏輯設計缺陷,可對指定手機號碼隨意發送短信,形成短信炸彈攻擊,可能形成用戶投訴或惡意軟件傳播等。

測試結果:用戶選擇註冊或忘記密碼功能時,會觸發短信驗證碼發送,屢次調用驗證碼發送接口,每分鐘能收到多條短消息,且沒有發現總量限制。

整改建議:若是已經限制了每一個用戶每分鐘的短信條數(若是沒有限制,請作限制處理),建議進一步限制每一個用戶天天的短信條數。

九、關鍵頁面存在釣魚劫持風險,致使用戶信息泄露

問題描述:劫持釣魚,指惡意應用針對正常應用的特定界面進行仿冒替換,誘騙用戶在仿冒界面操做,達到釣魚目的。此類攻擊,多針對APP的鑑權或支付場景,誘騙用戶輸入關鍵隱私信息,如帳號、登錄密碼和支付密碼等,達到隱私竊取的目的。

檢測結果:惡意應用能夠經過監測進程機制實現對APP的劫持,當APP啓動時,彈出僞造的登陸Activity,實現釣魚劫持。

整改建議:

  1. 建議在登陸Activity的onpause方法中實現釣魚劫持防禦功能,如提示用戶當前登陸也已切換等。
  2. 使用HTML5架構或android+HTML5混合開發,實現登錄、支付等關鍵頁面,下降被劫持的風險。

十、能夠從新編譯打包

問題描述:破解者經過反編譯後獲得程序源代碼,修改後從新編譯、簽名並安裝。在從新打包的過程當中,破解者可能注入惡意代碼,或者修改軟件邏輯繞過鑑權等。

檢測結果:經過反編譯工具對APP進行反編譯後,修改部分源代碼後,能夠從新打包安裝,併成功安裝在手機中運行。

整改建議:經過檢查程序安裝後classes.dex文件的Hash值,判斷軟件是否被重打包並進行提示。(這個具體使用時判斷了打包keystore的SHA1值,不過前提是這個jks文件沒被劫持啊)

十一、WebView漏洞

問題描述:在WebView下有一個很是特殊的接口函數addJavascriptInterface,能實現本地java和js的交互。被測應用中存在WebView漏洞,沒有對註冊JAVA類的方法調用進行限制,致使攻擊者利用addJavascriptInterface這個接口函數穿透webkit控制android本機。

檢測結果:經過反編譯源碼發現BrowserActivity中存在WebView組件,並使用了addJavascriptInterface接口,可是對該接口使用@JavascriptInterface進行了保護,無需整改。(說實話這個不太熟悉)

十二、Web表單設計缺陷,存在SQL注入漏洞

問題描述:開發過程當中未對特殊字符進行過濾,攻擊者能夠經過把SQL命令插入到Web表單提交或者輸入域名或者頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令的目的,這樣攻擊者就可以對內部數據庫進行增刪改操做。

檢測結果:未發現SQL注入漏洞

1三、組件Content Provider配置錯誤,致使數據泄漏

問題描述: Content Provider是安卓應用組件,以表格的形式把數據展示給外部的應用。每一個Content Provider都對應一個以」content://」開頭的特定URI,任何應用均可以經過這個URI操做Content Provider 應用的數據庫。若是應用對權限控制不當就會形成信息泄露。

檢測結果:使用drozer工具檢測,未發現可被非法訪問的URI。

1四、組件Activity配置錯誤,致使登陸頁面被繞過

問題描述:Activity是安卓應用組件,提供與用戶進行交互的界面。若是應用對權限控制不當,能夠繞過登陸界面直接顯示該界面。

檢測結果:使用drozer工具檢測,發現多個可被外部應用直接調用的Activity組件,其中有的Activity能夠跳過登陸直接啓動,存在安全風險。

整改建議:對風險Activity顯式設置android:exported=false權限。

命令:dz> run app.activity.info -a <packageName>   

1五、組件Service配置錯誤,致使非法權限提高

問題描述:Service是Android中四大組件進行後臺做業的主要組件,若是被測應用對權限控制不當,致使其餘應用能夠啓動被測應用的Service。

檢查結果:使用drozer工具檢測,發現可被外部應用直接調用的Service組件,但未發現非法調用風險。

整改建議:請自確認暴露出來的兩個Service是否存在非法調用風險,對風險Service顯式設置android:exported=false權限。

命令:dz> run app.service.info -a <packageName> 

1六、組件Broadcast Receiver配置錯誤,致使拒絕服務、非法越權

問題描述:Broadcast Receiver是Android中四大組件用於處理廣播事件的組件,若存在配置不當則其餘應用能夠假裝發送廣播從而可形成信息泄露,拒絕服務攻擊等。

檢查結果:使用drozer工具檢測,發現多個暴露的Broadcast組件,經過drozer發送這些自定義的Receiver對應的廣播分別會形成系統彈框和程序奔潰,可能會被惡意應用利用,形成拒絕服務攻擊。

整改建議:對外暴露的Broadcast組件顯式設置android:exported=false權限。

命令:dz> run app.broadcast.send --component <packageName>  <Customer Receiver Name>

1七、開啓allowbackup備份權限,存在備份數據泄露風險

問題描述: 被測應用的AndroidManifest.xml文件中allowBackup屬性值被設置爲true,可經過adb backup對應用數據進行備份,在無root的狀況下能夠導出應用中存儲的全部數據,形成用戶數據泄露。

檢測結果:反編譯查看AndroidManifest.xml,發現allowBackup屬性被設置爲true

整改建議:如無特殊需求,將allowBackup設置爲false

1八、開啓Debuggable屬性,存在應用信息篡改泄露風險

問題描述:被測應用的AndroidManifest.xml文件中Debuggable屬性值被設置爲true,能夠設置斷點來控制程序的執行流程,在應用程序運行時修改其行爲。

檢測結果:未發現開啓Debuggable屬性

1九、下載非官方開發工具,致使IOS版本APP被植入惡意代碼

檢查結果:此項僅針對IOS客戶端。請項目組自檢,確保開發工具爲官方下載。

(Xcode後門事件影響不小啊)

20、開發者證書開發者證書不規範,致使開發者身份信息不明

問題描述: 被測應用的開發者證書不規範,致使被測應用的開發者身份信息不是與本公司相關的信息。

(這個在生成jks或者keystore的時候要填寫公司或者我的合理的信息)

相關文章
相關標籤/搜索