近幾年,,隨著云和物聯(lián)網(wǎng)技術(shù)的快速發(fā)展,汽車領(lǐng)域也發(fā)生著深刻的變革,。各廠商為汽車提供了更加智能化的功能,,如手機(jī)鑰匙、語音控制和尋車等,,但是隨之而來的安全問題也更為突出,。例如在電影《速度與激情 8》中,黑客可以在任意地點(diǎn)觸發(fā)攻擊,,惡意控制大量汽車在街道上肆意橫行,。作為觀眾的我們不經(jīng)產(chǎn)生一個(gè)疑問:這種遠(yuǎn)程遙控汽車是導(dǎo)演的天馬行空,還是真實(shí)存在于現(xiàn)實(shí)世界中,?為了解答這個(gè)問題,,本文將揭示針對(duì)智能網(wǎng)聯(lián)汽車的新型攻擊范式,以 2 個(gè)真實(shí)案例進(jìn)行分析,,并提出緩解措施,。
一、車聯(lián)網(wǎng)架構(gòu)和安全特性
1. 車聯(lián)網(wǎng)架構(gòu)
隨著萬物互聯(lián)時(shí)代到來,,車聯(lián)網(wǎng)已經(jīng)廣泛應(yīng)用于現(xiàn)代車輛,。基于云,、5G 和消息隊(duì)列通信等技術(shù),,智能網(wǎng)聯(lián)汽車具備手機(jī)鑰匙、語音控制和智慧投屏等功能,。例如,,用戶即使沒有帶鑰匙,也可以通過手機(jī)控制車門和車窗,,這些智能化功能方便了人們的生活和出行,。作為支撐汽車智能化的技術(shù)架構(gòu)如圖 1 所示,,“用戶<->云<->汽車”,用戶利用手機(jī)應(yīng)用程序,,通過藍(lán)牙和 Wi-Fi 等近場(chǎng)通信協(xié)議與車載通信模塊(T-Box)和中控主機(jī)進(jìn)行數(shù)據(jù)交互,,實(shí)現(xiàn)智慧投屏等功能?;蛘咄ㄟ^蜂窩網(wǎng)絡(luò)與云側(cè)通信,,以此突破地理的限制。云側(cè)則與車載T-Box 進(jìn)行數(shù)據(jù)交互,,采用機(jī)器對(duì)機(jī)器(Machine toMachine,,M2M)技術(shù)通信模式,維持雙工通信隧道,,以此增加時(shí)效性,。
圖 1 車聯(lián)網(wǎng)架構(gòu)
2. 車聯(lián)網(wǎng)安全特性
與此同時(shí),車輛豐富的功能和通信方式也讓其智能化“外溢”,,產(chǎn)生了新的安全風(fēng)險(xiǎn),,增加了更多的攻擊面,近場(chǎng)無線通信的汽車終端或者在互聯(lián)網(wǎng)種的云平臺(tái)都成為攻擊者的目標(biāo),。車聯(lián)網(wǎng)安全可分為空間和時(shí)間兩條線,。
空間上,依照車聯(lián)網(wǎng)架構(gòu)可以分為用戶側(cè),、云側(cè)和車側(cè)安全,。
用戶側(cè)安全。 智能網(wǎng)聯(lián)汽車提供了豐富的交互功能,,這對(duì)于用戶而言,,主要通以手機(jī)應(yīng)用作為交互對(duì)象,這就可能存在 App 安全問題,,例如,,個(gè)人隱私泄露、二次打包和登錄驗(yàn)證缺陷等漏洞,。
云側(cè)安全,。云技術(shù)的使用增強(qiáng)智能網(wǎng)聯(lián)汽車適用范圍,讓查找車的位置和遠(yuǎn)程開啟空調(diào)等功能成為可能,。但云平臺(tái)也存在各類安全問題,,比如傳統(tǒng)的 Web 安全問題,SQL 注入,、XSS 漏洞和邏輯漏洞等,也會(huì)增加安全風(fēng)險(xiǎn),,攻擊者只需通過云側(cè)問題攻擊車輛,,降低了攻擊成本,,增加了攻擊范圍。
車側(cè)安全,。智能網(wǎng)聯(lián)汽車包括各類終端,,如T-Box、中控主機(jī)和行車記錄儀等,。終端包含了豐富通信方式,,也存在各類安全風(fēng)險(xiǎn),比如命令執(zhí)行和緩沖區(qū)溢出等漏洞,。
時(shí)間上,, 從攻擊者的角度審視汽車技術(shù)變革對(duì)車聯(lián)網(wǎng)安全帶來的影響,可將汽車技術(shù)的發(fā)展分為以下三個(gè)階段:
傳統(tǒng)汽車,。其影音娛樂系統(tǒng)智能化程度不高,,攻擊者一般通過影音娛樂系統(tǒng)的 USB 接口和車載OBD 接口作為攻擊點(diǎn),這種攻擊方式通常需要攻擊者物理接觸汽車,。
智能網(wǎng)聯(lián)汽車,。為了方便用戶的使用,汽車采用 WiFi,、藍(lán)牙和蜂窩網(wǎng)絡(luò)等通信方式,,加強(qiáng)與用戶的交互,并且增加了中控和 T-Box 等計(jì)算單元,。對(duì)于攻擊來說,,攻擊面進(jìn)一步擴(kuò)大,可以通過近場(chǎng)無線或遠(yuǎn)程的方式進(jìn)行攻擊,。
自動(dòng)駕駛,。自動(dòng)駕駛技術(shù)的發(fā)展打破了機(jī)械控制的隔離,可以通過 CAN 總線或者以太網(wǎng)等通信方式來控制油門等,,讓攻擊者有了操控汽車的技術(shù)可能性,。
汽車作為復(fù)雜系統(tǒng)的集合,自身各種 ECU 通過 CAN 總線串連起來,,隨著汽車智能化發(fā)展,,車載以太網(wǎng)也被用于車內(nèi)設(shè)備間通信技術(shù),比如特斯拉的車身,,包含有以太網(wǎng)和各種CAN 總線,,通過車載網(wǎng)關(guān)讓各種網(wǎng)絡(luò)技術(shù)進(jìn)行通信。因此,,對(duì)于攻擊者來說,,攻擊向量主要是通過車聯(lián)網(wǎng)終端,再進(jìn)一步滲透車輛內(nèi)部網(wǎng)絡(luò),,形成完整的攻擊鏈,。綜上所述,,智能網(wǎng)聯(lián)汽車存在被遠(yuǎn)程遙控的可能性,這也回復(fù)了本文開篇提出的問題,。
二,、“空中跳躍”攻擊范式
通過對(duì)車聯(lián)網(wǎng)架構(gòu)研究可以看出,遠(yuǎn)程遙控汽車在技術(shù)上存在可能性,。隨著汽車功能業(yè)務(wù)邏輯逐漸向云轉(zhuǎn)移,,與云結(jié)合的安全問題日益突出。以往的研究大多是將云和設(shè)備的問題分割開來獨(dú)立分析,,忽略了車側(cè)和云側(cè)之間的相互影響,。下文將揭示車聯(lián)網(wǎng)安全中的新型攻擊范式——“空中跳躍”,展示攻擊者如何遠(yuǎn)程攻擊或控制汽車,。
1. 消息隊(duì)列協(xié)議通信
在智能網(wǎng)聯(lián)車應(yīng)用中,,大量采用消息隊(duì)列通信技術(shù),比如消息通知,、遠(yuǎn)程控制,、位置推送和 OTA 更新等。消息隊(duì)列協(xié)議允許應(yīng)用程序通過云端服務(wù)中轉(zhuǎn)通信,,并且消息隊(duì)列會(huì)在應(yīng)用程序未連接的時(shí)候臨時(shí)存儲(chǔ)消息,,等待設(shè)備在線后發(fā)送,以保證設(shè)備不在線時(shí)消息數(shù)據(jù)不丟失,。常見的消息隊(duì)列協(xié)議包括 MQTT,、AMQP、STOMP 等,。由于 MQTT 協(xié)議輕量級(jí)的特點(diǎn),,在車聯(lián)網(wǎng)領(lǐng)域有著廣泛的應(yīng)用場(chǎng)景。
消息隊(duì)列協(xié)議通常為三方通信協(xié)議,。首先,,消息的訂閱者向消息隊(duì)列服務(wù)訂閱消息,告訴服務(wù)自己感興趣的消息主題,,消息隊(duì)列服務(wù)會(huì)監(jiān)聽并等待接收該主題所對(duì)應(yīng)的消息,;之后,消息的發(fā)布者將該主題所對(duì)應(yīng)的消息發(fā)布至消息隊(duì)列服務(wù),;最后,,消息隊(duì)列服務(wù)會(huì)根據(jù)消息主題,將此消息轉(zhuǎn)發(fā)至對(duì)應(yīng)的訂閱者,,訂閱者收到消息,,解析并處理。
2. “空中跳躍”攻擊范式
在這個(gè)應(yīng)用場(chǎng)景中,存在一種結(jié)合云和設(shè)備(車)的攻擊范式——“空中跳躍”攻擊,,如圖 2 所示,。車與消息隊(duì)列服務(wù)進(jìn)行通信,,如果攻擊者通過逆向工程等方法獲取憑證,,或者云存在安全缺陷,就可以遠(yuǎn)程接入消息隊(duì)列服務(wù),,具備了對(duì)車發(fā)送消息的能力,。如果汽車存在消息解析漏洞,攻擊者就可以通過云這個(gè)“跳板”攻擊車載終端,,利用漏洞獲取車載終端控制權(quán),,進(jìn)而發(fā)送 CAN 信號(hào)來控制汽車。該攻擊范式涉及云側(cè)和車側(cè)的安全問題,,對(duì)于攻擊者而言只是發(fā)送一條惡意消息,,即可遠(yuǎn)程控制汽車。該攻擊范式按照攻擊流程可分為 4 個(gè)攻擊步驟 : 接入服務(wù)(S1),、越權(quán)發(fā)布消息(S2),、漏洞利用(S3)和 CAN 控制(S4)。
圖 2 新型攻擊范式
S1:接入服務(wù),?!翱罩刑S”攻擊首先需要攻擊者接入消息隊(duì)列服務(wù),讓其具備連接云服務(wù)的能力,。通過研究發(fā)現(xiàn),,在 M2M 模型中,由于缺乏用戶的介入,,云側(cè)對(duì)設(shè)備側(cè)的認(rèn)證邏輯在實(shí)現(xiàn)過程中易產(chǎn)生安全問題,。攻擊者可以通過以下方法,獲取認(rèn)證憑證,,進(jìn)而連接到云側(cè)的消息隊(duì)列服務(wù)中,。
匿名訪問。一些消息隊(duì)列服務(wù)端軟件支持匿名訪問,,允許用戶通過空的用戶名和密碼接入服務(wù),。
暴力破解。對(duì)于消息隊(duì)列服務(wù)而言,,認(rèn)證往往是采用用戶名和口令的方式進(jìn)行,,安全意識(shí)較弱的管理員可能會(huì)使用弱口令,這就給攻擊者提供了條件,,進(jìn)行暴力破解來猜解出用戶名和口令,。
憑證硬編碼。因?yàn)檐囕d終端 M2M 模式的原因,開發(fā)者為了簡(jiǎn)化認(rèn)證的流程,,可能采用硬編碼的方式,,將消息隊(duì)列服務(wù)的認(rèn)證憑證寫入設(shè)備和移動(dòng)應(yīng)用程序中,并在同類型的產(chǎn)品共享,,讓攻擊者以較低的成本獲取接入憑證,。
復(fù)現(xiàn)邏輯。對(duì)于使用了動(dòng)態(tài)憑證進(jìn)行認(rèn)證的目標(biāo),,一旦攻擊者獲取了設(shè)備固件或 App,,就可以通過逆向分析的方法獲取認(rèn)證邏輯,復(fù)現(xiàn)認(rèn)證過程以接入消息隊(duì)列服務(wù),。
S2:越權(quán)發(fā)布消息,。在通過認(rèn)證后,消息隊(duì)列服務(wù)可能會(huì)對(duì)用戶的權(quán)限進(jìn)行限制,,防止攻擊者向非授權(quán)的設(shè)備發(fā)布消息,。因此,攻擊者需要測(cè)試發(fā)布權(quán)限,,若存在缺陷則可以對(duì)任意車輛,,甚至所有車輛發(fā)送惡意消息。
S3:漏洞利用,。上述兩個(gè)攻擊步驟,,主要是云側(cè)的安全問題。對(duì)于車而言,,我們提出了漏洞利用的攻擊步驟,。攻擊者可以通過獲取的設(shè)備固件進(jìn)行逆向分析,或者利用模糊測(cè)試,、靜態(tài)分析等方法去挖掘設(shè)備在消息解析時(shí)的漏洞,。然后攻擊者就可以通過消息隊(duì)列的跳板作用,將惡意的消息轉(zhuǎn)發(fā)給指定的目標(biāo)設(shè)備觸發(fā)漏洞,,達(dá)到對(duì)智能網(wǎng)聯(lián)汽車遠(yuǎn)程攻擊的效果,。
S4:CAN 控制。攻擊者通過前序攻擊步驟獲取終端的控制權(quán)限,,并通過逆向工程獲取發(fā)送 CAN信號(hào)能力,,進(jìn)而控制或攻擊汽車。
三,、案例分析
“空中跳躍”攻擊范式主要有 2 種攻擊向量:遠(yuǎn)程漏洞利用和遠(yuǎn)程操控復(fù)現(xiàn),。
1. 遠(yuǎn)程漏洞利用
該攻擊向量的前提是與訂閱設(shè)備通信的消息隊(duì)列服務(wù)可遠(yuǎn)程訪問。由于服務(wù)的身份驗(yàn)證和授權(quán)薄弱,,攻擊者可以將惡意消息發(fā)布到消息隊(duì)列服務(wù),,以此結(jié)合云側(cè)和車側(cè)的漏洞實(shí)現(xiàn)完整的攻擊鏈,控制汽車甚至攻擊行駛中車輛。
某品牌汽車通過消息隊(duì)列協(xié)議實(shí)現(xiàn)了定位推送功能,。通過 App 逆向發(fā)現(xiàn),,該品牌汽車云側(cè)存在未認(rèn)證和未授權(quán)安全問題,因此具備 S1+S2 的攻擊條件,,并且該車終端解析消息邏輯存在漏洞,,可以通過遠(yuǎn)程獲取汽車中控主機(jī) Root Shell,進(jìn)一步發(fā)送CAN 信號(hào)控制汽車,。
攻擊鏈:S1+S2+S3+S4
攻擊條件:攻擊者可以在任意地點(diǎn)接入互聯(lián)網(wǎng),。
攻擊效果:獲取任意激活車輛中控 Root Shell,,接入車 CAN 網(wǎng)絡(luò)進(jìn)行汽車控制,。
2. 遠(yuǎn)程操控復(fù)現(xiàn)
在這種類型的攻擊向量中,盡管沒有發(fā)現(xiàn)設(shè)備固件中消息解析邏輯漏洞,,但攻擊者可以利用消息隊(duì)列服務(wù)的認(rèn)證缺陷,,逆向消息格式,通過正常功能消息來操縱汽車,。
某品牌新能源汽車具備 App 遠(yuǎn)程控制汽車功能,。汽車的所有者可以通過手機(jī) App 遠(yuǎn)程控制汽車打開(關(guān)閉)車門,打開(關(guān)閉)車窗等操作,。該功能是通過消息隊(duì)列協(xié)議實(shí)現(xiàn)的,。我們通過逆向手機(jī)App,發(fā)現(xiàn)了硬編碼憑證的問題,,獲取了高權(quán)限的認(rèn)證憑據(jù),,并成功連接到消息隊(duì)列服務(wù)。由于該硬編碼賬號(hào)權(quán)限較高,,這使攻擊者可以將操縱消息發(fā)布到連接到服務(wù)的任何汽車上,,控制打開車門進(jìn)入汽車,并啟動(dòng)汽車開走,。
攻擊鏈:S1+S2
攻擊條件:攻擊者可以在任意地點(diǎn)接入互聯(lián)網(wǎng),。
攻擊效果:操控任意激活車輛車門和車窗等功能,甚至可以直接開走,。
四,、緩解措施
針對(duì)消息隊(duì)列協(xié)議在車聯(lián)網(wǎng)領(lǐng)域應(yīng)用存在的安全問題,建議有 3 個(gè)緩解措施來應(yīng)對(duì),,分別從車側(cè)到云側(cè)層層遞進(jìn),,提高安全能力。
混合的身份驗(yàn)證,。MQTT 協(xié)議規(guī)范中沒有提供可靠的身份驗(yàn)證機(jī)制,。無論使用哪種身份驗(yàn)證方法,攻擊者都可以始終使用自己設(shè)備的賬戶與消息隊(duì)列服務(wù)建立連接。但是仍然有必要根據(jù)以下考慮采取復(fù)雜的身份驗(yàn)證措施,,通過動(dòng)態(tài)申請(qǐng)獲取身份驗(yàn)證信息,。一方面,它可以阻止攻擊者輕松獲取憑據(jù),,增加攻擊成本,。另一方面,有助于消息隊(duì)列服務(wù)隔離用戶權(quán)限,。例如在與用戶綁定之后,,設(shè)備可以使用賬戶的信息作為秘鑰來生成證書,因?yàn)樵撔畔⒉粫?huì)硬編碼到固件中,,靜態(tài)的分析方法無法輕松獲取敏感信息,。
設(shè)備和用戶的緊密耦合授權(quán)。實(shí)際上,,我們的攻擊范式所涉及的問題主要是由權(quán)限隔離不嚴(yán)造成的,,這為未經(jīng)授權(quán)的攻擊者提供了發(fā)起大規(guī)模攻擊的條件。我們可以采用設(shè)備和用戶的緊密耦合授權(quán),,一旦用戶將設(shè)備添加到應(yīng)用程序或云平臺(tái)上的賬戶上,,服務(wù)應(yīng)將用戶身份識(shí)別信息與設(shè)備端 ClientId 或Username 綁定。這樣,,由于緊密耦合的授權(quán),,使用其他 ClientId 或 Username 的攻擊者無法將消息發(fā)布到此設(shè)備。盡管大多數(shù)公共物聯(lián)網(wǎng)云平臺(tái)已采用此措施,,但許多制造商仍在其私有消息隊(duì)列服務(wù)中忽略此問題,。
空中攻擊檢測(cè)?;趯?duì)服務(wù)的信任,,訂閱者很少檢查收到的消息。同時(shí),,消息隊(duì)列服務(wù)僅按照發(fā)布者的主題轉(zhuǎn)發(fā),,因此它也不會(huì)檢查或修改消息。這使得攻擊有效載荷可以不受任何限制地傳遞給訂閱者,。本文提出一種解決方案是添加如 Web 應(yīng)用程序防火墻之類的消息數(shù)據(jù)過濾模塊,,以檢測(cè)從攻擊者發(fā)布的消息中可能攜帶的攻擊載荷。