于炳虎


摘要:本文根據當前移動應用市場現狀,以微服務架構為基礎,設計實現了一套安全有效的移動應用安全檢測系統,該系統使用簡單、擴展性強,為應用安全檢測領域提供了切實可行的方案。
關鍵詞:移動應用;安全檢測;系統漏洞;微服務
中圖分類號:TP311.52 文獻標識碼:A 文章編號:1007-9416(2018)11-0169-03
0 引言
近年來移動互聯網的迅猛發展,帶動了移動終端設備的智能化、全能化和多樣化的發展,與此同時,智能手機的信息安全問題卻變得日益嚴重,手機安全隱患越來越多,尤其是終端應用APP的信息安全問題變得極為突出。據某第三方互聯網安全中心數據顯示,2017年該中心共截獲安卓平臺新增惡意程序樣本1523萬個,新增手機勒索軟件18萬,180萬臺手機遭到攻擊。截止目前,安卓操作系統手機的市場占有率達到了85.9%,作為智能手機中市場占有率最高的移動操作系統,它關系著眾多手機用戶的工作與生活的方方面面,隨著各種軟件缺陷和系統漏洞的不斷爆出,現存的安卓智能手機危機重重,雖然手機安全軟件能夠解決一些安全隱患,但操作系統中的漏洞和應用軟件的漏洞仍未能有效修補,攻擊大門依舊打開,漏洞一旦被利用,依舊會對用戶造成巨大的損失。中國泰爾終端實驗室做過一項抽樣測試,該實驗室現隸屬于工業與信息化產業部的電信研究院,此次抽樣測試針對目前在市場上銷售的77家手機廠商的262款終端,并綜合手機應用和系統的漏洞總數、嚴重程度、漏洞修復比例和漏洞修復延遲時間,對手機終端產品進行了全面的安全水平的評估。最終測試結果顯示,安卓手機安全漏洞隱患極為嚴重。為此,本文立足移動應用市場現狀,設計實現一套安卓系統平臺的安全有效的移動應用檢測系統,旨在解決當下日益嚴重的信息安全問題。
1 相關技術介紹
1.1 應用檢測技術
安卓平臺中最為常見的攻擊類型主要有:逆向分析、二次打包以及篡改,用戶手機一旦受到上述攻擊,會導致用戶的個人信息和隱私數據等發生泄漏,對用戶的切身利益等帶來損害。安卓應用以安裝包格式發布,程序文件打包成安裝文件,安裝文件類型是一個壓縮包,安裝前傳輸至終端設備上,這個壓縮文件里面包含屬性文件、配置文件、資源文件、字節碼文件等多種類型的文件,軟件結構較為簡單,只需修改相應配置文件、啟動組件或者廣播組件等,惡意代碼就可以植入進去,當應用正常運行的時候,惡意代碼隨之運行[1]。
目前,國內外針對移動應用的安全防護主要從三個方面著手,應用安全檢測、應用安全加固和應用安全監測。其中,安全檢測具有安全預防作用,主要用于檢測出應用潛在的安全風險與安全漏洞,自動化檢測和人工滲透測試是主要測試方法,通過對移動應用進行全面的檢測,掃描出應用代碼中潛在的安全風險、系統漏洞等問題,幫助開發者提高其應用開發程序的安全性,有效預防可能存在的安全風險。應用安全加固相當于在原有應用的程序外層加上一個保護殼,此環節是移動應用最為直接有效的安全防護環節,可以做到防逆向、防篡改、防調試和數據保護,有效預防攻擊者的惡意行為。應用安全監測以大數據分析為基礎,收集各類應用數據進行分析挖掘,識別出有安全隱患或者漏洞的應用,發出預警信息。檢測、加固、監測是當前應用安全檢測服務的主要技術和實時手段,國內外安全企業都是圍繞這三方面來打造自己的安全產品[2]。
1.2 微服務架構
微服務是近幾年流行的一種架構思想,或者叫做架構風格,它提供了一種將應用程序進行服務拆分,設計為可獨立部署的服務套件的一種方式,最早于2014年提出。微服務架構風格是一種使用多個小服務來開發單體應用的途徑,面對當前日益復雜的應用系統,單體應用暴露出來的問題越來越多,復雜性逐漸變高,無法按需伸縮,部署成本高等問題。而在微服務的設計中,服務拆分后,是相互隔離的,每個服務運行在自己的進程中,并使用輕量級HTTP機制進行通信,基于業務功能構建服務是服務拆分的關鍵,通過自動化部署機制,每個服務獨立部署,因為使用的HTTP通信機制,這些服務可以使用不同的編程語言實現,以及不同數據存儲技術。資源的有效隔離是微服務設計的主要原則,這個原則類似于進程中資源隔離的概念,每個微服務擁有獨立的數據資源,微服務之間的數據請求和調用,都只能調用微服務對外暴露的接口來完成,接口機制有效避免了服務之間爭用數據庫和系統資源所帶來的問題。去中心化、組件化是微服務架構的主要特點,相對于傳統的SOA架構和單體架構,微服務架構的服務粒度更小,每個服務是針對一個單一職責的業務邏輯的封裝,能夠獨立被部署并運行在一個進程內。這種運行和部署方式使得系統代碼組織方式更加靈活,發布效率更高,使得快速交付產品和應對需求變化成為可能,而且在開發階段,技術選型更加靈活,不同業務問題選擇更加合適的技術,微服務架構是更加面向業務創新的一種架構模式[3]。
2 系統需求分析
為了實現功能的系統化、自動化和網絡化,移動應用安全檢測系統主要提供兩項核心功能,應用檢測和應用簽名。考慮到平臺的管理功能,本系統設計的用戶角色有兩類,前端普通用戶與后臺管理員,前端普通用戶指的是使用此系統申請應用檢測和申請應用簽名操作,目標獲取檢測報告和簽名應用的用戶,管理員主要負責檢測與簽名操作的管理,以及用戶、檢測報告、系統平臺等管理。系統功能模塊如圖1所示,詳細功能需求描述如下:
(1)普通用戶。系統注冊和登錄,用戶可以注冊平臺賬戶,并且使用已注冊的賬戶登錄系統,在登錄狀態下可以注銷賬戶,退出系統。創建和管理應用,用戶可以創建應用,包括上傳應用,填寫應用屬性信息。用戶可對所屬應用進行管理操作,包括刪除和查看詳情。申請應用檢測,用戶可以申請應用檢測,等待管理員審核。查看和下載檢測報告,審核通過,檢測完成,管理員發布報告后,用戶可以查看應用檢測報告,并且可以下載報告文件。申請應用簽名,應用檢測完成后,用戶可以申請應用簽名,等待管理員審核。下載簽名應用,審核通過,簽名完成后,用戶可以下載已簽名的應用。
(2)管理員。系統后臺登錄和退出,管理員使用已分配的賬戶可以登錄系統后臺,在登錄狀態下管理員可以注銷賬戶,退出系統。應用檢測管理,管理員可以查看所有創建應用的信息和應用狀態,可以查詢應用,可以查看應用詳情、刪除應用、下載應用。用戶申請應用檢測,管理員可以審核通過和駁回申請,通過后,管理員可以向檢測引擎提交檢測請求,開始簽名操作。已完成檢測的應用,管理員可以發布/關閉檢測報告,發布后普通用戶可以登錄系統查看,關閉后用戶不可以查看報告。應用簽名管理,管理員可以查看所有已創建應用的信息,應用狀態和簽名狀態,可以查詢應用,可以查看應用詳情、下載應用、進行應用簽名操作。用戶申請應用簽名,管理員可以審核通過或駁回申請,審核通過后,管理員可以生成簽名應用,用戶可以下載簽名后應用。用戶未申請簽名的狀態下,管理員可以授權簽名,簽名后用戶不可下載,只有管理員可下載。檢測報告管理,管理員可以查看所有已生成的檢測報告,可以根據報告編號或者應用名稱查詢具體的檢測報告,可以預覽報告詳情,下載檢測報告。用戶管理,管理員可以查看所有已注冊平臺的用戶,可以根據用戶名和手機號查詢具體的用戶,可以刪除用戶賬戶,可以啟用或停用某一用戶,停用后,此用戶無法登錄系統平臺。
3 系統架構設計
移動應用安全檢測系統基于微服務架構設計開發,微服務架構按照業務的功能進行服務拆分,服務粒度要合適,并不是越小越好,應以業務功能為拆分基礎,微服務是去中心化的分布式架構,各服務是有功能意義的服務,無論是在開發階段或部署階段都是獨立的。本系統按業務功能拆分為以下5個服務,用戶服務、應用服務、檢測服務、簽名服務和檢測報告服務,系統架構如圖2所示。
4 系統實現
系統基于微服務架構設計實現,在微服務框架的選用上,本系統使用了SpringCloud,它是基于SpringBoot的一整套實現微服務的框架,提供了微服務開發所需的整套組件,包括服務注冊發現組件、負載均衡組件、斷路器組件、API網關組件、配置管理、控制總線、分布式會話和集群狀態管理等組件。具體實現中,以系統架構設計中的服務拆分和微服務架構為基礎,從以下6點描述。
(1)服務注冊中心。首先搭建服務注冊中心,SpringCloud提供了服務注冊和發現組件Eureka,利用Eureka組件可以很方便地實現服務注冊和服務發現的功能,創建appcheck-center-server工程,添加依賴,引入Eureka組件,編寫配置文件,在配置文件中增加端口號、實體名稱等信息。
(2)注冊服務。搭建完服務注冊中心后,開始創建各個服務,系統已拆分為5個服務,以應用服務為例,創建appcheck-subservice-apk工程,添加依賴引入Eureka組件,編寫配置文件,在配置文件中添加服務實例的端口號,和注冊中心地址等信息,修改客戶端代碼,在項目的引導類上添加注解@EnableEurekaClient,該注解用于聲明標注類是一個Eureka客戶端組件,編寫服務的實體層,DAO層,邏輯層,控制器層等代碼,實體層與數據庫映射,每個服務連接獨立的數據庫服務,服務之間使用rest接口交互。完成上述配置后,分別啟動服務注冊中心和應用服務,此時,在服務注冊中心處可查看到,應用服務已注冊進來,可以提供服務了。
(3)負載均衡。應用服務等各服務之間相互調用是通過HTTP通信協議來實現的,為了保證服務的高可用,同一個服務被部署在了多個應用上,SpringCloud提供了負載均衡組件Ribbon來實現此功能,Ribbon會利用從Eureka讀取到的服務信息列表,在調用服務實例時,以合理的方式進行負載。在本系統的服務實現中,考慮到迭代成本,未使用Feign組件,在通信方式上,使用的是RestTemplate,實現負載均衡,以應用服務為例,在appcheck-subservice-apk工程的引導類的restTemplate()方法上添加注解@LoadBalanced,在用戶服務實例的查詢方法中,使用服務提供者的實例名稱來執行已注冊服務列表中實例的方法。例如檢測服務調用應用服務的查詢應用信息的方法,請求地址http://appcheck-subservice-apk,URI中使用的已經不是主機地址+端口號的形式了。
(4)斷路器組件。本系統的5個服務中,應用服務是基礎服務,在整個業務邏輯中被調用次數最多,如果基礎服務出現故障可能會級聯傳遞,導致整個服務鏈上的服務不可用,SpringCloud提供了Hystrix組件來實現斷路器、線程隔離等服務保護功能。斷路器是可以實現彈性容錯,在一定條件下能夠自動打開和關閉。具體實現,在appcheck-subservice-apk工程的引導類中開啟斷路器功能,添加注解@EnableCircuitBreaker,修改控制器類,在邏輯方法上使用注解@HystrixCommand標注,此注解用于指定當前方法調用異常時回調的方法,該方法是通過其屬性fallbackMethod的值來指定的,回調方法的參數類型以及返回值必須要和員方法保持一致。
(5)API網關服務。微服務系統通過將資源以API接口的形式暴露給外界提供服務,在微服務系統中API接口資源通常是使用路由網關統一暴露,內部服務不直接對外提供API資源的暴露。SpringCloud提供了組件Zuul來實現API網關服務,Zuul屬于邊緣服務,可以用來執行認證、動態路由、服務遷移、負載均衡、安全和動態響應處理等操作。在本系統的實現中,創建API網關工程appcheck-gateway-zuul,添加依賴,編寫配置文件,在配置文件中指定Zuul的唯一標識,在工程主類Application中使用@Enable ZuulProxy注解開啟Zuul的API網關功能。
(6)配置中心服務。本系統從開發到實際部署運行,經歷多個周期,每個周期的配置文件不同,所以此處使用了微服務的統一配置管理,SpringCloud提供了Config組件,具體實現,搭建分布式配置中心工程appcheck-config-server,它是一個獨立的微服務應用,主要用于集中管理應用程序的各個環境下的配置,默認使用Git存儲配置文件的內容,本系統已搭建Git服務器,創建好工程后,添加依賴,編寫配置文件,添加服務端口號和存儲屬性等信息,其中需配置config.server.git.uri,此屬性用來指定Git倉庫的網絡地址。以應用服務為例,在使用具體配置文件時,添加cloud.config.label和cloud.config.uti屬性,指定配置文件屬性即可。
5 結語
本文主要介紹了基于微服務架構的移動應用安全檢測系統的設計與實現,所設計的移動應用安全檢測系統可以實時在線完成應用的安全檢測,包括漏洞掃描、惡意代碼檢測和仿冒應用檢測,用戶可查看并下載檢測報告,在完成應用檢測后,可以繼續進行應用簽名操作。本系統的實現是從用戶的實際需求出發,有效提高了應用的安全等級,可以在一定程度上幫助凈化移動應用市場,促進移動互聯網的長期健康發展。
參考文獻
[1] 蔡曉燕.可擴展的跨平臺移動應用開發框架的研究與實現[D].復旦大學,2012.
[2] 張振南.對計算機信息傳輸安全及防護技術分析[J].自動化與儀器儀表,2013(6):126-127.
[3] 鄧杰文,曹彩鳳.微服務若干關鍵問題研究[J].五邑大學學報:(自然科學版)2016(2):49-54.
Design and Implementation of Mobile Application Security Detection System Based on Microsoft Service Architecture
YU Bing-hu
(the First Research Institute of the Ministry of Public Security,Beijing? 100048)
Abstract:Based on the current situation of mobile application market and on the basis of micro-service architecture, this paper designs and implements a secure and effective mobile application security detection system, which is simple to use and scalable, and provides a feasible scheme for the application security detection field.
Key words:mobile applications; security detection; system vulnerabilities; micro-services