于明明,寧玉橋,劉天宇,郭振
(中汽數(shù)據(jù)(天津)有限公司,天津 300380)
車(chē)聯(lián)網(wǎng)是一種典型的復(fù)雜網(wǎng)絡(luò)系統(tǒng)[1],它是以車(chē)內(nèi)網(wǎng)、車(chē)際網(wǎng)、車(chē)載移動(dòng)互聯(lián)網(wǎng)等多種新一代信息通信技術(shù)為基礎(chǔ),根據(jù)提前約定的通信協(xié)議以及數(shù)據(jù)交互標(biāo)準(zhǔn),實(shí)現(xiàn)物理空間中的車(chē)與X(人、車(chē)、路、云端等)全方位的網(wǎng)絡(luò)連接以及數(shù)據(jù)交互的大系統(tǒng)網(wǎng)絡(luò),能夠?yàn)橹腔劢煌ā⑿畔⑼ㄐ诺榷嘈袠I(yè)融合協(xié)作提供綜合信息服務(wù)。
智能網(wǎng)聯(lián)汽車(chē)作為車(chē)聯(lián)網(wǎng)快速發(fā)展的產(chǎn)物,不再是一個(gè)單獨(dú)的機(jī)械個(gè)體,車(chē)上搭載的聯(lián)網(wǎng)部件日益增多,與外部鏈接的接口不斷增加。各大主流汽車(chē)制造商為了進(jìn)一步適應(yīng)市場(chǎng)需求,給消費(fèi)者提供更加智能化、便捷性的服務(wù),對(duì)車(chē)輛與個(gè)人設(shè)備進(jìn)行更多的整合,推出了各種定制化的車(chē)聯(lián)網(wǎng)移動(dòng)APP,使消費(fèi)者可以對(duì)汽車(chē)進(jìn)行遠(yuǎn)程控制,例如遠(yuǎn)程啟動(dòng)車(chē)輛、開(kāi)啟空調(diào)等功能也成為智能網(wǎng)聯(lián)汽車(chē)的一大賣(mài)點(diǎn)。
車(chē)主通過(guò)對(duì)移動(dòng)APP進(jìn)行操作,使用Wi-Fi或者蜂窩網(wǎng)絡(luò)(3G/4G/5G等)發(fā)送遠(yuǎn)程控制指令到TSP服務(wù)器,TSP服務(wù)器與T-Box進(jìn)行交互,實(shí)現(xiàn)對(duì)汽車(chē)的遠(yuǎn)程控制等功能,例如遠(yuǎn)程開(kāi)啟空調(diào)、車(chē)輛預(yù)熱等。
移動(dòng)APP作為車(chē)聯(lián)網(wǎng)重要組成之一,在給用戶帶來(lái)便利、快捷的同時(shí),因?yàn)槠鋺?yīng)用廣泛而且易于獲取的特點(diǎn),逐漸成為黑客重要的攻擊入口。
一方面,由于移動(dòng)應(yīng)用開(kāi)發(fā)成本低和Android本身系統(tǒng)生態(tài)開(kāi)源等特點(diǎn),移動(dòng)應(yīng)用逆向新技術(shù)和新方法不斷涌現(xiàn)。攻擊者可以很容易通過(guò)反編譯或者動(dòng)態(tài)調(diào)試的方式對(duì)應(yīng)用程序包進(jìn)行破解,從而獲取通信密鑰、對(duì)通信協(xié)議進(jìn)行分析等,并結(jié)合車(chē)聯(lián)網(wǎng)的遠(yuǎn)程控制功能,進(jìn)一步通過(guò)劫持、偽造篡改汽車(chē)遠(yuǎn)程控制指令或者重放攻擊,從而達(dá)到干擾用戶正常使用和操控汽車(chē)的目的。與此同時(shí),車(chē)聯(lián)網(wǎng)移動(dòng)APP作為跳板,攻擊者通過(guò)對(duì)WiFi/藍(lán)牙等無(wú)線通信方式進(jìn)行攻擊進(jìn)一步滲透到智能汽車(chē)內(nèi)部,從而對(duì)車(chē)聯(lián)網(wǎng)控制關(guān)鍵部件進(jìn)行滲透攻擊。
2016年來(lái)自挪威安全公司Promon的專家通過(guò)對(duì)用戶手機(jī)進(jìn)行入侵,竊取到特斯拉APP賬戶用戶名和密碼,通過(guò)登錄特斯拉車(chē)聯(lián)網(wǎng)服務(wù)平臺(tái)可以實(shí)現(xiàn)對(duì)車(chē)輛的遠(yuǎn)程控制,例如:解鎖車(chē)門(mén)、啟動(dòng)引擎、車(chē)輛位置查詢、追蹤等。最終導(dǎo)致車(chē)輛被盜,給用戶造成嚴(yán)重的財(cái)產(chǎn)損失[2]。
2020年8月,國(guó)內(nèi)某特斯拉車(chē)主爆料,在使用特斯拉APP時(shí),操控自己汽車(chē)時(shí),突然發(fā)現(xiàn)APP中無(wú)法找到自己綁定的車(chē)輛,意外出現(xiàn)其他五輛特斯拉車(chē)型,通過(guò)車(chē)載定位后發(fā)現(xiàn)所有車(chē)型均位于歐洲。此外,車(chē)主通過(guò)使用特斯拉APP內(nèi)的遠(yuǎn)程控制功能,可以實(shí)現(xiàn)啟動(dòng)引擎、解鎖車(chē)門(mén)、開(kāi)啟空調(diào)等操作。
隨著汽車(chē)網(wǎng)聯(lián)化和智能化程度的不斷提高,如何解決車(chē)聯(lián)網(wǎng)移動(dòng)APP愈發(fā)凸顯的便捷性與安全性之間的矛盾尤為重要。
通過(guò)對(duì)當(dāng)前智能網(wǎng)聯(lián)汽車(chē)移動(dòng)APP的安全現(xiàn)狀進(jìn)行深入研究與分析,發(fā)現(xiàn)車(chē)聯(lián)網(wǎng)移動(dòng)APP的安全威脅主要來(lái)自以下4個(gè)方面,分別為客戶端安全、數(shù)據(jù)安全、通信安全、業(yè)務(wù)安全,具體如圖1所示。

