作者 |田錚上海控安可信軟件創(chuàng)新研究院項(xiàng)目經(jīng)理
來源 |鑒源實(shí)驗(yàn)室
社群 |添加微信號(hào)“TICPShanghai”加入“上??匕?1fusa安全社區(qū)”
引言:汽車信息安全事件頻發(fā)使得汽車行業(yè)安全態(tài)勢(shì)愈發(fā)緊張。這些汽車網(wǎng)絡(luò)安全攻擊事件,輕則給企業(yè)產(chǎn)品發(fā)布及產(chǎn)品口碑造成影響,重則導(dǎo)致大范圍的汽車召回或股價(jià)受損,造成的經(jīng)濟(jì)損失和安全代價(jià)不可估量。本文則選取典型的智能網(wǎng)聯(lián)汽車網(wǎng)絡(luò)安全攻擊實(shí)例展開詳細(xì)介紹。
01
汽車信息安全威脅
隨著汽車不斷向智能化、網(wǎng)聯(lián)化、電動(dòng)化、自動(dòng)化的發(fā)展,軟件定義汽車的趨勢(shì)日益顯著。目前智能網(wǎng)聯(lián)汽車關(guān)鍵代碼規(guī)模提升了10-100倍,代碼漏洞呈指數(shù)級(jí)增長(zhǎng),同時(shí)汽車電子控制單元(ECU)的數(shù)量和車內(nèi)連通性不斷增長(zhǎng),導(dǎo)致汽車受到信息安全攻擊的風(fēng)險(xiǎn)大大增加。
近年來頻發(fā)的汽車信息安全事件加劇了社會(huì)各界對(duì)于智能汽車發(fā)展前景的擔(dān)憂。比如2015年美國(guó)黑帽大會(huì),研究人員通過車載娛樂系統(tǒng)發(fā)動(dòng)偽裝攻擊,成功入侵Jeep Cherokee遠(yuǎn)程獲取汽車的關(guān)鍵功能操作權(quán)限 [1]。這次事件直接導(dǎo)致克萊斯勒公司在全球召回140萬輛汽車,也促使汽車工業(yè)界更加嚴(yán)肅看待智能汽車面臨的信息安全風(fēng)險(xiǎn)。
在此之后,汽車行業(yè)積極應(yīng)對(duì)信息安全挑戰(zhàn),但搭載了先進(jìn)信息通信技術(shù)的新款智能網(wǎng)聯(lián)汽車同樣無法完全回避網(wǎng)絡(luò)攻擊的威脅。例如,騰訊科恩實(shí)驗(yàn)室分別在2016年[2]、2017年[3]兩次攻擊特斯拉實(shí)現(xiàn)對(duì)車輛的無物理接觸遠(yuǎn)程攻擊,利用內(nèi)核、瀏覽器、MCU固件、UDS協(xié)議及OTA更新過程中的多個(gè)高危安全漏洞,攻入到特斯拉汽車的CID、IC、網(wǎng)關(guān)以及自動(dòng)駕駛模塊,隨后將其發(fā)現(xiàn)的安全漏洞交與特斯拉。2019年[4-5],騰訊科恩實(shí)驗(yàn)室在多款寶馬自動(dòng)駕駛汽車上展示了利用車載信息娛樂系統(tǒng)和車載信息通信終端的漏洞遠(yuǎn)程無線入侵汽車,并進(jìn)一步利用中央網(wǎng)關(guān)的安全缺陷實(shí)現(xiàn)向內(nèi)部核心CAN總線注入惡意消息,獲取了底層安全關(guān)鍵車內(nèi)網(wǎng)絡(luò)的控制權(quán)。2020年[6],360 Sky-Go團(tuán)隊(duì)針對(duì)梅賽德斯奔馳的車載娛樂主機(jī)、車載通訊模塊、車聯(lián)網(wǎng)通信協(xié)議及后端服務(wù)等聯(lián)網(wǎng)模塊,發(fā)現(xiàn)19個(gè)安全漏洞并利用漏洞形成攻擊鏈路,預(yù)計(jì)影響200余萬輛梅賽德斯奔馳汽車。類似這樣的“白帽黑客”式策略一直在汽車安全業(yè)內(nèi)上演,以尋找、提交汽車的安全漏洞甚至修復(fù)漏洞。
02
攻擊案例分析
2.1 攻擊安利介紹
2016 年[2],科恩實(shí)驗(yàn)室成功利用多個(gè)高危安全漏洞對(duì)特斯拉實(shí)施了無物理接觸遠(yuǎn)程攻擊,實(shí)現(xiàn)了對(duì)特斯拉駐車狀態(tài)下汽車天窗、轉(zhuǎn)向燈、座椅、顯示器、門鎖系統(tǒng)的遠(yuǎn)程控制,以及行駛狀態(tài)下對(duì)雨刷、后備箱、剎車系統(tǒng)的遠(yuǎn)程控制??贫鲗?shí)驗(yàn)室是通過無線(Wi-Fi/蜂窩)進(jìn)入,破壞許多車載系統(tǒng),如 CID(Center Information Display,中控顯示系統(tǒng))、IC(Instrument Cluster,儀表組) 、Parrot(無線及藍(lán)牙模塊)和網(wǎng)關(guān)等,然后將惡意 CAN 消息注入 CAN 總線。這是全球范圍內(nèi)第一次通過安全漏洞成功無物理接觸遠(yuǎn)程攻入特斯拉并實(shí)現(xiàn)任意車身和行車控制。
2.2 案例分析
2.2.1 研究對(duì)象
科恩實(shí)驗(yàn)室成功在特斯拉Model S P85 和 P75 上完成了測(cè)試,對(duì)應(yīng)的車型及版本信息如下圖1和表1所示。
表1 測(cè)試車輛版本信息
2.2.2 攻擊步驟解析
1)攻擊瀏覽器
在攻擊開始前,首先需要確定攻擊面。每輛特斯拉汽車中都有車輛提供的Wi-Fi熱點(diǎn),很多用戶會(huì)將SSID的信息保存在車上以便用于自動(dòng)連接。如果偽造這個(gè)Wi-Fi熱點(diǎn),并將QtCarBrowser的流量重定向到攻擊者的域名,即可實(shí)現(xiàn)遠(yuǎn)程攻擊特斯拉汽車。此外,當(dāng)在蜂窩模式下,通過建立精心設(shè)計(jì)的域名,網(wǎng)絡(luò)釣魚和用戶輸入錯(cuò)誤也會(huì)導(dǎo)致遠(yuǎn)程觸發(fā)瀏覽器漏洞,實(shí)現(xiàn)在沒有物理訪問的情況下遠(yuǎn)程交付漏洞利用。
通過特斯拉瀏覽器的用戶代理可推斷出QtWebkit的版本在2.2.x,該版本的QtWebkit存在許多漏洞。研究者獲取特斯拉CID的QtCarBrowser二進(jìn)制文件后,通過利用瀏覽器的這兩個(gè)漏洞來獲得特斯拉CID的shell,從而實(shí)現(xiàn)任意代碼執(zhí)行。
第一個(gè)漏洞存在于函數(shù)JSArray::sort()中。這個(gè)函數(shù)將在JavaScript代碼中調(diào)用數(shù)組的sort()方法函數(shù)時(shí)被調(diào)用。存在漏洞的函數(shù)代碼片段如圖2所示,如果compareFunction為JSArray::shiftCount(),則m_vector的長(zhǎng)度將被改變,并且整個(gè)m_vector結(jié)構(gòu)將被轉(zhuǎn)移到另一個(gè)地方。然而,局部變量指針存儲(chǔ)仍然指向舊位置,導(dǎo)致內(nèi)存損壞。當(dāng)非移位數(shù)組調(diào)用 sort() 觸發(fā)此問題時(shí),本地指針存儲(chǔ)引用的變量映射始終與新存儲(chǔ)結(jié)構(gòu)的變量 m_length 重疊,導(dǎo)致崩潰。通過利用JSArray::sort()中的漏洞,可獲取JSCell地址。
圖2 易受攻擊的函數(shù)代碼片段
第二個(gè)漏洞則是由科恩實(shí)驗(yàn)室發(fā)現(xiàn)的CVE-2011-3928,可用于內(nèi)存泄漏。如圖3所示,若分配多個(gè) Element 結(jié)構(gòu),在static_cast后,HTMLInputElement的成員m_data將與Element的指針m_next重疊。此外,將第二個(gè)和第三個(gè)Element結(jié)構(gòu)作為子元素插入到同一標(biāo)簽中,m_next和m_data都指向第三個(gè)Element結(jié)構(gòu)。由于m_data指向StringImpl結(jié)構(gòu),且該StringImpl結(jié)構(gòu)與 Element結(jié)構(gòu)重疊。StringImpl結(jié)構(gòu)體的成員m_data始終是固定值1,StringImpl結(jié)構(gòu)體的m_length始終是一個(gè)足夠大的指針,足以讀取整個(gè)內(nèi)存。
圖3 CVE-2011-3928中的漏洞
2)本地權(quán)限升級(jí)
在基于瀏覽器攻擊獲得遠(yuǎn)程shell后,仍無法獲得任意權(quán)限,這就需要另一個(gè)漏洞來從AppArmor中逃脫,并獲得比瀏覽器進(jìn)程上下文更高的權(quán)限。研究者發(fā)現(xiàn),特斯拉上仍存在著名的ARM Linux漏洞CVE-2013-6282(即:內(nèi)核API中缺少訪問檢查)。研究者利用該漏洞,首先修補(bǔ)了setresuid()系統(tǒng)調(diào)用以獲得root權(quán)限,然后調(diào)用reset_security_ops()來禁用AppArmor,實(shí)現(xiàn)了在內(nèi)核上下文中獲得任意讀/寫權(quán)限。
3)未經(jīng)授權(quán)訪問嵌入式系統(tǒng)
在特斯拉Model S上除了CID還有三個(gè)更重要的獨(dú)立嵌入式系統(tǒng),即IC, Parrot和Gateway,如圖4所示。由于網(wǎng)絡(luò)設(shè)計(jì)上的缺陷和缺乏強(qiáng)大的密碼保護(hù),研究者可通過遠(yuǎn)程攻擊獲得這三個(gè)系統(tǒng)的root訪問權(quán)限。
圖4 車載網(wǎng)絡(luò)的重要設(shè)備
·IC
在 CID 中獲得 root 權(quán)限后,研究者可在沒有任何密碼的情況下通過“ssh root@ic”的命令獲取 IC 上的 root 訪問權(quán)限,并通過SSH登錄IC。
此外可實(shí)現(xiàn) CID 和 IC 間的相互訪問。CID包含一個(gè)密鑰輪換方案,每24小時(shí)從母艦接收用戶的隨機(jī)新令牌。CID 會(huì)以明文形式在 IC 的文件系統(tǒng)中設(shè)置密鑰,這意味著即使只能訪問 IC,也可以SSH到CID 并獲得root權(quán)限。
·Parrot
Parrot模塊是一個(gè)第三方模塊,型號(hào)是FC6050W,它集成了無線及藍(lán)牙功能,可通過USB協(xié)議與CID相連。通過掃描Parrot上的開放端口,研究者發(fā)現(xiàn)端口23為Telnet打開。一個(gè)重要漏洞在于Telnet是匿名的,研究者可通過“nc parrot 23”的簡(jiǎn)單命令來訪問和控制Parrot模塊。
·Gateway
Gateway看起來比IC和Parot安全得多。研究者首先利用二進(jìn)制文件gw-diag在端口23上喚醒Gateway的后門,找到Gateway的shell 入口。然后,研究者通過逆向固件來獲得其中的token,獲得Gateway的訪問權(quán)限。
4)ECU編程
通過拆卸CID單元,研究者發(fā)現(xiàn)了與網(wǎng)關(guān)ECU 相連的SD卡中存在一些調(diào)試和升級(jí)相關(guān)的日志文件。這些文件中描述了整個(gè)升級(jí)的詳細(xì)過程,包括將十六進(jìn)制文件發(fā)送到ECU,配置繼電器開關(guān)和其他重要步驟,可通過拆解文件查看到重要的內(nèi)部信息。
對(duì)于更新軟件來說,整個(gè)更新由在內(nèi)存地址0x40006AE4位置的函數(shù)控制。它將首先對(duì)文件進(jìn)行安全檢查并設(shè)置其工作模式,以確保整個(gè)汽車在更新過程中保持物理安全。然后繞過完整性檢查,并將固件刷寫到網(wǎng)關(guān),成功將定制的代碼編程到ECU中,具體操作步驟如下:
①解壓縮release.tgz文件,確保校驗(yàn)和值滿足要求。
②檢查壓縮文件中是否存在manifest文件,并從中獲得該固件包中的版本信息。
③處理程序中每個(gè)“.Hex”文件。將十六進(jìn)制文件轉(zhuǎn)換為二進(jìn)制流,并使用UDS協(xié)議發(fā)送固件。目標(biāo)芯片上的引導(dǎo)加載程序需要將十六進(jìn)制文件寫入flash,并在每次啟動(dòng)時(shí)檢查應(yīng)用程序是否有效。最后檢查固件是否已發(fā)送并編程到目標(biāo)ECU。
④ 處理完所有這些文件后,創(chuàng)建一個(gè)日志,并重新啟動(dòng)。
5)網(wǎng)關(guān)逆向工程和攻擊
在網(wǎng)關(guān)上運(yùn)行的許多重要任務(wù)存在漏洞,這些任務(wù)幾乎可與CAN總線上的ECU進(jìn)行任何類型的通信。研究者可隨時(shí)注入任何 CAN 消息,并使用補(bǔ)丁來阻止一些必要的 CAN 信號(hào),實(shí)現(xiàn)車輛的車身控制,具體攻擊過程包括:
①網(wǎng)關(guān)將20100和20101端口的UDP廣播傳輸?shù)紺AN總線上,研究者可通過偽造UDP信號(hào)來實(shí)現(xiàn)門鎖系統(tǒng)的控制。
②研究者可通過將診斷功能0x01替換為診斷功能0x04,并注入CAN消息,將其發(fā)送到ID為0x45的PT-CAN總線,實(shí)現(xiàn)在汽車運(yùn)行或停止時(shí)打開燈的操作。
③研究者定位到固件中存儲(chǔ)的結(jié)構(gòu)體后,通過更改固件中的目標(biāo)ID來阻止一些重要消息(例如BDY CAN上0x218的ID),實(shí)現(xiàn)在汽車行駛狀態(tài)時(shí)打開后備箱或禁用自動(dòng)鎖定功能。
6)攻擊UDS/CAN總線
統(tǒng)一診斷服務(wù) (UDS) 已編入 ISO-14229 中,并允許診斷控制車載電子控制單元 (ECU) 上的功能。研究者通過將電子穩(wěn)定程序(ESP)設(shè)置為低速診斷編程會(huì)話,利用Bash shell 腳本通過網(wǎng)關(guān)注入 UDS 數(shù)據(jù)幀并低速禁用 ESP ECU,最終導(dǎo)致CAN-CH 總線上沒有任何車速相關(guān)的CAN消息,并且汽車高速行駛時(shí)IC的實(shí)時(shí)速度值無法更新。此外,車輛會(huì)顯示有關(guān)防抱死制動(dòng)系統(tǒng) (ABS) 的警報(bào)信息,引發(fā)轉(zhuǎn)向和制動(dòng)失靈的安全問題。
圖5科恩實(shí)驗(yàn)室制作的CAN控制器
03
總 結(jié)
本文介紹了科恩實(shí)驗(yàn)室在實(shí)現(xiàn)特斯拉Model S遠(yuǎn)程控制的研究中所涉及的漏洞和相關(guān)技術(shù)細(xì)節(jié)。此次安全攻擊事件,是首例利用CAN總線進(jìn)行遠(yuǎn)程攻擊,從而對(duì)特斯拉汽車停車和駕駛模式下進(jìn)行遠(yuǎn)程控制的典型案例。最終,科恩實(shí)驗(yàn)室將研究報(bào)告及漏洞交予特斯拉,特斯拉在10天內(nèi)做出回應(yīng),并利用其OTA 機(jī)制進(jìn)行了瀏覽器、內(nèi)核和ECU固件等方面的漏洞修復(fù)和安全更新,將代碼簽名保護(hù)引入了特斯拉汽車以保護(hù)車載系統(tǒng)。
參考文獻(xiàn)
[1] Charlie Miller,Chris Valasek.Remote exploitation of an unaltered passenger vehicle[C]. Black Hat USA,2015.
[2] Keen Security Lab of Tencent. Free-fall:hacking Tesla from wireless to CAN bus [C]. Black Hat USA,2016.
[3] Keen Security Lab of Tencent. Over-the-air: how we remotely compromised the gateway,BCM,and autopilot ECUs of Tesla cars[C]. Black Hat USA,2017.
[4]Cai Zhiqiang , Wang Aohui , Zhang Wenkai , Gruffke M ,Schweppe H . 0-days & Mitigations: Roadways to Exploit and Secure Connected BMW Cars[C]. Black Hat USA,2019.
[5] Keen Security Lab of Tencent. Experimental Security Assessment of BMW Cars: A Summary Report[EB/OL]. https://keenlab.tencent.com/en/whitepapers/Experimental_Security_Assessment_of_BMW_Cars_by_KeenLab.pdf,2018.
[6] 360 Sky-Go group. Security Research Report on Mercedes-Benz Cars [EB/OL]. https://skygo.360.net/archive/Security-Research-Report-on-Mercedes-Benz-Cars-en.pdf,2020.
審核編輯 黃宇
-
網(wǎng)絡(luò)安全
+關(guān)注
關(guān)注
10文章
3155瀏覽量
59699 -
總線
+關(guān)注
關(guān)注
10文章
2878瀏覽量
88051 -
汽車
+關(guān)注
關(guān)注
13文章
3493瀏覽量
37251
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論