◆鐘雪慧
(中國移動通信集團廣東有限公司 廣東 510623)
APP應用程序安全治理
◆鐘雪慧
(中國移動通信集團廣東有限公司 廣東 510623)
移動APP安全治理需要從移動APP的整個生命周期各階段同步進行,包括規劃設計、開發測試、上線運行、日常運維、廢棄下線。每一個階段都需要梳理安全控制點,落實安全控制措施,本文重點研究如何在上線運行及日常運維階段如何對移動APP開展安全評估工作,主要包括移動APP客戶端安全及移動APP服務端安全。
移動APP 數據安全;業務邏輯;應用劫持
隨著移動互聯網的飛速發展,移動APP層出不窮,不管是生活還是工作都被移動APP逐步滲透,移動辦公也逐步興起。作為新的技術,移動APP大大地提升生活及工作的便捷性與效率。同時新的技術帶來新的威脅,各類對移動APP的攻擊手段也在迅猛地發展,各種因為移動APP而導致的個人財產損失頻頻見諸報端。移動APP的安全治理問題已經到了刻不容緩的時候。本課題基于日常工作中對移動APP安全問題的研究,提出針對移動APP安全治理的思路。
根據移動APP的架構來分,移動APP主要包括客戶端安全問題及服務端安全問題。
客服端安全主要包括移動APP自身安全、手勢密碼安全、移動APP登錄業務安全、移動APP找回密碼業務安全、移動APP注冊業務安全等。
服務端安全主要是移動APP的業務應用安全,由于移動APP與服務端的數據交互是通過http協議的接口,使用xml或json對數據進行封裝的,所以傳統的web應用漏洞,移動APP也同樣存在。
移動APP安全治理需要從移動APP的整個生命周期各階段同步進行,包括規劃設計、開發測試、上線運行、日常運維、廢棄下線。每一個階段都需要梳理安全控制點,落實安全控制措施,本文重點研究如何在上線運行及日常運維階段如何對移動APP開展安全評估工作,主要包括移動APP客戶端安全及移動APP服務端安全。
2.1 移動APP客戶端安全評估
(1)移動應用數據安全
應用數據安全主要是評估和測試應用內和用戶隱私信息相關的數據安全性。常見的控制點有:
①用戶 session 存儲是否正確和安全。
②用戶密碼是否加密/Hash 存儲和傳輸。
③在公共存儲中是否存有敏感信息。
④在系統日志中,是否打印敏感信息。
⑤其他應用是否有可能獲取該應用的敏感信息。
⑥越獄/Root 的設備中會有什么樣的數據安全影響。
⑦賬號切換是否造成其他賬號的敏感信息泄漏。
(2)系統庫和第三方庫的安全性
庫安全性主要是評估和測試應用中是否使用了不安全的系統庫或者第三方庫,從而造成安全隱患。
系統庫方面,比如是否使用了Android 系統存在安全隱患的API。例如Android 的 WebView組件提供了addJavascriptInterface方法用于實現本地Java和JavaScript的交互,而這個方法如果誤用,就很容易產生遠程代碼執行漏洞,遠程攻擊者利用此漏洞能實現本地Java和Javascript的交互,可對Android移動終端進行網頁掛馬從而控制受影響設備。
(3)移動應用自我保護
移動應用自身安全測試主要關注應用本身作為一個程序,其保護自己不被黑客輕易破解、重打包、分析利用的能力。
這個方面的測試主要集中在:
①移動應用對自身的完整性校驗。
②移動應用反重打包防止盜版的能力(特別是針對 Android程序)。
③應用反逆向反調試的技術,包括代碼混淆,調試器檢測,越獄檢測,反 IDA 等。
④核心邏輯保護,應用中較為敏感的核心邏輯是否受到保護,比如是否做成單獨的 c 程序模塊,黑客通過逆向和調試破解核心邏輯的難度評估等。
⑤其他零散和有特殊場景的評估測試,比如手游應用是否容易制作簡單的手機外掛等,根據應用需要會分別測試,側重有所不同。
(4)應用劫持
應用劫持檢查主要是檢查應用在錯誤信息的誘導下,會不會產生錯誤的行為。常見的有:
①應用版本升級檢查,升級應用鏈接被劫持(中間人攻擊,DNS劫持等攻擊手段),下載新版本是否進行真偽檢查。
②應用內部使用內嵌網頁,其中包含可以插入的輸入信息,從而造成應用內 XSS 或者應用內嵌網頁跳轉到其他服務器。
③應用使用 OAuth 登錄,其 callback 鏈接被劫持,是否會造成應用訪問攻擊者構造的釣魚服務器,從而導致用戶將隱私數據發送給攻擊者。
應用劫持沒有固定的形式,一般根據應用實際情況進行定制檢查。
(5)應用邏輯漏洞檢查
邏輯漏洞檢查主要測試在不同的邏輯走向和各種用戶輸入條件下,是否會造成與預期邏輯不一致的結果。測試主要集中在以下幾個方面:
①用戶輸入檢查是否完善,是否造成邏輯錯誤,是否造成崩潰等。比如在一個調出數字鍵盤只能輸入數字的輸入框中,通過粘貼方式輸入負數等。
②各種環境各種邏輯走向是否造成邏輯漏洞,造成狀態錯誤,或者造成應用崩潰。
③接收到錯誤的或者故意構造的系統消息、其他應用消息,讀取到特意構造的文件,接收到錯誤的網絡數據等是否會造成應用邏輯或信息泄漏漏洞、狀態錯誤或者崩潰等。
④越權漏洞,通過修改一些交互參數使得一個用戶可以看到其未授權查看的信息。
(6)業務邏輯安全
對于敏感業務流程,還需要對流程本身做安全測試評估。比如:
①用戶身份認證流程安全性。
②支付流程安全性。
③證書安全性檢查。
2.2 移動APP服務端安全評估
(1)API 服務器安全測試
每個移動應用背后,都有幾十個 API 的支撐,才能正常運轉,而這些 API 和 API 服務器本身的安全性也至關重要。如果由于 API 服務器存在漏洞,黑客取得了服務器控制權,那么將會是非常可怕的事情。一方面,攻擊者可以直接獲取所有用戶的敏感信息數據。另一方面,攻擊者稍加改動就可以直接攻擊該API 服務器所服務的千萬客戶端,同時攻擊這些應用。無論是哪種情況發生,后果都將不可設想。
API 服務測試主要包括但不限于以下幾項:
①API 服務器是否會造成服務器信息泄露,如.htaccess,列目錄,任意文件下載。
②數據庫注入攻擊,特別是 SQL 數據庫。
③用戶輸入時候可能造成XSS攻擊,危及系統管理員以及其他用戶。
④API 接口和通信協議的邏輯安全性。
⑤API 接口是否可能造成遠程代碼執行。
⑥API 服務器是否進行了正確配置,是否在輸入錯誤情況下打印敏感服務器錯誤信息。
⑦API 服務器是否可以進行拒絕服務攻擊,如某著名社交應用曾經出現過的拒絕服務攻擊,如北京搖號系統出現過的短信發送攻擊等,再如阿里某社交應用曾經因為某個API服務背后業務邏輯涉及和數據庫的復雜交互而導致其服務器可被輕量級的CC攻擊打垮。
⑧API 服務器使用了不安全的系統軟件或者版本,如Struts2 漏洞,Heartbleed 漏洞。
另外,對于一般的應用,都應開啟訪問次數限制和Web應用防火墻(WAF)可以有效抵擋一般攻擊者的常見掃描式攻擊,帶來攻擊的麻煩,特別是可以抵擋 DDoS 攻擊和 CC 攻擊。
(2)API 規范與通信協議安全性
主要針對移動應用客戶端與 API 服務器通信的 API 規范和數據傳輸進行評估。
例如用戶密碼 MD5 傳輸是否進行了加鹽操作,用戶頭像上傳或者文件上傳的步驟是否合理,簽名計算是否過于簡單,是否存在不合理的 API 設計,是否存在容易產生漏洞的設計(比如非冪等重要購買操作,會被進行重放攻擊)等。
這個測試主要根據 API 的實際情況來定。
(3)其他關聯服務測試
移動應用往往不是獨立的,其連接的 API 服務器的后端數據庫操作,往往與網站數據同步,因此有必要檢查測試移動客戶端構造的特殊請求是否會造成網站的錯誤。
這方面的測試內容主要包括:
①通過移動應用構造請求導致網站被 XSS 攻擊。
②通過移動應用構造請求導致網站邏輯錯亂或者狀態不正確等。
通過研究如何在上線運行及日常運維階段如何對移動APP開展安全評估工作,本文對移動APP客戶端和服務端的安全評估(測試)內容進行了詳細分析,可以為移動APP的安全治理提供有價值的參考。
[1]Himanshu Dwivedi,Chris Clark,David Thiel.移動應用安全.
[2]OWASP.OWASP Mobile Apps Checklist 2016.
[3]OWASP.Mobile Top Tem 2016.