圖1 車(chē)聯(lián)網(wǎng)移動(dòng)APP主要安全威脅
客戶端安全威脅主要包括配置安全、組件安全和代碼安全。配置安全是指移動(dòng)APP在正式發(fā)布前沒(méi)有將Debug屬性、allowbackup屬性設(shè)置為false,造成移動(dòng)APP存在調(diào)試風(fēng)險(xiǎn)、任意備份風(fēng)險(xiǎn);組件安全是指APP在發(fā)布前沒(méi)有對(duì)activity、service、content provider、broadcast receiver組件的exported屬性進(jìn)行合理設(shè)置,造成組件暴露風(fēng)險(xiǎn);代碼安全是指移動(dòng)APP在發(fā)布前沒(méi)有進(jìn)行代碼混淆和加固,攻擊者利用dex2jar、Jadx、apktool等反編譯工具,很容易就能獲取到APP的源碼,主要存在簽名校驗(yàn)風(fēng)險(xiǎn)、Dex文件反編譯風(fēng)險(xiǎn)、so文件反編譯風(fēng)險(xiǎn)。
車(chē)聯(lián)網(wǎng)移動(dòng)APP在使用的過(guò)程中,會(huì)在車(chē)主手機(jī)中存儲(chǔ)用戶信息,如開(kāi)發(fā)者安全意識(shí)薄弱沒(méi)有對(duì)用戶的隱私信息進(jìn)行加密處理,而是直接通過(guò)明文的方式存儲(chǔ)于車(chē)主手機(jī)中,黑客只需要用戶手機(jī)進(jìn)行ROOT,理論上可以竊取用戶的全部個(gè)人信息。此外,通過(guò)adb或者monitor查看實(shí)時(shí)打印日志,如果日志的輸出沒(méi)有做好等級(jí)控制,則存在敏感信息(用戶名、密碼等)泄露的風(fēng)險(xiǎn)。另外,為了保證數(shù)據(jù)的隱私和機(jī)密性往往對(duì)數(shù)據(jù)進(jìn)行加密處理,密鑰的安全存儲(chǔ)至關(guān)重要,如果密鑰被泄露,加密數(shù)據(jù)的安全性將蕩然無(wú)存。數(shù)據(jù)安全面臨的安全風(fēng)險(xiǎn)主要包括Shared Preference數(shù)據(jù)明文存儲(chǔ)風(fēng)險(xiǎn)、SQLite數(shù)據(jù)明文存儲(chǔ)風(fēng)險(xiǎn)、Logcat日志數(shù)據(jù)泄露風(fēng)險(xiǎn)和硬編碼風(fēng)險(xiǎn)。
車(chē)聯(lián)網(wǎng)移動(dòng)APP與TSP進(jìn)行通信的過(guò)程中,大量用戶隱私信息被傳遞,如果數(shù)據(jù)傳輸過(guò)程中沒(méi)有對(duì)關(guān)鍵數(shù)據(jù)流量進(jìn)行加密處理,則容易造成車(chē)輛或者用戶隱私信息的泄露。此外,V2X通信過(guò)程中會(huì)傳遞大量的汽車(chē)遠(yuǎn)程控制信息,如車(chē)-人通信過(guò)程中用戶通過(guò)車(chē)聯(lián)網(wǎng)移動(dòng)APP遠(yuǎn)程操控汽車(chē),在此過(guò)程中如果未對(duì)通信雙方身份進(jìn)行認(rèn)證,攻擊者可以對(duì)通信報(bào)文進(jìn)行劫持和篡改,對(duì)偽造的通信報(bào)文進(jìn)行重放攻擊[3],以達(dá)到操縱車(chē)輛的目的,對(duì)駕駛員的生命安全造成嚴(yán)重威脅。另外,攻擊者可以通過(guò)對(duì)車(chē)輛進(jìn)行大量的重復(fù)試驗(yàn),以此獲得通信協(xié)議的相關(guān)先驗(yàn)知識(shí),進(jìn)而通過(guò)偽造汽車(chē)遠(yuǎn)程控制報(bào)文的方式對(duì)車(chē)輛發(fā)起攻擊[4]。通信安全威脅主要包括不安全的通信協(xié)議、不安全的身份驗(yàn)證、關(guān)鍵數(shù)據(jù)未加密等。
此部分安全風(fēng)險(xiǎn)主要是指開(kāi)發(fā)者沒(méi)有嚴(yán)格地按照移動(dòng)應(yīng)用開(kāi)發(fā)準(zhǔn)則進(jìn)行開(kāi)發(fā),對(duì)車(chē)聯(lián)網(wǎng)移動(dòng)APP的業(yè)務(wù)邏輯、功能模塊處理不當(dāng),主要包含身份鑒別風(fēng)險(xiǎn),例如任意用戶登錄風(fēng)險(xiǎn)、登錄密碼爆破風(fēng)險(xiǎn)、賬號(hào)注銷(xiāo)安全風(fēng)險(xiǎn)等;驗(yàn)證碼機(jī)制風(fēng)險(xiǎn),例如:驗(yàn)證碼爆破風(fēng)險(xiǎn)、驗(yàn)證碼回顯風(fēng)險(xiǎn)、驗(yàn)證碼無(wú)限發(fā)送風(fēng)險(xiǎn)等;支付機(jī)制風(fēng)險(xiǎn),例如支付金額篡改風(fēng)險(xiǎn)、商品數(shù)量篡改風(fēng)險(xiǎn);遠(yuǎn)程控制風(fēng)險(xiǎn),例如汽車(chē)控制指令篡改風(fēng)險(xiǎn)、汽車(chē)控制指令重放風(fēng)險(xiǎn);通用型Web漏洞風(fēng)險(xiǎn),例如SQL注入漏洞、XSS漏洞、越權(quán)訪問(wèn)等。
車(chē)聯(lián)網(wǎng)移動(dòng)APP作為與汽車(chē)交互的主要入口之一,如果車(chē)聯(lián)網(wǎng)移動(dòng)APP出現(xiàn)信息安全問(wèn)題,將會(huì)給汽車(chē)造成難以估量的安全威脅,如何保證車(chē)聯(lián)網(wǎng)移動(dòng)APP產(chǎn)品的信息安全至關(guān)重要。通過(guò)對(duì)當(dāng)前車(chē)聯(lián)網(wǎng)移動(dòng)APP的安全現(xiàn)狀進(jìn)行了深入研究:針對(duì)市場(chǎng)上已經(jīng)發(fā)布的、活躍度較高的40款車(chē)聯(lián)網(wǎng)APP(Android版)綜合運(yùn)用滲透測(cè)試、逆向分析等方式,分別從客戶端安全、數(shù)據(jù)安全、通信安全、業(yè)務(wù)安全等4個(gè)方面對(duì)客戶端軟件及通信鏈路安全性進(jìn)行全方位深層次的安全測(cè)試,最后對(duì)測(cè)試結(jié)果進(jìn)行歸納統(tǒng)計(jì)與分析,評(píng)估當(dāng)前汽車(chē)行業(yè)車(chē)聯(lián)網(wǎng)移動(dòng)APP的信息安全水平。
如圖2所示,從安全漏洞數(shù)量來(lái)看,40款車(chē)聯(lián)網(wǎng)移動(dòng)APP都存在不同數(shù)量的安全漏洞,平均每款A(yù)PP含有的安全漏洞數(shù)量為3.3個(gè),APP_21出現(xiàn)的安全漏洞數(shù)量更是達(dá)到10個(gè)。

