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