郭 靜, 姜海濤, 王梓瑩
( 國網(wǎng)電力系統(tǒng)人工智能聯(lián)合實驗室(國網(wǎng)江蘇省電力有限公司電力科學(xué)研究院), 江蘇 南京 211103)
移動應(yīng)用因其使用便捷、個性化等特點,快速滲透到電力行業(yè)后,極大轉(zhuǎn)變了電力領(lǐng)域的服務(wù)模式,提升了用戶體驗。
電力行業(yè)因其自身特性,對移動應(yīng)用安全性、私密性、穩(wěn)定性的要求越來越嚴(yán)格。然而,移動應(yīng)用開發(fā)具有開放性和靈活性,其安全測試技術(shù)研究又尚在起步階段,因此給電力行業(yè)帶來了更多的安全隱患。近年來,移動安全事件頻發(fā),某安全網(wǎng)站曝出電力移動應(yīng)用2個高危敏感信息泄露漏洞,相關(guān)人員迅速修補漏洞并更新版本,未造成嚴(yán)重后果和不良社會影響。2016年,電e寶、掌上電力相繼被曝疑似大量客戶信息流出,造成了較大的社會影響。移動應(yīng)用安全形勢嚴(yán)峻,安全漏洞和安全隱患嚴(yán)重威脅著每個電力用戶利益和企業(yè)數(shù)據(jù)安全。
關(guān)于移動應(yīng)用,目前國內(nèi)外己經(jīng)做了很多基于應(yīng)用的安全研究。文獻(xiàn)[1—2]設(shè)計了一種基于應(yīng)用程序請求的權(quán)限來檢測應(yīng)用是否為惡意應(yīng)用軟件的系統(tǒng),該系統(tǒng)在應(yīng)用安裝時讀取應(yīng)用程序申請的權(quán)限,并與一組已知的視為可疑危險行為的規(guī)則進(jìn)行比較,如果檢測應(yīng)用存在危險權(quán)限組合則推遲應(yīng)用權(quán)限申請的認(rèn)證,從而提供在應(yīng)用安裝的過程中給予用戶警示的功能。但是現(xiàn)有的移動應(yīng)用功能越來越強,僅通過權(quán)限區(qū)分應(yīng)用的安全性,缺乏強有力的說服力。2015年美國國家標(biāo)準(zhǔn)技術(shù)研究院發(fā)布新版指南,新版指南審查移動應(yīng)用程序的安全性,為機構(gòu)提供其所需的移動應(yīng)用相關(guān)安全和隱私風(fēng)險評估信息,包括內(nèi)部開發(fā)的程序以及在移動應(yīng)用市場中下載的程序。新版指南也有助于研發(fā)人員了解軟件開發(fā)周期中安全漏洞的類型。該指南提供了應(yīng)用程序開發(fā)安全性要求的審查過程實施計劃和注意事項,并介紹了應(yīng)用程序類型的漏洞和相關(guān)測試方法,還提供了機構(gòu)可以使用的應(yīng)用程序?qū)嵗?/p>
以上研究都是針對普通移動應(yīng)用,因此文中基于電力移動應(yīng)用的發(fā)展現(xiàn)狀,分析其面臨的各項安全風(fēng)險,針對現(xiàn)有移動應(yīng)用測試方法的不足提出安全機制測試方法,并結(jié)合傳統(tǒng)測試方法,制定全面的安全測試方案,確保移動應(yīng)用安全穩(wěn)定運行。
移動應(yīng)用在電力行業(yè)起步晚,但發(fā)展迅猛。近年來,迅速與生產(chǎn)、營銷、金融支付、調(diào)度、辦公等領(lǐng)域密切融合,已經(jīng)為企業(yè)級用戶所接受。其類型主要包括獨立安裝的移動應(yīng)用以及在微信平臺上進(jìn)行二次開發(fā)的移動業(yè)務(wù)。然而,與市面上的移動應(yīng)用略有區(qū)別,電力移動應(yīng)用不僅服務(wù)于廣大電力用戶,更為內(nèi)部生產(chǎn)做支撐服務(wù)。
電力信息安全防護(hù)體系始終圍繞安全分區(qū)、網(wǎng)絡(luò)專用、橫向隔離、縱向認(rèn)證的基本原則。企業(yè)內(nèi)網(wǎng)的建立,各分區(qū)之間的安全隔離與邏輯隔離都為信息安全提供了堅實的保障基礎(chǔ)。圖1為電力移動應(yīng)用建設(shè)的基本框架。
圖1 電力移動應(yīng)用基本框架Fig.1 Architecture diagram of mobile application in power system
電力移動應(yīng)用部署基本原則遵循分區(qū)分域,安全接入。客戶端與服務(wù)分區(qū)部署,并采用防火墻等設(shè)備實現(xiàn)邏輯隔離。后臺管理端及數(shù)據(jù)庫與外網(wǎng)服務(wù)之間采用符合標(biāo)準(zhǔn)的隔離裝置,實現(xiàn)物理隔離。各分區(qū)的具體組成模塊如下:
(1) 客戶端。部署在互聯(lián)網(wǎng),安裝具體應(yīng)用??蛻舳耸沁B接用戶與服務(wù)的橋梁,用戶通過客戶端應(yīng)用可對營銷、客服、電力交易等業(yè)務(wù)模塊進(jìn)行訪問與操作,客戶端將各種請求發(fā)送給服務(wù)端。
(2) 服務(wù)端。部署在信息外網(wǎng),提供后臺服務(wù)接口。服務(wù)端接收客戶端提供的各種請求并進(jìn)行處理反饋,同時可與信息內(nèi)網(wǎng)數(shù)據(jù)庫進(jìn)行交互,交互過程設(shè)置了安全措施。
(3) 數(shù)據(jù)庫。部署在信息內(nèi)網(wǎng),存儲各類應(yīng)用相關(guān)數(shù)據(jù)。
(4) 管理端。部署在信息內(nèi)網(wǎng),為移動應(yīng)用的信息發(fā)布和統(tǒng)計提供相關(guān)的后臺管理及服務(wù)。
根據(jù)結(jié)構(gòu)框圖,簡單把4個模塊劃分為“客戶端-傳輸-管理端”,分析移動應(yīng)用可能面臨的安全威脅,此處管理端包含了數(shù)據(jù)庫及管理后臺應(yīng)用。
1.2.1 客戶端安全
(1) 物理威脅。客戶端終端包括智能手機、平板設(shè)備等智能設(shè)備。設(shè)備具有靈活便攜的特點,容易被非法盜取。設(shè)備遺失后,如果應(yīng)用數(shù)據(jù)及登錄信息等未及時銷毀,可能造成用戶個人信息泄露甚至經(jīng)濟損失。
(2) 操作系統(tǒng)威脅。目前,Android和iOS操作系統(tǒng)占據(jù)了市場主流[2-5]。為保護(hù)用戶的數(shù)據(jù)、應(yīng)用程序和設(shè)備的安全,兩個系統(tǒng)設(shè)置了相對全面的安全機制。但目前,root和越獄越演越烈,root或越獄后的設(shè)備,能夠完美繞過安全機制。盡管設(shè)備生產(chǎn)廠家采取了設(shè)備鎖定等一系列措施,但收效甚微,而且很多用戶因為自身需求也會主動選擇root設(shè)備[6]。
(3) 病毒木馬和惡意代碼。病毒木馬和惡意代碼一直困擾著用戶,攻擊者借助開源技術(shù)方案帶來的技術(shù)積累制作攻擊武器,通過病毒傳播、短信攻擊、網(wǎng)關(guān)攻擊等造成用戶損失。2016年度,Android平臺約10臺設(shè)備中就有1臺染毒,設(shè)備感染率達(dá)10%。
(4) 應(yīng)用威脅。移動應(yīng)用是連接用戶與業(yè)務(wù)的橋梁,通過智能設(shè)備與用戶直接交互,并通過通信鏈路傳輸業(yè)務(wù)請求到后端服務(wù)器。以移動應(yīng)用為入口,進(jìn)行漏洞挖掘及業(yè)務(wù)安全分析,可逐步滲透到服務(wù)端、管理端。根據(jù)漏洞來源,應(yīng)用威脅主要可分為以下三大類:
① 傳統(tǒng)web漏洞[7-8]。移動應(yīng)用通常采用客戶端/服務(wù)器(clients/server, C/S)或者C/S和瀏覽器/服務(wù)器(browser/server, B/S)相結(jié)合的開發(fā)架構(gòu),其開發(fā)技術(shù)漸漸和web開發(fā)技術(shù)融合在一起。所以,常見的web應(yīng)用相關(guān)漏洞在手機前段都有可能存在。開放式web應(yīng)用程序安全項目組織(open web application security project organization, OWASP) top 10詳述了web開發(fā)面對的10大安全漏洞,包括結(jié)構(gòu)化查詢語言(structured query language,SQL)注入,跨站腳本攻擊漏洞,跨站請求偽造(cross-site request forgery, CSRF)等等。這些漏洞可能會造成機密信息被竊取、網(wǎng)絡(luò)服務(wù)被中斷、破壞等后果。但由于大部分APP不是采用直接嵌入網(wǎng)頁的模式,而是使用應(yīng)用程序編程接口(application programming interface,API)返回數(shù)據(jù),導(dǎo)致掃描器爬蟲無法大量獲取鏈接,因此該類漏洞利用率比較低。
② 應(yīng)用自身安全機制問題。不安全的數(shù)據(jù)存儲,不安全的身份驗證,過多的授權(quán),未進(jìn)行源代碼保護(hù)等引發(fā)的逆向工程攻擊。逆向工程[9]通過對核心二進(jìn)制代碼以及業(yè)務(wù)邏輯的分析研究,確定應(yīng)用源代碼、庫文件、算法和其他資產(chǎn)。常用的分析方法包括包分析,協(xié)議分析,代碼注入,組件攻擊等等,能夠造成拒絕服務(wù)、運行崩潰、數(shù)據(jù)監(jiān)聽、源代碼泄露等后果。
③ 業(yè)務(wù)設(shè)計不合理引發(fā)的安全漏洞。應(yīng)用中涉及到的第三方引用(服務(wù)、支付、地圖等)不當(dāng)也會造成安全風(fēng)險。如訪問第三方應(yīng)用后原頁面被替換或者覆蓋,內(nèi)部員工使用不加密的二維碼作為認(rèn)證信息,通過拍照獲取或者重構(gòu)二維碼易引起內(nèi)部信息泄露和越權(quán)訪問。
1.2.2 傳輸安全
APP網(wǎng)絡(luò)傳輸安全指數(shù)據(jù)從客戶端到數(shù)據(jù)庫中間過程的安全。傳輸安全本質(zhì)上是信任問題。攻擊者通過證書偽造、數(shù)字簽名偽造等手段偽裝成為信任的對象,進(jìn)行數(shù)據(jù)竊取或篡改,這就是所謂的中間人攻擊方式。此外,移動通信數(shù)據(jù)傳輸采用無線網(wǎng)絡(luò)接入服務(wù)器、客戶端,也可通過wifi釣魚或基站偽裝等方式,對用戶信息進(jìn)行監(jiān)聽和分析。攻擊者盜取數(shù)據(jù)包后,可進(jìn)行數(shù)據(jù)篡改或以此用戶信息為跳板獲取更多后臺機密信息。
1.2.3 管理端安全
應(yīng)用管理后臺通常使用web技術(shù)開發(fā),提供方便快捷的管理頁面,由系統(tǒng)管理員個人使用,承擔(dān)了更多的管理職能。后臺能夠進(jìn)行信息發(fā)布,數(shù)據(jù)增刪改查等關(guān)鍵操作。一旦發(fā)生攻擊事件,能夠造成大范圍用戶影響,是攻擊者的終極目標(biāo)。
(1) 應(yīng)用系統(tǒng)威脅:關(guān)于web系統(tǒng)常見風(fēng)險同“應(yīng)用威脅”分析。
(2) 內(nèi)部威脅:電力系統(tǒng)依賴物理隔離的保護(hù),內(nèi)網(wǎng)用戶在系統(tǒng)管理及使用上存在不合理行為容易造成弱口令利用,攻擊者登錄系統(tǒng)更改應(yīng)用配置信息,使業(yè)務(wù)應(yīng)用不能訪問;發(fā)布惡意公告,造成惡劣社會影響。規(guī)范用戶行為管理的同時,重視安全策略制定,加強機密數(shù)據(jù)的存儲和傳輸安全,建立良好的數(shù)據(jù)恢復(fù)系統(tǒng),建立用戶操作審計機制都可以解決這類問題。
(3) 環(huán)境威脅:環(huán)境安全主要包括網(wǎng)絡(luò)層、主機層、應(yīng)用層、數(shù)據(jù)層的安全。主要有網(wǎng)絡(luò)設(shè)備、操作系統(tǒng)、數(shù)據(jù)庫、中間件、應(yīng)用服務(wù)器等多類設(shè)備及系統(tǒng)的安全配置問題;主機感染的病毒、木馬以及惡意代碼問題。這些問題均會成為攻擊的可利用漏洞,如利用系統(tǒng)漏洞遠(yuǎn)程獲取訪問權(quán)限或管理權(quán)限,從而控制整個系統(tǒng)。
為應(yīng)對移動用快速發(fā)展帶來的安全問題,充分保護(hù)電力用戶隱私及內(nèi)部生產(chǎn)數(shù)據(jù),已建設(shè)的生產(chǎn)應(yīng)用通常以展示功能為主,其他關(guān)鍵操作性的設(shè)置較少,以此來減少安全風(fēng)險。隨著應(yīng)用與業(yè)務(wù)的緊密融合,很難再使用這種方法來限制用戶操做行為。面對越來越多的攻擊方式和攻擊數(shù)量,應(yīng)用必須從根本上規(guī)范安全機制,加強系統(tǒng)上線前安全測試,提升移動應(yīng)用安全性、健壯性。
常見安全測試方法主要檢測電力應(yīng)用面對的技術(shù)方面的威脅,通常運用代碼審計和滲透測試方法確保各類應(yīng)用安全,同時采取安全配置核查,病毒木馬查殺等檢測手段確保部署環(huán)境安全。
(1) 代碼審計[10-11]。代碼審計屬于靜態(tài)測試方法[12],是一種以發(fā)現(xiàn)程序錯誤,安全漏洞和違反程序規(guī)范為目標(biāo)的源代碼分析。目前比較流行的檢測標(biāo)準(zhǔn)是OWASP安全標(biāo)準(zhǔn),對跨站腳本攻擊(cross site scripting, XSS)、文件上傳、各類注入漏洞等主流攻擊漏洞進(jìn)行代碼級檢測。常用的代碼審計方法是軟件掃描,該方法誤報率較高,因此必須請專業(yè)人員對代碼報告進(jìn)行審計,確定真實威脅。
(2) 滲透測試[13-16]。滲透測試屬于動態(tài)測試方法,通過模擬惡意黑客的攻擊方法,來評估計算機網(wǎng)絡(luò)系統(tǒng)安全的一種評估方法。這個過程包括對系統(tǒng)的任何弱點、技術(shù)缺陷或漏洞的主動分析,這個分析是從一個攻擊者可能存在的位置來進(jìn)行的。目前,針對web應(yīng)用系統(tǒng),已經(jīng)有各種自動化測試工具為測試者提供幫助和參考。對于移動應(yīng)用來說,還沒有權(quán)威的自動化測試工具,因此測試效果主要依賴測試人員的個人能力。
(3) 安全配置核查。安全配置核查[17]主要是對系統(tǒng)部署環(huán)境各要素的綜合檢查。目前常見的配置核查涵蓋了操作系統(tǒng)、網(wǎng)絡(luò)設(shè)備、數(shù)據(jù)庫、中間件等多類設(shè)備及系統(tǒng)的安全配置檢查,其發(fā)現(xiàn)的問題包括未安裝補丁、錯誤的安全配置、各類弱口令等。企業(yè)可以根據(jù)自身需求,定制一套安全配置核查標(biāo)準(zhǔn),稱之為安全基線。常用的安全配置核查手段是人工檢查和設(shè)備檢測。
(4) 病毒木馬查殺。病毒木馬查殺主要是防止系統(tǒng)服務(wù)器、數(shù)據(jù)庫等關(guān)鍵設(shè)備被病毒木馬入侵。主要手段是安裝主流防病毒木馬軟件,使用最新病毒庫進(jìn)行查殺。同時,針對頑固病毒,在不影響業(yè)務(wù)的情況下,采取端口、服務(wù)禁用的應(yīng)急手段防止進(jìn)一步侵害。病毒木馬檢測手段日趨成熟,但一些緊急情況和潛在漏洞仍然具備很大威脅性,如近期肆虐的勒索病毒,因此病毒木馬檢測屬于常規(guī)型檢測。
以上方法在移動應(yīng)用安全檢測中仍然適用,能夠有效檢測到后臺應(yīng)用、部署環(huán)境存在的安全漏洞,但一方面移動應(yīng)用和web應(yīng)用存在架構(gòu)及開發(fā)、應(yīng)用模式上的差異性,另一方面以上針對應(yīng)用軟件的檢測方法主要從攻擊者角度出發(fā),面對層出不窮的攻擊方式和攻擊方法有些力不從心。因此,亟需一套針對性強且能夠?qū)崿F(xiàn)主動防御的完整的移動應(yīng)用測試方案。
針對常規(guī)安全測試方法的不足,文中提出了基于安全機制移動應(yīng)用測評方法。該測評方法針對電力移動應(yīng)用開發(fā)可規(guī)劃、規(guī)范性強的特點,結(jié)合等級保護(hù)測評思想整體測評分析移動客戶端應(yīng)用的安全性。主要通過規(guī)范化要求,減小或部分消除各種安全威脅給信息系統(tǒng)帶來的安全風(fēng)險,最終確保信息系統(tǒng)安全防護(hù)能力達(dá)到保障業(yè)務(wù)安全可靠的水平。
安全機制檢測主要覆蓋用戶鑒別、數(shù)據(jù)傳輸、數(shù)據(jù)存儲、輸入健壯性、異常管理、源代碼保護(hù)、包分析、組件安全、API使用、權(quán)限機制等幾大方面,能夠針對性測試目前流行的反編譯、二次打包、組件暴露劫持、中間人攻擊等主流移動應(yīng)用威脅。
檢測客戶端用戶身份鑒別機制和客戶端身份鑒別機制。用戶身份鑒別應(yīng)用場景較多,關(guān)鍵場景有用戶登錄場景,關(guān)鍵操作場景等。其檢測點有:
(1) 用戶身份鑒別方式。檢測移動應(yīng)用使用的身份鑒別方式。移動應(yīng)用應(yīng)設(shè)置相應(yīng)的身份鑒別方式,如口令、驗證碼等,更安全的方式是采用驗證碼、生物特征識別(如指紋等)相結(jié)合的方式來作為用戶的唯一身份標(biāo)識。
(2) 鑒別失敗處理機制。檢測移動應(yīng)用對多次登錄身份驗證失敗的處理機制。對于多次登錄失敗的用戶,應(yīng)當(dāng)做鎖定處理,杜絕惡意嘗試的暴力破解行為。
(3) 登錄防暴力破解機制。檢測移動應(yīng)用對失敗登錄請求的處理機制。對于惡意發(fā)送的登錄失敗請求,服務(wù)器端應(yīng)當(dāng)拒絕處理,以免處理大量無效請求時占用資源,引起系統(tǒng)崩潰。
(4) 用戶登錄失敗提示。用戶登錄失敗時謹(jǐn)慎提示,以免暴露更多用戶口令信息,降低攻擊者保利破解難度。
(5) 客戶端與服務(wù)器端身份鑒別??蛻舳伺c服務(wù)器通信時一般采用安全套接層(secure sockets layer, SSL)安全協(xié)議,SSL存在單向認(rèn)證和雙向認(rèn)證兩種方式。單向認(rèn)證過程中只需要服務(wù)器將自己的證書,以及同證書相關(guān)的信息發(fā)送給客戶瀏覽器。雙向認(rèn)證則是需要服務(wù)端與客戶端提供身份認(rèn)證,只能是服務(wù)端允許的客戶能去訪問,安全性相對而言要高一些。使用這種方法,攻擊者無法輕易模擬客戶端進(jìn)行欺騙通信,有效阻止了中間人攻擊。
(6) 用戶口令設(shè)置機制。檢測用戶口令復(fù)雜度、用戶口令重復(fù)次數(shù)及用戶口令對特殊符號輸入的處理。
(7) 用戶身份信息泄露等。檢測用戶鑒別信息是否存在過期、泄露等情況。如短信驗證碼是否可以長期使用,驗證碼內(nèi)是否含有口令或其他身份信息等。
(1) 檢測軟件卸載是否清除完全,是否有數(shù)據(jù)殘留。主要是針對客戶端進(jìn)行的檢測,軟件卸載后應(yīng)全部刪除自身文件,尤其是容易被轉(zhuǎn)移的外設(shè)中不應(yīng)留存敏感信息。
(2) 檢測軟件升級功能的正確性和安全性:檢測軟件升級方式,如果是通過鏈接方式推送升級,嘗試替換升級信息,檢測升級過程中是否進(jìn)行了完整性校驗。
(1) 檢測客戶端在與服務(wù)端軟件通信過程中數(shù)據(jù)加密機制:對于通信過程中傳輸?shù)拿舾袛?shù)據(jù),如口令、支付信息、用戶隱私信息及其他涉密數(shù)據(jù)應(yīng)采取加密方式傳輸,加密算法應(yīng)采用密級較高、密鑰長度合適的算法。
(2) 檢測數(shù)據(jù)傳輸過程中是否使用安全套接層/傳輸層安全(secure sockets layer / transport layer security , SSL/TLS)、網(wǎng)際協(xié)議安全(internet protocol security, IPSec)等安全通信協(xié)議:通信過程中應(yīng)采用安全通信協(xié)議,對通信網(wǎng)絡(luò)連接進(jìn)行加密。
(3) 檢測客戶端與服務(wù)端軟件通信過程中是否進(jìn)行完整性校驗機制:通信過程中應(yīng)采用完整性算法對敏感數(shù)據(jù)進(jìn)行保護(hù),如MD5、SHA1等。可嘗試修改傳輸數(shù)據(jù),看服務(wù)端是否能夠識別。
(4) 檢測軟件是否可以建立非法會話:檢測會話標(biāo)識是否容易被盜用,嘗試退出登錄后發(fā)送相同會話請求,服務(wù)器應(yīng)不能正常響應(yīng)。
(5) 檢測軟件是否具備會話超時機制:會話建立后,應(yīng)當(dāng)有會話連接時間設(shè)定,超過會話連接時間應(yīng)關(guān)閉會話。
(1) 檢測軟件記錄的隱私信息是否加密處理:客戶端是否明文存儲敏感信息,應(yīng)用配置信息、敏感報錯信息、關(guān)鍵代碼等。敏感信息應(yīng)采用密級較高、密鑰長度合適的算法。
(2) 檢測數(shù)據(jù)存儲位置是否安全:應(yīng)用敏感數(shù)據(jù)應(yīng)存儲在應(yīng)用本身目錄下,尤其是可移動外設(shè)中應(yīng)盡量不存放應(yīng)用信息。
(1) 檢測軟件是否對錯誤的操作或者輸入進(jìn)行處理:嘗試輸入特殊字符、超長內(nèi)容及不同類型的數(shù)據(jù),檢測軟件對用戶輸入的限制。如果引發(fā)程序異常,對報錯信息進(jìn)行分析,不應(yīng)含有敏感信息。
(2) 檢測隱私數(shù)據(jù)輸入時是否明文顯示:在輸入口令,支付密碼、身份私密信息等用戶個人隱私時,應(yīng)當(dāng)對關(guān)鍵信息進(jìn)行隱蔽處理。在輸入這些隱私信息時,盡量使用加密鍵盤。
檢測軟件是否存在已知漏洞的API。通過調(diào)用各類問題API,測試應(yīng)用在不同版本的系統(tǒng)上是否能夠激活該漏洞。
檢測軟件是否開啟調(diào)試功能及備份功能,這兩個功能常常被攻擊者利用。
(1) 檢測是否存在不必要的暴露組件:查看暴露組件情況,如存在必須暴露的組件,應(yīng)進(jìn)行權(quán)限聲明,避免組件被惡意程序利用或攻擊。
(2) 檢測Activity、BroadcastRecevier、Service、Content Provider組件是否會被權(quán)限攻擊或劫持:Activity組件被劫持無法避免,劫持后應(yīng)用應(yīng)給用戶提示當(dāng)前應(yīng)用已進(jìn)入后臺運行。使用工具進(jìn)行組件模擬攻擊,查看是否會引起程序異常,是否存在組件權(quán)限攻擊或者被監(jiān)聽。
(1) 檢測軟件是否存在權(quán)限濫用問題。查看manifest文件,分析system級別權(quán)限和級別root權(quán)限使用情況。應(yīng)用依照最小化權(quán)限原則進(jìn)行設(shè)置。
(2) 檢測用戶操作權(quán)限管理。確定已通過驗證用戶的訪問和操作權(quán)限。防止錯誤的授權(quán)或弱授權(quán)導(dǎo)致應(yīng)用程序信息和用戶敏感信息被非法訪問或篡改。① 縱向越權(quán):一個低權(quán)限的用戶訪問高權(quán)限用戶的資源或功能。② 橫向越權(quán):用戶嘗試訪問與其同級權(quán)限用戶的資源或功能。
(1) 檢測軟件是否能被反編譯:對Android 安裝包(Android package, apk)進(jìn)行反編譯,查看是否能正常分析得到的源碼。Android應(yīng)用應(yīng)對源代碼進(jìn)行加殼或混淆處理,以免信息泄露。
(2) 檢測軟件的本地庫文件是否加密:解壓apk包,提取dex文件并使用工具轉(zhuǎn)換,查看得到的代碼能否正常分析。
(3) 檢測軟件是否夠重打包:反編譯apk安裝包后,對源碼進(jìn)行修改,重新打包簽名,查看APP是否能夠正常運行。應(yīng)用應(yīng)對apk包完整性進(jìn)行校驗,避免重打包現(xiàn)象。
以上安全機制檢測根據(jù)APP常見缺陷總結(jié),能夠有效評估應(yīng)用安全性。
結(jié)合傳統(tǒng)的的安全檢測方法和安全機制檢測方法,可分別涵蓋了移動終端安全、客戶端應(yīng)用安全、通信和傳輸安全、服務(wù)端安全幾個方面來進(jìn)行檢測。檢測整體框圖如圖2。
圖2 移動應(yīng)用安全測試方法Fig.2 Mobile application security testing scheme.
本方法基于電力系統(tǒng)行業(yè)特點,考慮了可能發(fā)生威脅的各個模塊,利用安全機制檢測實現(xiàn)安全威脅主動防御,并綜合已有的代碼審計、滲透測試、配置核查、病毒木馬查殺等多種技術(shù)手段,提供移動應(yīng)用全面的安全保障。本方案可通用于各類電力移動應(yīng)用,為上線前安全測試提供理論基礎(chǔ)和具體實現(xiàn)。
挑選3個移動應(yīng)用A、B、C,在硬件條件同等的情況下(包括客戶端硬件及服務(wù)端硬件),使用該方案進(jìn)行測試。其中A系統(tǒng)為獨立開發(fā),B系統(tǒng)和C系統(tǒng)集成在同一平臺內(nèi)開發(fā)。檢測發(fā)現(xiàn)A應(yīng)用安全機制問題11項,其他安全問題2項;B應(yīng)用安全問題6項,其他安全問題1項;C應(yīng)用安全機制問題5項,其他安全問題1項。測試結(jié)果如表1和表2所示。通過測試結(jié)果可以看出,就服務(wù)端而言,管理后臺采用Web技術(shù)開發(fā),通過代碼測試和滲透測試A、B、C均測試出少量低危漏洞。究其原因,web安全近年來越來越受到重視,開發(fā)人員安全意識上升,安全防護(hù)技術(shù)越來越成熟,很大程度降低了管理后臺的技術(shù)漏洞。
表1 3APP客戶端測試結(jié)果比較Tab. 1 Test result comparison between 3 APPs clients
測試方法類別ABC無賬戶鎖定機制賬戶鎖定時間不足賬戶鎖定時間不足用戶身份鑒別未采用多重身份鑒別機制未采用多重身份鑒別機制未采用多重身份鑒別機制用戶登錄失敗提示暴露信息用戶驗證碼復(fù)雜度不足未設(shè)置會話超時時間未設(shè)置會話超時時間未設(shè)置會話超時時間數(shù)據(jù)通信機制未進(jìn)行數(shù)據(jù)傳輸完整性校驗安全機制測試未進(jìn)行數(shù)據(jù)傳輸加密數(shù)據(jù)存儲機制本地存儲敏感文件,可反編譯為系統(tǒng)源代碼輸入健壯性輸入隱私數(shù)據(jù)可全部明文顯示,未進(jìn)行部分屏蔽未對輸入數(shù)據(jù)類型進(jìn)行限制組件安全存在暴露的組件存在暴露的組件存在暴露的組件權(quán)限管理存在高級別權(quán)限申請(打電話)存在高級別權(quán)限申請存在高級別權(quán)限申請端口檢測存在無關(guān)的服務(wù)和端口存在無關(guān)的服務(wù)和端口滲透測試傳輸可靠性檢測明文傳輸敏感信息數(shù)據(jù)可重放檢測數(shù)據(jù)可實現(xiàn)修改重放
表2 3APP服務(wù)端測試結(jié)果比較Tab.2 Test result comparison between 3 APPs severs
測試方法ABC代碼審計Excessive session timeout(low)Leftover debug code(low)Leftover debug code(low)System information leak(low)System information leak(low)System information leak(low)應(yīng)用程序錯誤(低)發(fā)現(xiàn)電子郵件地址模式(低)發(fā)現(xiàn)電子郵件地址模式(低)滲透測試發(fā)現(xiàn)電子郵件地址模式(低)Html注釋敏感信息泄露(低)Html注釋敏感信息泄露(低)缺少跨站腳本編制防御(低)缺少跨站腳本編制防御(低)缺少跨站腳本編制防御(低)查詢中接受的主體參數(shù)(低)檢測到隱藏目錄(低)檢測到隱藏目錄(低)
APP的主要安全問題集中在客戶端。使用基于安全機制的測試方法能夠測試出更多的安全漏洞。就客戶端而言,A系統(tǒng)存在較多漏洞。因用戶鑒別機制不完善,可進(jìn)行登錄信息猜測;因為傳輸機制不完善,可通過抓包獲取到用戶敏感信息,且可以對截取的數(shù)據(jù)包進(jìn)行修改;本地存儲敏感信息可進(jìn)行源代碼反編譯;存在高級別權(quán)限,超出本身應(yīng)用范圍。B系統(tǒng)和C系統(tǒng)安全機制相對完善,因為開發(fā)時以同一平臺為基礎(chǔ),安全問題趨于一致。電力系統(tǒng)逐步采用基于平臺統(tǒng)一開發(fā)的模式,將各類應(yīng)用保護(hù)起來,解決了開發(fā)團(tuán)隊水平參差不齊的問題,提高了整體安全水平。但與此同時,統(tǒng)一平臺的安全必須通過嚴(yán)格測試。
文中針對常規(guī)安全測試方法能夠適應(yīng)電力移動應(yīng)用測試的不足和電力移動應(yīng)用開發(fā)可規(guī)劃、規(guī)范性強的特點,結(jié)合等級保護(hù)測評思想整體測評分析移動客戶端應(yīng)用的安全性,提出了基于安全機制的測試方法,從根本上規(guī)范安全機制,加強系統(tǒng)上線前安全測試,從而提升了移動應(yīng)用安全性和健壯性。同時,該移動安全測試方案適用于電力移動應(yīng)用的安全測試,為電力移動應(yīng)用上線前安全測評與加固提供了技術(shù)指導(dǎo)。