圖2 APP安全漏洞數(shù)量統(tǒng)計(jì)
2.2 安全漏洞類(lèi)型數(shù)量統(tǒng)計(jì)
如圖3和圖4所示,任意備份漏洞、敏感信息明文存儲(chǔ)、短信重放攻擊3種安全漏洞類(lèi)型出現(xiàn)的次數(shù)較多。其中,任意備份安全漏洞出現(xiàn)次數(shù)最多,達(dá)到22次,占比高達(dá)16.3%。

圖3 不同安全漏洞類(lèi)型出現(xiàn)次數(shù)統(tǒng)計(jì)

圖4 不同安全漏洞類(lèi)型出現(xiàn)次數(shù)占比統(tǒng)計(jì)
按照漏洞的利用方式、影響范圍、攻擊后果等情況,可以將漏洞分為低危、中危、高危、嚴(yán)重共4種危害等級(jí)。對(duì)40款移動(dòng)APP安全漏洞的危害等級(jí)統(tǒng)計(jì)結(jié)果如圖5所示。總體安全漏洞類(lèi)型以中危、低危為主,其中低危漏洞出現(xiàn)的次數(shù)最多,達(dá)到59次,占比43.7%;中危漏洞出現(xiàn)的次數(shù)次之,為58次,占比43.0%;高危漏洞出現(xiàn)次數(shù)為17次,占比12.6%;嚴(yán)重漏洞出現(xiàn)次數(shù)最少,為1次,占比0.7%。

圖5 不同危害等級(jí)安全漏洞數(shù)量及出現(xiàn)次數(shù)占比統(tǒng)計(jì)
APP進(jìn)行安全加固可有效阻止反匯編分析,防止被破解、二次打包、惡意篡改等,是維護(hù)APP安全的重要防護(hù)手段。如表1所示,40款網(wǎng)聯(lián)汽車(chē)APP中,有七成左右的APP進(jìn)行了安全加固處理,仍有近三成的APP未進(jìn)行安全加固。

表1 加固方式統(tǒng)計(jì)
通過(guò)對(duì)以上測(cè)試結(jié)果的分析發(fā)現(xiàn),每款車(chē)聯(lián)網(wǎng)移動(dòng)APP都存在不同程度的安全問(wèn)題。安全水平參差不齊,每款移動(dòng)APP存在的安全漏洞數(shù)量、類(lèi)型不同,危害程度也不盡相同,主要以中低危安全漏洞為主。此外,仍有10款A(yù)PP未做加固防護(hù)處理。汽車(chē)行業(yè)車(chē)聯(lián)網(wǎng)移動(dòng)APP安全現(xiàn)狀整體令人擔(dān)憂。
隨著車(chē)聯(lián)網(wǎng)進(jìn)程的不斷推進(jìn),智能網(wǎng)聯(lián)汽車(chē)將持續(xù)向網(wǎng)聯(lián)化和智能化互融協(xié)同發(fā)展,車(chē)聯(lián)網(wǎng)移動(dòng)APP作為其外部生態(tài)重要的接入點(diǎn)之一,未來(lái)應(yīng)用場(chǎng)景越來(lái)越廣泛,隨著黑客攻擊手段不斷更新,面臨著越發(fā)嚴(yán)峻的安全威脅。搭建全方位、多層次縱深防御的安全防護(hù)體系,保證車(chē)聯(lián)網(wǎng)移動(dòng)APP的安全性尤為重要。
如圖6所示,從客戶端安全、數(shù)據(jù)安全、通信安全、業(yè)務(wù)安全等4個(gè)方面對(duì)車(chē)聯(lián)網(wǎng)移動(dòng)APP進(jìn)行安全防護(hù),以提高車(chē)聯(lián)網(wǎng)移動(dòng)APP的信息安全水平。

圖6 車(chē)聯(lián)網(wǎng)移動(dòng)APP安全防護(hù)
移動(dòng)應(yīng)用往往基于通用架構(gòu)進(jìn)行開(kāi)發(fā)設(shè)計(jì),安全逆向技術(shù)成熟,常成為攻擊者進(jìn)行協(xié)議分析和發(fā)起網(wǎng)絡(luò)攻擊的突破口。在應(yīng)用正式發(fā)布之前,對(duì)主配文件Android Manifest.xml進(jìn)行合理地配置,關(guān)閉Debuggable、allowBackup屬性,同時(shí)關(guān)閉不需要與外界進(jìn)行數(shù)據(jù)交互組件的exported屬性,防止因?yàn)椴缓侠淼嘏渲茫斐梢苿?dòng)應(yīng)用安全風(fēng)險(xiǎn)。同時(shí),與國(guó)內(nèi)外專業(yè)安全公司開(kāi)展合作,通過(guò)代碼混淆、字符串加密、變量名數(shù)字化、反調(diào)試等方式對(duì)車(chē)聯(lián)網(wǎng)移動(dòng)APP進(jìn)行安全加固,防止移動(dòng)應(yīng)用被惡意破解、二次打包、逆向分析等。此外,在應(yīng)用發(fā)布之前,邀請(qǐng)安全團(tuán)隊(duì)對(duì)車(chē)聯(lián)網(wǎng)移動(dòng)APP開(kāi)展安全滲透測(cè)試,尋找漏洞并進(jìn)行修復(fù),借助安全廠商的力量提升車(chē)聯(lián)網(wǎng)移動(dòng)APP的安全。
車(chē)聯(lián)網(wǎng)環(huán)境中的車(chē)輛不再是一個(gè)獨(dú)立的機(jī)械個(gè)體,而是借助各種通信手段和對(duì)外接口實(shí)現(xiàn)與外部終端進(jìn)行數(shù)據(jù)交互。因此保證車(chē)聯(lián)網(wǎng)移動(dòng)APP自身安全以及提供安全可靠的對(duì)外通信策略對(duì)車(chē)輛與外部終端的連接和通信安全至關(guān)重要。
在車(chē)聯(lián)網(wǎng)移動(dòng)APP與TSP服務(wù)平臺(tái)通信的過(guò)程中,使用HTTPS的安全通信協(xié)議,增加攻擊者竊聽(tīng)破解的難度,同時(shí)使用基于公鑰架構(gòu)(Public Key Infrastructure,PKI)[5]的身份認(rèn)證機(jī)制在每次通信時(shí)對(duì)車(chē)聯(lián)網(wǎng)移動(dòng)APP與TSP服務(wù)平臺(tái)進(jìn)行雙向認(rèn)證,保證通信雙方的合法性。此外,在通信的過(guò)程中對(duì)關(guān)鍵數(shù)據(jù)流量進(jìn)行加密處理,防止中間人攻擊和重放攻擊。
車(chē)聯(lián)網(wǎng)移動(dòng)APP在使用的過(guò)程中,會(huì)在本地手機(jī)端存儲(chǔ)部分用戶敏感信息,例如手機(jī)號(hào)、登錄密碼、車(chē)輛Vin碼等。采用加密的方式對(duì)移動(dòng)端的文件、數(shù)據(jù)庫(kù)等多種格式數(shù)據(jù)內(nèi)容進(jìn)行安全存儲(chǔ),以免數(shù)據(jù)在移動(dòng)終端存儲(chǔ)不當(dāng)造成數(shù)據(jù)泄露。同時(shí),防止密鑰被泄露,避免將密鑰硬編碼到代碼中,采用密鑰分散技術(shù)和白盒密鑰加密技術(shù),提高密鑰的安全性。
開(kāi)發(fā)者應(yīng)遵循移動(dòng)應(yīng)用的安全開(kāi)發(fā)流程以及安全開(kāi)發(fā)規(guī)范,將安全意識(shí)融入到軟件開(kāi)發(fā)生命周期的每個(gè)階段。同時(shí),開(kāi)發(fā)人員應(yīng)積極參加軟件安全開(kāi)發(fā)生命周期(S-SDLC)[6-7]培訓(xùn),強(qiáng)化開(kāi)發(fā)者的安全開(kāi)發(fā)意識(shí),嚴(yán)格按照安全開(kāi)發(fā)規(guī)范進(jìn)行開(kāi)發(fā)。
文中首先分析了車(chē)聯(lián)網(wǎng)體系中車(chē)聯(lián)網(wǎng)移動(dòng)APP所面臨的安全威脅。然后對(duì)40款車(chē)聯(lián)網(wǎng)移動(dòng)APP進(jìn)行全方位的信息安全測(cè)試,對(duì)測(cè)試結(jié)果進(jìn)行分析與總結(jié),評(píng)估當(dāng)前汽車(chē)行業(yè)車(chē)聯(lián)網(wǎng)移動(dòng)APP的信息安全水平。最后給出了車(chē)聯(lián)網(wǎng)移動(dòng)APP的安全防護(hù)策略。