◆舒遠仲 王 娟 梁 濤 胡 碩
(南昌航空大學信息工程學院 江西 330063)
自從2007年iphone問世以來,移動智能終端快速發展,以iOS和Android為主流的移動操作系統占據了移動市場大部分份額。iphone以其iOS系統流暢性,安全性以及App Store中豐富多彩的第三方應用得到了廣大消費者的喜愛。在很長一段時間內,iOS安全研究都主要集中在iOS系統安全漏洞挖掘中,由于iOS相對安全的系統機制保護與嚴格的審核機制,iOS App安全性一般比Android App高。歷史上出現過的一些iOS App漏洞也主要集中在iOS越獄環境下,但近年來XcodeGhost、AFNetworking框架、中間人漏洞以及多個惡意SDK的曝光也說明了iOS App仍存在比較嚴重的安全問題,在移動APP的開發中,開發工程師偏向于功能開發而輕視了安全問題,同時也沒有具體的安全開發標準導致APP中出現漏洞風險,比如APP被逆向,重打包,數據在傳輸過程中信息泄露,系統漏洞被利用,邏輯漏洞被繞過等等,個人隱私泄露,資金被盜,賬戶密碼被盜等問題時有發生。為了更好的規范移動金融支付,中國人民銀行、中國銀行業監督管理委員會也制定了一系列的移動金融的安全規范和安全評估要求,強調移動銀行的安全,需要從根本上杜絕安全支付風險,比如鍵盤防止輸入法攻擊、監聽短信,竊取通話記錄,讀取手機中安裝的購物客戶端、銀行客戶端等等。
目前黑客社區,安全公司以及安全研究員對iOS APP的安全加固,安全測試都是針對某一些測試項,沒有對iOS客戶端的應用制定一個比較系統完整的評估體系。而且不同的安全加固公司制定的安全測試項也不近相同。本文通過對iOS APP安全問題的分析及研究,構建安全評估模型,制定相對完整的安全指標,對移動APP進行安全性評估,從而數字化風險,使得APP相對更加安全,更好的保護用戶個人隱私信息和財產安全,也為開發人員提供了一定的安全開發依據。
(1)源代碼安全
應用程序上架需要編譯成二進制文件,這些二進制文件也存在安全隱患。通過 file、class-dump、theos、otool等工具,黑客可以分析編譯之后的二進制程序文件。對于 Objective-C代碼,可以反匯編到方便閱讀的程度,通過閱讀源碼,黑客可以更加方便地分析出應用的通信協議和數據加密方式。國外研究人員iSecLab 在 2011 年 2月發表于NDSS 的關于iOS應用程序隱私泄露問題。他們提出了一個對iOS上應用程序自動的靜態分析工具:PiOS。工具中運用了從 Objective-C 二進制代碼重建控制流圖的方法,克服了靜態分析 Objective-C無法正確還原消息傳遞部分邏輯的困難。利用 PiOS 他們對 1400 個 iPhone 應用程序進行了詳細分析。針對PiOS存在較高誤報率等缺點,Peter Gilbert等人在2011年6月提出了不同的思路。他們釆用基于動態分析的技術提出了針對 iOS平臺應用軟件的動態分析工具AppInspector,通過記錄并分析觸發過的iOS應用行為日志,得到針對iOS應用軟件的完整行為追溯,從而實現對iOS應用對于敏感信息獲取的結果報告。
(2)通信安全
APP通過與服務器端進行交互,將用戶需要的信息展現給用戶。在網絡請求中,經常使用兩種請求方式:GET和POST。GET請求通過URL(請求行)提交數據,在URL中可以看到所傳參數,請求提交的數據有長度限制。POST通過“請求體”傳遞數據,參數不會在url中顯示,瀏覽器不會緩存POST請求返回的內容。如果敏感數據是以明文傳輸的,黑客可利用Charles軟件(如果在Windows下,可以使用Fiddler軟件)來將自己的電腦設置成代理服務器,從而截取應用的網絡請求,就可以獲得賬號密碼等。所以GET和POST都是不安全的。因此,為了防止重要數據泄露,需要對其進行加密。
除了明文傳輸密碼等重要數據的問題外,還有通信協議的安全性。如果黑客破解了通信協議,就可以偽造一些用戶的操作,對用戶數據造成危害,像我們平常聽到的游戲代練,刷分,其實是游戲的通信協議被破解,黑客制作出了代練的機器人程序。iOS9.0 之前,網絡請求用http協議,http協議是不安全協議,很容易被攻破,2017年1月1日蘋果開始強制使用https協議進行網絡數據傳輸。HTTPS是HTTP over SSL/TLS,HTTP是應用層協議,TCP是傳輸層協議,在應用層和傳輸層之間,增加了一個安全套接層 SSL/TLS,SSL/TLS層負責客戶端和服務器之間的加解密算法協商、密鑰交換、通信連接的建立,但是如果客戶端僅使用了https協議,沒有進行雙向校驗的話,也是不安全的。當然,如果自己手上有更好更安全的協議,可以用自己的。
(3)本地文件與邏輯設計安全
移動應用依賴于客戶端和服務器之間的頻繁通信,并且極大地依賴于服務器存儲和數據處理,這意味著個人信息會出現在移動設備和云中,對用戶而言,不希望手機上安裝的應用軟件將自己的安全隱私暴露在風險之中,iOS應用的數據在本地通常保存在本地文件或本地數據庫中。如果對本地的數據不進行加密處理,很可能被黑客篡改,所以需要對重要的數據進行加密,根據重要程度選擇安全性可靠的方式。加密的方式有很多種,如base64,MD5,對稱加密和非對稱加密等。base64 過于簡單,很容易破解。MD5加密在計算機安全領域使用的比較廣泛,其核心思想是從給定的數據中提取特征碼,不容產生重復,安全性比較高,但是現在也有專門的網站對md5進行破解,為了使MD5加密更安全,可以進行加鹽,HMac,加時間戳等,提高安全級別和破解難度。第三種就是對稱加密和非對稱加密。非對稱加密事先生成一對用于加密的公私鑰,客戶端在登錄時,使用公鑰將用戶的密碼加密后,將密文傳輸到服務器。服務器使用私鑰將密碼解密。這樣的做法,保證黑客即使截獲了加密后的密文,由于沒有私鑰,也無法還原出原始的密碼。
由于業務發展迅速、開發水平不一、第三方缺陷、內部監管不嚴格導致邏輯漏洞不斷發生。業務邏輯漏洞最常見的就是賬號登錄限制,密碼重置問題,有的是采用手機號加驗證碼,就造成了黑客可以利用驗證碼進行破解。隨著業務的發展,發現在金融行業,以及在我們的社交領域會更多使用手勢密碼。手勢密碼安全其實還是可以的,但是手勢密碼有很多解鎖,可以通過多種方式去對手勢密碼進行一個修改。最常見的有暴力破解,以及去修改這一個文件重置本地手勢密碼。
(1)iOS APP安全評估模型
隨著移動設備的通信、計算、存儲等能力的不斷提升,其應用范圍不再局限于通信和娛樂領域,已經擴展到政企移動辦公、金融支付等與人們工作和生活密切相關的領域。移動智能終端在給我們的生活帶來了巨大的改變的同時,移動應用的安全性問題也不斷出現。為了降低移動 APP的安全風險,保護用戶的財產隱私安全,在 APP開發的整個過程需要對其進行安全性評估。通過分析iOS平臺軟件安全性,iOS系統安全機制,并結合目前ios平臺存在的安全隱患,建立圖1 iOS APP安全評估模型。

圖1 iOS APP安全評估模型
(2)iOS APP安全指標設計
通過對iOS系統的安全性研究以及iOS客戶端程序安全、通信安全、數據存儲、策略設計、業務安全等方面的安全性分析,制定相關的安全指標對 APP進行評估明確化,風險可控化。其中指標的風險等級可參考OWASP Risk Rating MethodologyV2和NIST 800-30 Risk Management Guide for Information Technology Systems標準,得出關鍵指標。指標確定后,由于其安全風險有一定的不確定性,還需要通過專家討論來控制關鍵指標和非關鍵指標的數量分布,關鍵指標與非關鍵指標的權重分布為 1∶1,即所有關鍵指標占總評估項的 50%,所有非關鍵指標占總評估項50%。如下表1為iOS核心層安全指標。

表1 iOS APP核心層安全指標
該指標主要結合目前常見的移動安全風險進行總結,由于移動風險不斷增加,安全指標也會不斷更新完善。
對于關聯層系統安全主要涉及手機越獄風險,為了保護用戶的安全,蘋果iOS設計了一套安全機制,主要有安全啟動鏈,程序代碼簽名,文件數據保護,沙盒技術,地址空間布局隨機化策略等,盡管有這些安全機制,iOS系統仍然存在很多安全問題,如攻擊引導過程的 Bootrom對設備進行“越獄”,用戶可以獲得iOS的最高訪問權限,可安裝惡意軟件,獲取用戶隱私信息。因此APP需要對手機進行越獄檢測。
針對以上核心層所涉及的評估項,總結安全解決方案如下:
(1)制定安全規范
由于權責職位分配細化,開發人員與安全人員隔離,開發人員安全意識薄弱,沒有整體嚴格的安全開發規范,只是一味追求功能的實現,對安全沒有深刻的理解,造成很多應用無安全性可言。移動智能終端相關的安全評測體系尚且十分缺乏,美國國家標準技術研究所(NIST)給出的各種層次和系統的安全標準也只就某一項(入侵檢測、數據泄露等)指標進行評測,并沒有為移動智能終端相關的安全性制定統一標準。國內目前已發布的移動應用軟件安全相關標準中,與金融 APP相關的內容包括中國銀聯編寫的《移動終端支付應用軟件安全規范》,該規范主要針對的是銀行類應用的安全實現。阿里巴巴集團2017年2月9日發布正式版Java開發手冊,該手冊中就添加了安全規約的內容,其中安全規約中就明確規定對于用戶敏感數據必須進行脫密展示,例如手機號隱藏中間四位,用戶輸入的 SQL 參數嚴格使用參數綁定或者 METADATA 字段值限定,防止 SQL 注入,禁止字符串拼接 SQL 訪問數據庫。在使用平臺資源,譬如短信、郵件、電話、下單、支付,必須實現正確的防重放限制,如數量限制、疲勞度控制、驗證碼校驗,避免被濫刷、資損等。那么對于iOS客戶端的開發也可以制定相關的安全規范(參考Apple平臺安全編碼指南),約束開發人員減少因開發設計不合理,邏輯驗證不充分,權限分配不嚴謹而導致的安全問題的發生。
(2)客戶端安全加固
在iOS平臺上,移動應用能夠被反編譯成較低級的機器碼和二進制碼。一般加固的方式是代碼中的重要方法,代碼命名混淆和使用宏,可使反編譯后的代碼易讀性下降。核心代碼采用靜態庫的方式,使用反動態調試,防篡改技術和在應用軟件中嵌入防護的解決方案進行應用完整性校驗可防止客戶端資源被任意篡改,保護iOS應用軟件免受反匯編、逆向工程和調試。在安裝應用軟件時可進行iOS越獄檢測,檢測程序運行環境是否安全。
(3)服務器端做安全防護
出于安全考慮,為了防止繞過前端校驗的攻擊應在服務器端將所有來自于應用外部的輸入進行安全校驗,包括但不限于:校驗 HTTP 頭、 cookies 以及 GET 和 POST 參數。 應在服務器端保證業務邏輯的安全,包括業務異常和失敗的場景。服務端程序代碼應不包含惡意代碼,不包含已知的高安全風險漏洞,應采取恰當的措施應對各種已知攻擊,如參數化查詢預防 SQL 注入,對數據進行編碼以預防跨站腳本攻擊等。
(4)安全監管法律法規,技術手段的落地
APP安全特別是金融類APP的安全,是國家、開發商、廣大用戶三方面共同的需求,做到了安全開發,客戶端安全加固,服務端安全防護等外,政府,企業還需進行相應的安全監管,規范APP的預置和分發,做好網絡安全宣傳,APP開發者與獨立的第三方 APP安全測試機構、安全服務提供企業合作,同時安全監測平臺對 APP進行實時監測,通過相關的技術手段,法律法規等實現環境內的安全,及時發現各種山寨,盜版,釣魚應用。
未來移動APP安全問題還將不斷變化,安全界對iOS系統安全研究也越來越重視,尤其是數據安全和iOS惡意軟件的問題。由于部署在用戶終端上,移動應用比服務器應用更容易被攻擊。目前大部分移動 APP漏洞檢測平臺最終的檢測結果也需要專業的安全研究人員評估實際風險,歷史上很多移動端嚴重漏洞也是需要結合業務場景的,所以說移動App漏洞檢測平臺也只是企業移動App安全建設中的一環,此外推動移動安全人才培養,iOS App安全開發規范,應用加固,盜版監測,安全評估等體系建設也同樣重要。
[1]中國人民銀行.中國金融移動支付支付標記化技術規范[S/OL].金融科技時代,2016.
[2]中國人民銀行.中國金融移動支付應用安全規范[S/OL].中國金融出版社,2013.
[3]Manuel Egele,Christopher Kruegel,Engin Kirda,GioVanni Vigna:PiOS:Detecting Privacy Leaks in ios Applications.NDSS,2011.
[4]Peter Gilbert,Byung-Gon Chun,Landon P.Cox,Jaeyeon Jung.Automating Privacy Testing of Smartphone Applications.
[5]李柏嵐.iOS平臺的軟件安全性分析[D].上海交通大學,2011.
[6]吳寅鶴.ios平臺應用程序的安全性研究[D].廣東工業大學,2014.
[7]路鵬,方勇,方昉, 蒲偉.iOS系統代碼簽名機制研究[J].信息安全與通信保密,2013.
[8]凌寧.基于 ios系統的安全性研究[D].北京郵電大學,2014.
[9]朱曉蓮,甄彥虎.移動智能設備安全分析及防護策略[J].計算機與網絡,2012.
[10]翁建濤.Mach-O 文件代碼保護方案[D].北京理工大學,2015.
[11]劉朋飛.iOS應用程序的攻擊手段分析與防護[D].電子科技大學,2014..
[12]OWASP Risk Rating Methodology[S/OL].http://www.owasp.org.cn:8080/owasp-project/download/OWA SPRiskRatingMethodologyV2.pdf.
[13]沙梓社,吳航.ios應用逆向工程[M].機械工業出版社,2015.
[14]Cedric Halbronn,Jean Sigwald:iPhone security model&vulnerabilities[J].HTTB SecConf,2010.
[15]Cocoanetics.Accessing the ios System Log[R/OL].https://www.cocoanetics.com/2011/03/accessing-th e-ios-system-log/.
[16]Apple Developer.Secure CodingGuide[S/OL].
https://developer.apple.com/library/content/documentation/Secu rity/Conceptual/SecureCodingGuide/Introduction.html.
[17]Apple. iOS security paper [S/OL]. https:// images.apple.com/business/docs/iOS_Security_Guide.pdf.
[18]freebuf研究院.2017年度移動App安全漏洞與數據泄露現狀報[R/OL].http://www.freebuf.com/ articles/paper/137072.html,2017.