◆舒遠(yuǎn)仲 王 娟 梁 濤 胡 碩
(南昌航空大學(xué)信息工程學(xué)院 江西 330063)
自從2007年iphone問世以來,移動智能終端快速發(fā)展,以iOS和Android為主流的移動操作系統(tǒng)占據(jù)了移動市場大部分份額。iphone以其iOS系統(tǒng)流暢性,安全性以及App Store中豐富多彩的第三方應(yīng)用得到了廣大消費者的喜愛。在很長一段時間內(nèi),iOS安全研究都主要集中在iOS系統(tǒng)安全漏洞挖掘中,由于iOS相對安全的系統(tǒng)機制保護與嚴(yán)格的審核機制,iOS App安全性一般比Android App高。歷史上出現(xiàn)過的一些iOS App漏洞也主要集中在iOS越獄環(huán)境下,但近年來XcodeGhost、AFNetworking框架、中間人漏洞以及多個惡意SDK的曝光也說明了iOS App仍存在比較嚴(yán)重的安全問題,在移動APP的開發(fā)中,開發(fā)工程師偏向于功能開發(fā)而輕視了安全問題,同時也沒有具體的安全開發(fā)標(biāo)準(zhǔn)導(dǎo)致APP中出現(xiàn)漏洞風(fēng)險,比如APP被逆向,重打包,數(shù)據(jù)在傳輸過程中信息泄露,系統(tǒng)漏洞被利用,邏輯漏洞被繞過等等,個人隱私泄露,資金被盜,賬戶密碼被盜等問題時有發(fā)生。為了更好的規(guī)范移動金融支付,中國人民銀行、中國銀行業(yè)監(jiān)督管理委員會也制定了一系列的移動金融的安全規(guī)范和安全評估要求,強調(diào)移動銀行的安全,需要從根本上杜絕安全支付風(fēng)險,比如鍵盤防止輸入法攻擊、監(jiān)聽短信,竊取通話記錄,讀取手機中安裝的購物客戶端、銀行客戶端等等。
目前黑客社區(qū),安全公司以及安全研究員對iOS APP的安全加固,安全測試都是針對某一些測試項,沒有對iOS客戶端的應(yīng)用制定一個比較系統(tǒng)完整的評估體系。而且不同的安全加固公司制定的安全測試項也不近相同。本文通過對iOS APP安全問題的分析及研究,構(gòu)建安全評估模型,制定相對完整的安全指標(biāo),對移動APP進行安全性評估,從而數(shù)字化風(fēng)險,使得APP相對更加安全,更好的保護用戶個人隱私信息和財產(chǎn)安全,也為開發(fā)人員提供了一定的安全開發(fā)依據(jù)。
(1)源代碼安全
應(yīng)用程序上架需要編譯成二進制文件,這些二進制文件也存在安全隱患。通過 file、class-dump、theos、otool等工具,黑客可以分析編譯之后的二進制程序文件。對于 Objective-C代碼,可以反匯編到方便閱讀的程度,通過閱讀源碼,黑客可以更加方便地分析出應(yīng)用的通信協(xié)議和數(shù)據(jù)加密方式。國外研究人員iSecLab 在 2011 年 2月發(fā)表于NDSS 的關(guān)于iOS應(yīng)用程序隱私泄露問題。他們提出了一個對iOS上應(yīng)用程序自動的靜態(tài)分析工具:PiOS。工具中運用了從 Objective-C 二進制代碼重建控制流圖的方法,克服了靜態(tài)分析 Objective-C無法正確還原消息傳遞部分邏輯的困難。利用 PiOS 他們對 1400 個 iPhone 應(yīng)用程序進行了詳細(xì)分析。針對PiOS存在較高誤報率等缺點,Peter Gilbert等人在2011年6月提出了不同的思路。他們釆用基于動態(tài)分析的技術(shù)提出了針對 iOS平臺應(yīng)用軟件的動態(tài)分析工具AppInspector,通過記錄并分析觸發(fā)過的iOS應(yīng)用行為日志,得到針對iOS應(yīng)用軟件的完整行為追溯,從而實現(xiàn)對iOS應(yīng)用對于敏感信息獲取的結(jié)果報告。
(2)通信安全
APP通過與服務(wù)器端進行交互,將用戶需要的信息展現(xiàn)給用戶。在網(wǎng)絡(luò)請求中,經(jīng)常使用兩種請求方式:GET和POST。GET請求通過URL(請求行)提交數(shù)據(jù),在URL中可以看到所傳參數(shù),請求提交的數(shù)據(jù)有長度限制。POST通過“請求體”傳遞數(shù)據(jù),參數(shù)不會在url中顯示,瀏覽器不會緩存POST請求返回的內(nèi)容。如果敏感數(shù)據(jù)是以明文傳輸?shù)?,黑客可利用Charles軟件(如果在Windows下,可以使用Fiddler軟件)來將自己的電腦設(shè)置成代理服務(wù)器,從而截取應(yīng)用的網(wǎng)絡(luò)請求,就可以獲得賬號密碼等。所以GET和POST都是不安全的。因此,為了防止重要數(shù)據(jù)泄露,需要對其進行加密。
除了明文傳輸密碼等重要數(shù)據(jù)的問題外,還有通信協(xié)議的安全性。如果黑客破解了通信協(xié)議,就可以偽造一些用戶的操作,對用戶數(shù)據(jù)造成危害,像我們平常聽到的游戲代練,刷分,其實是游戲的通信協(xié)議被破解,黑客制作出了代練的機器人程序。iOS9.0 之前,網(wǎng)絡(luò)請求用http協(xié)議,http協(xié)議是不安全協(xié)議,很容易被攻破,2017年1月1日蘋果開始強制使用https協(xié)議進行網(wǎng)絡(luò)數(shù)據(jù)傳輸。HTTPS是HTTP over SSL/TLS,HTTP是應(yīng)用層協(xié)議,TCP是傳輸層協(xié)議,在應(yīng)用層和傳輸層之間,增加了一個安全套接層 SSL/TLS,SSL/TLS層負(fù)責(zé)客戶端和服務(wù)器之間的加解密算法協(xié)商、密鑰交換、通信連接的建立,但是如果客戶端僅使用了https協(xié)議,沒有進行雙向校驗的話,也是不安全的。當(dāng)然,如果自己手上有更好更安全的協(xié)議,可以用自己的。
(3)本地文件與邏輯設(shè)計安全
移動應(yīng)用依賴于客戶端和服務(wù)器之間的頻繁通信,并且極大地依賴于服務(wù)器存儲和數(shù)據(jù)處理,這意味著個人信息會出現(xiàn)在移動設(shè)備和云中,對用戶而言,不希望手機上安裝的應(yīng)用軟件將自己的安全隱私暴露在風(fēng)險之中,iOS應(yīng)用的數(shù)據(jù)在本地通常保存在本地文件或本地數(shù)據(jù)庫中。如果對本地的數(shù)據(jù)不進行加密處理,很可能被黑客篡改,所以需要對重要的數(shù)據(jù)進行加密,根據(jù)重要程度選擇安全性可靠的方式。加密的方式有很多種,如base64,MD5,對稱加密和非對稱加密等。base64 過于簡單,很容易破解。MD5加密在計算機安全領(lǐng)域使用的比較廣泛,其核心思想是從給定的數(shù)據(jù)中提取特征碼,不容產(chǎn)生重復(fù),安全性比較高,但是現(xiàn)在也有專門的網(wǎng)站對md5進行破解,為了使MD5加密更安全,可以進行加鹽,HMac,加時間戳等,提高安全級別和破解難度。第三種就是對稱加密和非對稱加密。非對稱加密事先生成一對用于加密的公私鑰,客戶端在登錄時,使用公鑰將用戶的密碼加密后,將密文傳輸?shù)椒?wù)器。服務(wù)器使用私鑰將密碼解密。這樣的做法,保證黑客即使截獲了加密后的密文,由于沒有私鑰,也無法還原出原始的密碼。
由于業(yè)務(wù)發(fā)展迅速、開發(fā)水平不一、第三方缺陷、內(nèi)部監(jiān)管不嚴(yán)格導(dǎo)致邏輯漏洞不斷發(fā)生。業(yè)務(wù)邏輯漏洞最常見的就是賬號登錄限制,密碼重置問題,有的是采用手機號加驗證碼,就造成了黑客可以利用驗證碼進行破解。隨著業(yè)務(wù)的發(fā)展,發(fā)現(xiàn)在金融行業(yè),以及在我們的社交領(lǐng)域會更多使用手勢密碼。手勢密碼安全其實還是可以的,但是手勢密碼有很多解鎖,可以通過多種方式去對手勢密碼進行一個修改。最常見的有暴力破解,以及去修改這一個文件重置本地手勢密碼。
(1)iOS APP安全評估模型
隨著移動設(shè)備的通信、計算、存儲等能力的不斷提升,其應(yīng)用范圍不再局限于通信和娛樂領(lǐng)域,已經(jīng)擴展到政企移動辦公、金融支付等與人們工作和生活密切相關(guān)的領(lǐng)域。移動智能終端在給我們的生活帶來了巨大的改變的同時,移動應(yīng)用的安全性問題也不斷出現(xiàn)。為了降低移動 APP的安全風(fēng)險,保護用戶的財產(chǎn)隱私安全,在 APP開發(fā)的整個過程需要對其進行安全性評估。通過分析iOS平臺軟件安全性,iOS系統(tǒng)安全機制,并結(jié)合目前ios平臺存在的安全隱患,建立圖1 iOS APP安全評估模型。
圖1 iOS APP安全評估模型
(2)iOS APP安全指標(biāo)設(shè)計
通過對iOS系統(tǒng)的安全性研究以及iOS客戶端程序安全、通信安全、數(shù)據(jù)存儲、策略設(shè)計、業(yè)務(wù)安全等方面的安全性分析,制定相關(guān)的安全指標(biāo)對 APP進行評估明確化,風(fēng)險可控化。其中指標(biāo)的風(fēng)險等級可參考OWASP Risk Rating MethodologyV2和NIST 800-30 Risk Management Guide for Information Technology Systems標(biāo)準(zhǔn),得出關(guān)鍵指標(biāo)。指標(biāo)確定后,由于其安全風(fēng)險有一定的不確定性,還需要通過專家討論來控制關(guān)鍵指標(biāo)和非關(guān)鍵指標(biāo)的數(shù)量分布,關(guān)鍵指標(biāo)與非關(guān)鍵指標(biāo)的權(quán)重分布為 1∶1,即所有關(guān)鍵指標(biāo)占總評估項的 50%,所有非關(guān)鍵指標(biāo)占總評估項50%。如下表1為iOS核心層安全指標(biāo)。
表1 iOS APP核心層安全指標(biāo)
該指標(biāo)主要結(jié)合目前常見的移動安全風(fēng)險進行總結(jié),由于移動風(fēng)險不斷增加,安全指標(biāo)也會不斷更新完善。
對于關(guān)聯(lián)層系統(tǒng)安全主要涉及手機越獄風(fēng)險,為了保護用戶的安全,蘋果iOS設(shè)計了一套安全機制,主要有安全啟動鏈,程序代碼簽名,文件數(shù)據(jù)保護,沙盒技術(shù),地址空間布局隨機化策略等,盡管有這些安全機制,iOS系統(tǒng)仍然存在很多安全問題,如攻擊引導(dǎo)過程的 Bootrom對設(shè)備進行“越獄”,用戶可以獲得iOS的最高訪問權(quán)限,可安裝惡意軟件,獲取用戶隱私信息。因此APP需要對手機進行越獄檢測。
針對以上核心層所涉及的評估項,總結(jié)安全解決方案如下:
(1)制定安全規(guī)范
由于權(quán)責(zé)職位分配細(xì)化,開發(fā)人員與安全人員隔離,開發(fā)人員安全意識薄弱,沒有整體嚴(yán)格的安全開發(fā)規(guī)范,只是一味追求功能的實現(xiàn),對安全沒有深刻的理解,造成很多應(yīng)用無安全性可言。移動智能終端相關(guān)的安全評測體系尚且十分缺乏,美國國家標(biāo)準(zhǔn)技術(shù)研究所(NIST)給出的各種層次和系統(tǒng)的安全標(biāo)準(zhǔn)也只就某一項(入侵檢測、數(shù)據(jù)泄露等)指標(biāo)進行評測,并沒有為移動智能終端相關(guān)的安全性制定統(tǒng)一標(biāo)準(zhǔn)。國內(nèi)目前已發(fā)布的移動應(yīng)用軟件安全相關(guān)標(biāo)準(zhǔn)中,與金融 APP相關(guān)的內(nèi)容包括中國銀聯(lián)編寫的《移動終端支付應(yīng)用軟件安全規(guī)范》,該規(guī)范主要針對的是銀行類應(yīng)用的安全實現(xiàn)。阿里巴巴集團2017年2月9日發(fā)布正式版Java開發(fā)手冊,該手冊中就添加了安全規(guī)約的內(nèi)容,其中安全規(guī)約中就明確規(guī)定對于用戶敏感數(shù)據(jù)必須進行脫密展示,例如手機號隱藏中間四位,用戶輸入的 SQL 參數(shù)嚴(yán)格使用參數(shù)綁定或者 METADATA 字段值限定,防止 SQL 注入,禁止字符串拼接 SQL 訪問數(shù)據(jù)庫。在使用平臺資源,譬如短信、郵件、電話、下單、支付,必須實現(xiàn)正確的防重放限制,如數(shù)量限制、疲勞度控制、驗證碼校驗,避免被濫刷、資損等。那么對于iOS客戶端的開發(fā)也可以制定相關(guān)的安全規(guī)范(參考Apple平臺安全編碼指南),約束開發(fā)人員減少因開發(fā)設(shè)計不合理,邏輯驗證不充分,權(quán)限分配不嚴(yán)謹(jǐn)而導(dǎo)致的安全問題的發(fā)生。
(2)客戶端安全加固
在iOS平臺上,移動應(yīng)用能夠被反編譯成較低級的機器碼和二進制碼。一般加固的方式是代碼中的重要方法,代碼命名混淆和使用宏,可使反編譯后的代碼易讀性下降。核心代碼采用靜態(tài)庫的方式,使用反動態(tài)調(diào)試,防篡改技術(shù)和在應(yīng)用軟件中嵌入防護的解決方案進行應(yīng)用完整性校驗可防止客戶端資源被任意篡改,保護iOS應(yīng)用軟件免受反匯編、逆向工程和調(diào)試。在安裝應(yīng)用軟件時可進行iOS越獄檢測,檢測程序運行環(huán)境是否安全。
(3)服務(wù)器端做安全防護
出于安全考慮,為了防止繞過前端校驗的攻擊應(yīng)在服務(wù)器端將所有來自于應(yīng)用外部的輸入進行安全校驗,包括但不限于:校驗 HTTP 頭、 cookies 以及 GET 和 POST 參數(shù)。 應(yīng)在服務(wù)器端保證業(yè)務(wù)邏輯的安全,包括業(yè)務(wù)異常和失敗的場景。服務(wù)端程序代碼應(yīng)不包含惡意代碼,不包含已知的高安全風(fēng)險漏洞,應(yīng)采取恰當(dāng)?shù)拇胧?yīng)對各種已知攻擊,如參數(shù)化查詢預(yù)防 SQL 注入,對數(shù)據(jù)進行編碼以預(yù)防跨站腳本攻擊等。
(4)安全監(jiān)管法律法規(guī),技術(shù)手段的落地
APP安全特別是金融類APP的安全,是國家、開發(fā)商、廣大用戶三方面共同的需求,做到了安全開發(fā),客戶端安全加固,服務(wù)端安全防護等外,政府,企業(yè)還需進行相應(yīng)的安全監(jiān)管,規(guī)范APP的預(yù)置和分發(fā),做好網(wǎng)絡(luò)安全宣傳,APP開發(fā)者與獨立的第三方 APP安全測試機構(gòu)、安全服務(wù)提供企業(yè)合作,同時安全監(jiān)測平臺對 APP進行實時監(jiān)測,通過相關(guān)的技術(shù)手段,法律法規(guī)等實現(xiàn)環(huán)境內(nèi)的安全,及時發(fā)現(xiàn)各種山寨,盜版,釣魚應(yīng)用。
未來移動APP安全問題還將不斷變化,安全界對iOS系統(tǒng)安全研究也越來越重視,尤其是數(shù)據(jù)安全和iOS惡意軟件的問題。由于部署在用戶終端上,移動應(yīng)用比服務(wù)器應(yīng)用更容易被攻擊。目前大部分移動 APP漏洞檢測平臺最終的檢測結(jié)果也需要專業(yè)的安全研究人員評估實際風(fēng)險,歷史上很多移動端嚴(yán)重漏洞也是需要結(jié)合業(yè)務(wù)場景的,所以說移動App漏洞檢測平臺也只是企業(yè)移動App安全建設(shè)中的一環(huán),此外推動移動安全人才培養(yǎng),iOS App安全開發(fā)規(guī)范,應(yīng)用加固,盜版監(jiān)測,安全評估等體系建設(shè)也同樣重要。
[1]中國人民銀行.中國金融移動支付支付標(biāo)記化技術(shù)規(guī)范[S/OL].金融科技時代,2016.
[2]中國人民銀行.中國金融移動支付應(yīng)用安全規(guī)范[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].上海交通大學(xué),2011.
[6]吳寅鶴.ios平臺應(yīng)用程序的安全性研究[D].廣東工業(yè)大學(xué),2014.
[7]路鵬,方勇,方昉, 蒲偉.iOS系統(tǒng)代碼簽名機制研究[J].信息安全與通信保密,2013.
[8]凌寧.基于 ios系統(tǒng)的安全性研究[D].北京郵電大學(xué),2014.
[9]朱曉蓮,甄彥虎.移動智能設(shè)備安全分析及防護策略[J].計算機與網(wǎng)絡(luò),2012.
[10]翁建濤.Mach-O 文件代碼保護方案[D].北京理工大學(xué),2015.
[11]劉朋飛.iOS應(yīng)用程序的攻擊手段分析與防護[D].電子科技大學(xué),2014..
[12]OWASP Risk Rating Methodology[S/OL].http://www.owasp.org.cn:8080/owasp-project/download/OWA SPRiskRatingMethodologyV2.pdf.
[13]沙梓社,吳航.ios應(yīng)用逆向工程[M].機械工業(yè)出版社,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安全漏洞與數(shù)據(jù)泄露現(xiàn)狀報[R/OL].http://www.freebuf.com/ articles/paper/137072.html,2017.