APP安全測評checklist


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

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

先來個checklist:

編號

檢查項目

測評結果

1

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

 

2

不安全的本地存儲。

 

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

開發者證書不規范,導致開發者身份信息不明

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

具體的解釋:

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

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

檢測結果:手機連接Fiddler代理,在Fiddler代理中抓包測試。APP登錄操作: 賬號、登錄憑證不安全傳輸。

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

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

2、 不安全本地存儲

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

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

SQLite 未發現敏感數據存儲

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

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

3、泄漏后台服務器地址,導致服務器可控

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

檢測結果:后台服務器地址為**********,未發現可導致服務器可控的安全漏洞。

4、邊信道信息泄漏

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

檢查結果:用戶登錄憑證、設備ID等敏感數據出現在log中。

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

5、未使用有效的token機制,導致可以繞過鑒權

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

檢測結果:從代理抓包分析,APP登錄是會將一個deviceid和用戶憑證一起提交,用戶登錄成功后,該deviceid將作為后續接口調用的憑證,即Token。

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

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

6、傳輸數據可修改,造成越權訪問

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

檢測結果:同第5條。

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

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

問題詳情:對登錄接口進行暴力破解,錯誤50次后,輸入正確用戶名和密碼仍然成功登錄,表明沒有對登錄接口做暴力破解防護。

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

8、利用業務邏輯缺陷制作短信炸彈

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

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

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

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

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

檢測結果:惡意應用可以通過監測進程機制實現對APP的劫持,當APP啟動時,彈出偽造的登錄Activity,實現釣魚劫持。

整改建議:

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

10、可以重新編譯打包

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

檢測結果:通過反編譯工具對APP進行反編譯后,修改部分源代碼后,可以重新打包安裝,並成功安裝在手機中運行。

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

11、WebView漏洞

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

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

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

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

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

13、組件Content Provider配置錯誤,導致數據泄漏

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

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

14、組件Activity配置錯誤,導致登錄頁面被繞過

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

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

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

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

15、組件Service配置錯誤,導致非法權限提升

問題描述:Service是Android中四大組件進行后台作業的主要組件,如果被測應用對權限控制不當,導致其他應用可以啟動被測應用的Service。

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

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

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

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

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

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

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

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

17、開啟allowbackup備份權限,存在備份數據泄露風險

問題描述: 被測應用的AndroidManifest.xml文件中allowBackup屬性值被設置為true,可通過adb backup對應用數據進行備份,在無root的情況下可以導出應用中存儲的所有數據,造成用戶數據泄露。

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

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

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

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

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

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

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

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

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

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM