隨著移動通信和計算機通信技術(shù)的持續(xù)進步,智慧校園逐漸發(fā)展起來,移動應(yīng)用也開始走向校園。很多高校積極推進智慧校園建設(shè),借助移動應(yīng)用打造“互聯(lián)網(wǎng)+校園”的智慧校園模式,為師生提供更便捷的智慧校園服務(wù)。與此同時,校園移動應(yīng)用的管理工作也成為信息化管理的重要組成部分。
伴隨著高校移動應(yīng)用(以下簡稱“校園APP”)的快速普及,其安全問題日益暴露。
2017年9月,吳中超等人在《中國教育網(wǎng)絡(luò)》發(fā)表的文章,闡述了對國內(nèi)20余所高校Android平臺校園APP進行初步審計發(fā)現(xiàn)的諸多安全問題。
其收集的Android平臺校園APP來自全國各地26所高校,其中,華北及東北地區(qū)6所、西北地區(qū)4所、華東地區(qū)7所、中南地區(qū)5所、西南地區(qū)4所,涉及到9所“985工程”高校和14所“211工程”高校。
調(diào)查結(jié)果顯示,出現(xiàn)0次或1次問題的APP數(shù)量僅為5個,涉及到的問題包含不限于缺乏加固保護、源代碼未混淆、WebView明文存儲等。這些問題可以總結(jié)為程序源代碼安全、本地數(shù)據(jù)存儲安全、通信數(shù)據(jù)傳輸安全、惡意防范攻擊能力等,具體如圖1所示。
圖1 Android 平臺校園APP 安全調(diào)查結(jié)果
高校校園APP的發(fā)展
目前對校園APP尚沒有明確定義。若從高校校園使用角度講,對學(xué)生有著廣泛影響力的社交網(wǎng)絡(luò)APP或即時通訊APP可以歸類于校園APP,如微信、QQ等。
不同于上述面向社會大眾擁有廣泛用戶群體的APP,狹義的校園APP往往以特定高校的學(xué)生或是特定的學(xué)生為主題,提供信息具有本地化、實用性強、有一定時效性等特點。
本文研究的校園APP安全問題,將具備如下服務(wù)特性的APP定義為校園APP:面向特定高校的學(xué)生和教職工,為師生提供本地化的學(xué)習(xí)、工作、生活等信息的智能手機應(yīng)用程序,運營管理者一般是高校相關(guān)部門的管理人員或在校學(xué)生。
自2017年后,校園APP迅速普及發(fā)展起來。“互聯(lián)網(wǎng)+”和智能終端的快速發(fā)展為高校校園APP提供了技術(shù)基礎(chǔ)和外部環(huán)境;
同時,高校校園具備的潛在市場吸引著公司或高校學(xué)生中的創(chuàng)業(yè)者從事相關(guān)研發(fā)工作;新媒體下,高校學(xué)生對信息需求的日益多元化為校園APP的發(fā)展提供了內(nèi)在驅(qū)動力;
與此同時,高校學(xué)生自身的創(chuàng)造力和鼓勵創(chuàng)新創(chuàng)業(yè)的政策對校園APP也起到了催化作用,故校園APP得以迅速發(fā)展起來。
目前,校園APP提供的服務(wù)包含但又不限于校園資訊、信息查詢、學(xué)業(yè)繳費、生活服務(wù)等,開發(fā)者有高校信息化建設(shè)的工作者、學(xué)生及公司研發(fā)人員。
校園APP安全及研究現(xiàn)狀
校園APP快速普及的同時,其安全問題也逐漸凸顯。
在技術(shù)上,開發(fā)者為高校定制校園APP等碎片化服務(wù)而忽略安全問題;多數(shù)開發(fā)者的安全技術(shù)匱乏,無法就移動應(yīng)用從設(shè)計、編碼、測試、發(fā)布、更新等各個環(huán)節(jié)對安全風(fēng)險進行控制。這些原因都可能導(dǎo)致校園APP在防攻擊、防篡改、防病毒等方面安全防護能力較低。
在管理上,國內(nèi)Android市場缺乏安全監(jiān)管機制,并因Android平臺的開源與開放性,校園APP市場需求大等一系列因素,導(dǎo)致眾多高校校園APP出現(xiàn)諸多問題。
在校園APP出現(xiàn)的諸多安全隱患中,程序源文件安全、本地數(shù)據(jù)存儲安全、網(wǎng)絡(luò)傳輸安全、內(nèi)部數(shù)據(jù)交互安全、惡意攻擊防范能力等,從多方面展示校園APP可能存在的安全風(fēng)險,如圖2所示。
圖2 校園APP 存在的安全隱患
國內(nèi)外研究多是闡述如何對大批量的應(yīng)用程序進行檢測,但在高校校園的特殊業(yè)務(wù)場景下,思考在碎片化業(yè)務(wù)服務(wù)中,如何保護校園APP安全的研究較少。
本文根據(jù)北京大學(xué)醫(yī)學(xué)部開發(fā)校園APP時采取的措施,從應(yīng)用程序源文件安全和數(shù)據(jù)安全兩方面闡述校園APP的安全保護方案。
校園APP安全隱患研究
程序源文件安全隱患
應(yīng)用程序中含編碼階段的代碼包和配置文件,在Android開源的環(huán)境下,如果未對應(yīng)用程序采取有效保護措施,可能面臨被反編譯的風(fēng)險。攻擊者可能使用下載工具對未經(jīng)過加固保護的應(yīng)用程序、可執(zhí)行文件進行反匯編、反編譯或動態(tài)調(diào)式等攻擊;可能通過逆向法破解應(yīng)用程序的實現(xiàn)邏輯,比如獲取與服務(wù)器端的通訊方式、加解密算法、密鑰、軟鍵盤實現(xiàn)技術(shù)等,造成算法被竊取、文件被非法篡改或是程序接口被調(diào)用、篡改應(yīng)用程序內(nèi)容、植入惡意收費應(yīng)用或廣告SDK、引誘下載其他應(yīng)用程序等。高校校園APP的開發(fā)者需保證應(yīng)用軟件包的完整性和可靠性。
數(shù)據(jù)存儲與傳輸安全隱患
(1)數(shù)據(jù)存儲與交互安全隱患
校園數(shù)據(jù)安全是高校信息化安全建設(shè)的重要組成部分。高校數(shù)據(jù)庫一般都部署在學(xué)校內(nèi)網(wǎng)的服務(wù)器中,并且有專門的防火墻限制,利用網(wǎng)絡(luò)層面進行數(shù)據(jù)保護。而在使用移動應(yīng)用的過程中,如果開發(fā)者在AndroidManifest.xml文件中權(quán)限配置不當,客戶端本地靜態(tài)數(shù)據(jù)如本地系統(tǒng)文件、本地業(yè)務(wù)數(shù)據(jù)等都可能被盜用,造成用戶的敏感信息泄露。
Android系統(tǒng)本身有四大組件:Activity、Service、Broadcast Receive和Content Provider。Activity組件是Android程序與用戶交互的界面;Service組件是后臺運行的服務(wù)進程;Broadcast Receiver組件對外部事件進行過濾接收,并根據(jù)消息內(nèi)容執(zhí)行響應(yīng);Content Provider組件是應(yīng)用程序之間共享數(shù)據(jù)的容器,可以將應(yīng)用程序的指定數(shù)據(jù)集提供給第三方APP。
不同的應(yīng)用程序或進程之間可能存在共享數(shù)據(jù),然而應(yīng)用程序中不同的數(shù)據(jù)具有嚴格的訪問權(quán)限。如果訪問權(quán)限設(shè)置不當,應(yīng)用程序中的數(shù)據(jù)可能被其他程序直接訪問或修改,導(dǎo)致用戶的敏感數(shù)據(jù)泄露,或應(yīng)用程序被惡意篡改賬號,盜取賬號信息等。若組件中設(shè)置了導(dǎo)出權(quán)限,會存在登錄界面被繞過、敏感數(shù)據(jù)泄露、數(shù)據(jù)庫SQL被注入的風(fēng)險。
(2)數(shù)據(jù)傳輸安全隱患
客戶端與服務(wù)器之間傳輸數(shù)據(jù)通常遵循通信協(xié)議指定的內(nèi)容格式和內(nèi)容類型,如果未對傳輸數(shù)據(jù)加密,傳輸數(shù)據(jù)很有可能被還原成網(wǎng)絡(luò)層的數(shù)據(jù)包進行解包并分析,暴露通信過程中的各種關(guān)鍵數(shù)據(jù)。
在使用HTTPS協(xié)議時,客戶端需對服務(wù)器身份進行完整性校驗,即驗證服務(wù)器是真實合法的目標服務(wù)器。如果沒有校驗,客戶端可能與仿冒的服務(wù)器進行通信鏈接,即造成“中間人攻擊”。
當客戶端的WebView組件訪問使用HTTPS協(xié)議加密的URL時,如果服務(wù)器證書校驗錯誤,客戶端應(yīng)該拒絕繼續(xù)加載頁面。如果重載WebView的onReceivedSslError()函數(shù)并在其中執(zhí)行handler.proceed(),客戶端可以繞過證書校驗錯誤繼續(xù)訪問此非法URL,將導(dǎo)致“中間人攻擊”。攻擊者冒充服務(wù)器與手機客戶端進行交互,同時冒充手機客戶端與服務(wù)器進行交互,充當中間人轉(zhuǎn)發(fā)信息的時候,也有可能竊取手機號、賬號、密碼等敏感信息。
實踐
解除程序源文件安全隱患
應(yīng)用開發(fā)者可以使用自己開發(fā)的加固工具或是第三方的加固工具,來強化應(yīng)用程序的安全能力。
加固技術(shù)可以在不改變應(yīng)用客戶端代碼的情況下,將針對應(yīng)用程序的各種安全缺陷保護技術(shù)集成到應(yīng)用客戶端中,提供應(yīng)用開發(fā)、打包、發(fā)布、運行全生命周期的安全,并在文件中設(shè)置防二次打包的配置,有效防止針對移動的反編譯、二次打包、內(nèi)存注入、動態(tài)調(diào)試等惡意攻擊行為,全面保護應(yīng)用程序安全。
北京大學(xué)醫(yī)學(xué)部在開發(fā)校園APP時,研發(fā)人員采用加固方式保護Android版本的程序源文件安全。
圖3 APK 文件加固方案
對APK文件加固后,可以有效保護Android應(yīng)用程序不被反編譯。同時,代碼混淆通過將Java代碼中的方法名、變量名、類名、包名等元素名稱改成毫無關(guān)聯(lián)且無意義的名字,或?qū)唵蔚倪壿嫹种нM行混淆,使攻擊者難以找到函數(shù)調(diào)用的內(nèi)容,無法掌控APP內(nèi)部實現(xiàn)邏輯,增加逆向工程和破解的難度。
除使用加固工具外,北京大學(xué)醫(yī)學(xué)部還針對打包上線的應(yīng)用程序,將Android版本應(yīng)用發(fā)布在校園內(nèi)的服務(wù)器上;因iOS應(yīng)用必須通過APP Store審核,故將iOS版本應(yīng)用發(fā)布在APP Store上,同時向用戶公布官方下載路徑。由此可以有效避免校園應(yīng)用被植入其他應(yīng)用程序,防止APP被破解、被盜版,防止惡意推廣安裝其他應(yīng)用軟件,避免用戶安裝仿冒軟件等。
解除校園APP數(shù)據(jù)安全隱患
(1)解除數(shù)據(jù)存儲與交互的安全隱患
如上文所說,校園APP在數(shù)據(jù)存儲與交互時存在安全隱患。目前,高校大都使用統(tǒng)一身份認證,故登錄時的賬號和密碼都不會在本地存留。應(yīng)在考慮數(shù)據(jù)安全時重點考慮業(yè)務(wù)數(shù)據(jù)存儲安全、交互數(shù)據(jù)安全和傳輸數(shù)據(jù)安全。
解除Webview明文存儲密碼風(fēng)險。其他惡意程序也可能通過提權(quán)或者root的方式訪問Webview數(shù)據(jù)庫,竊取用戶的用戶名信息及密碼。北京大學(xué)醫(yī)學(xué)部在開發(fā)APP時通過設(shè)置WebView.getSettings()中的方法setSavePassword(false)關(guān)閉Webview組件的保存密碼功能。
關(guān)閉必要組件的導(dǎo)出權(quán)限。限制AndroidManifest.xml中的Activity、Broadcast Receiver、Content Provider、Service組件導(dǎo)出權(quán)限,對于須導(dǎo)出的組件必須限制于授權(quán)用戶或者應(yīng)用組件。
采用顯式方式調(diào)用Intent組件。Intent通常用于Activity、Service、Broadcast Receiver等組件之間進行信息傳遞,包括發(fā)送端和接收端。當使用隱式的Intent調(diào)用時,并未對intent消息接收端進行限制,因此可能存在該消息被未知的第三方應(yīng)用劫持的風(fēng)險。Intent消息被劫持,可能導(dǎo)致用戶的敏感數(shù)據(jù)泄露,或者惡意程序執(zhí)行等風(fēng)險。
(2)解除數(shù)據(jù)傳輸安全隱患
采用HTTPS協(xié)議傳輸數(shù)據(jù)。北京大學(xué)醫(yī)學(xué)部在開發(fā)校園APP時,針對業(yè)務(wù)敏感數(shù)據(jù),采用HTTPS 傳輸協(xié)議,加入了SSL(Secure Socket Layer)子層實現(xiàn)的HTTPS協(xié)議可確保數(shù)據(jù)在網(wǎng)絡(luò)上加密傳輸,即使傳輸數(shù)據(jù)被截獲,也無法解密和還原,保護數(shù)據(jù)在傳輸中的安全。
HTTPS需校驗服務(wù)器。Android允許開發(fā)者重定義證書驗證方法,重定義之后,若不對證書進行正確的校驗,同樣可能會導(dǎo)致“中間人攻擊”。所以如果開發(fā)者重定義了證書驗證方法,還需要對證書進行校驗。
禁止Webview組件繞過證書校驗。攻擊者冒充服務(wù)器與手機客戶端進行交互,同時冒充手機客戶端與服務(wù)器進行交互,充當中間人轉(zhuǎn)發(fā)信息的時候,也有可能竊取敏感信息。所以WebView繞過證書校驗時,也可能會造成“中間人攻擊”。
采用安全加密算法并避免密鑰硬編碼。AES/DES是常用的兩種對稱加密算法,其工作模式有ECB、CBC、CFB和OFB。當其使用ECB或OFB工作模式時,加密數(shù)據(jù)可能被選擇明文攻擊CPA破解;密鑰硬編碼也易造成加密算法被破解,導(dǎo)致客戶端隱私數(shù)據(jù)泄露,加密文件破解,傳輸數(shù)據(jù)被獲取,“中間人攻擊”等后果,造成用戶敏感信息被竊取。
(3)提升惡意攻擊防范能力
長遠角度來講,沒有絕對的安全。校園APP除了應(yīng)用程序本身的問題外,還需注意防護外界的惡意攻擊,即在遵守應(yīng)用程序開發(fā)規(guī)范的前提下,不斷提升自身防護能力,做好應(yīng)用程序的安全防護工作,排除安全隱患。北京大學(xué)醫(yī)學(xué)部在迭代更新校園APP時,都會使用業(yè)界安全公司的安全檢測服務(wù)對新發(fā)版的應(yīng)用進行安全檢測,避免因增加新的業(yè)務(wù)服務(wù)帶來安全問題。
本文從探索高校校園APP的安全威脅出發(fā),調(diào)研了目前高校校園APP的安全現(xiàn)狀,分析高校校園APP存在安全隱患的原因,繼而根據(jù)《中華人民共和國網(wǎng)絡(luò)安全法》等相關(guān)法律總結(jié)高校校園APP應(yīng)該具備的安全能力,并依據(jù)技術(shù)手段闡述如何從程序源文件和數(shù)據(jù)兩方面保護應(yīng)用程序。
結(jié)合學(xué)校開發(fā)校園APP時的具體實踐,淺談高校校園APP的安全保護方案,提升研發(fā)人員和高校信息化管理人員的安全意識,為高校校園APP建立一道防護屏障,推動建立高校校園APP的安全生態(tài)圈。
(本文刊載于《中國教育網(wǎng)絡(luò)》雜志2020年4月刊,作者:魏仿,單位為北京大學(xué)醫(yī)學(xué)部信息通訊中心,責(zé)編:樸藝娜)