作者:騰訊科恩實驗室

背景介紹

OTA(Over-The-Air)是汽車行業智能網聯變革的核心能力之一。本次Black Hat USA 2018上,騰訊科恩實驗室帶來了2017年對特斯拉具備的先進OTA功能相關的安全研究成果。本成果對于促進汽車行業安全穩定落地智能網聯化具有重大積極作用,同時本次議題也是全球首次涉及對汽車先進駕駛輔助系統(ADAS,特斯拉相關系統名為:Autopolit)的信息安全研究成果披露。更多詳細信息請關注騰訊科恩實驗室官方微信號:KeenSecurityLab,并回復“車聯網安全”即可獲得此次研究技術細節白皮書。

議題概要

騰訊安全科恩實驗室在2016年和2017年,在避免物理接觸汽車的遠程攻擊場景下,連續兩年針對特斯拉Model S和Model X進行了攻擊測試。在去年舉辦的Black Hat USA大會上,科恩實驗室的研究人員介紹了2016年特斯拉公司對其研究成果的致謝中所包含的具體細節,并向與會者展示了一系列Tesla汽車的安全漏洞,獲得了與會者的好評。此外,借助燈光舞蹈秀的形式展示了利用2017年發現的另一批漏洞攻擊的威力,但相關漏洞的細節并未公布。今年,該議題將會進一步介紹2017年彩蛋視頻背后涉及到的技術細節。除了介紹特斯拉的由云端主導的空中升級(OTA)機制,并展示一些攻擊鏈中開發的新技術外,該議題還將著重介紹測試過程中發現的多個嚴重的安全漏洞。

作者簡介

劉令,騰訊科恩實驗室研究員,專注于逆向工程、漏洞挖掘、漏洞研究等技術,多次參與特斯拉等汽車的安全研究。曾在QEMU和XEN中發現多個虛擬化漏洞,同時也是一名CTF愛好者。

張文凱,騰訊科恩實驗室研究員,多次參與特斯拉、寶馬等汽車安全研究項目,主要負責汽車CAN網絡和汽車固件分析工作,有豐富的嵌入式系統軟件開發經驗,熟悉ECU設計過程和汽車CAN網絡結構。

杜岳峰,騰訊科恩實驗室研究員,多次參與特斯拉汽車安全研究,對逆向工程和惡意軟件分析領域有著濃厚的興趣。

議題解析

在今年的Black Hat USA大會上,我們向大家介紹2017年的攻擊鏈中相關漏洞的細節,并分享使用這些漏洞是如何完成燈光秀的。此外,自動駕駛系統的安全性已經成為一個新的熱點話題,我們則會向大家展示在特斯拉車上,對輔助駕駛模塊(即Autopillot,也稱APE)的安全研究成果。最后,和以往一樣,我們將會介紹特斯拉對相關漏洞的修復結果,并再一次強調只有安全研究者、安全社區和設備廠商互相合作,才能有效的提高整體安全水平。

攻擊過程中涉及到的部分硬件單元和連接方式如下圖所示。在去年,我們利用了兩個Webkit中存在的漏洞,實現了瀏覽器中的任意代碼執行。今年的情況和去年類似,整個攻擊過程依然是從一個Webkit漏洞開始的。

CID上具有一個Webkit內核的瀏覽器,在漏洞報告時,該瀏覽器仍保持為534.34版。該版本的Webkit內核中,存在一個UAF漏洞,下圖即是該漏洞的PoC代碼:

這個漏洞存在于對SVGTransformList元素的操作過程中。該元素內部存在多個SVGTransform實例,這些實例的SVGMatrix結構會存儲在一個Vector里。當SVGTransformList的Initialize或clear方法被調用后,Vecotr被釋放,但訪問Vector中Matrix的指針仍然存留。利用該UAF漏洞,經過精心的內存布局之后,即可借助ArrayStorage、Uint32Array等結構的特性實現對內存的任意讀和任意寫,并從而實現了瀏覽器中的代碼執行。

獲取了瀏覽器的權限之后,下一步操作就是突破內核和其他安全防護措施對瀏覽器的限制,從而得到root shell。2016年,我們是通過利用Linux內核中的一個漏洞實現該目的的,但在2017年,由于特斯拉修復了相當多的內核漏洞,我們不得不尋找新的漏洞。

在2017年的車機固件中,瀏覽器進程只能訪問/dev/nvmap和/dev/nvhost-ctrl兩個文件,這兩個文件都是用來與英偉達Tegra芯片進行通信的驅動接口。在和這兩個接口相關的代碼中,我們發現了一處漏洞,該漏洞可使我們從用戶空間對內核空間的任意內存地址減1。

這一漏洞存在于NVMap驅動中,當處理命令NVMAP_IOC_PIN_MULT時,由于對用戶提供的指針數組驗證不當,當其中包含一個非法結構時,非法結構體的引用數會被減1,而這個引用數的指針是用戶態可控的。這意味著,用戶態可以對內核態的任意內存地址減1。利用這一漏洞,結合Kernel中的其他gadget,我們可以對內核空間中的任意地址進行讀寫操作。之后對相關的syscall和AppArmor配置進行篡改,即可擁有root shell。

得到root shell證明CID已被完全攻破,下一個目標則是網關。2016年我們報告了網關上的一些設計缺陷,特斯拉在收到報告后對相關漏洞進行了修復,通過加入簽名機制,對網關上的升級軟件傳輸操作進行了限制,未簽名的升級軟件將不能被傳輸到網關上,因此理論上使用非物理攻擊方法是無法傳輸篡改后的升級軟件的。

但在對新軟件進行安全審計的過程中,我們發現,升級過程中存在行為不一致的問題。如下圖所示,盡管網關的文件傳輸協議限制了直接傳輸升級軟件的操作,名為”boot.img”的升級軟件無法直接傳輸到網關上,但文件系統的重命名行為和文件傳輸協議的重命名行為不一致。文件系統會忽略目標文件名首部的空格,導致目標文件名“\x20boot.img”會被文件系統理解為”boot.img”,從而繞過了升級軟件對文件名的檢查。

用這種方法刷入我們修改后的升級軟件后,重啟網關,使其執行升級軟件,即可在網關上執行我們修改后的升級代碼,植入后門,或繞過原有升級軟件對固件簽名的檢查。

此外,我們還對整個OTA升級過程進行了研究。特斯拉的OTA升級過程大致可由下圖所示的幾個關鍵步驟描述。

云端通過特斯拉自有的握手協議下發固件下載地址后,特斯拉CID上的cid-updater會從云端下載固件,進行解密,并校驗其完整性。之后通過類似于A/B Update的方式,車內其他強運算力的聯網組件(如IC、APE等)根據cid-updater提供的固件文件進行升級。

此外,cid-updater還會負責根據固件包中的目錄信息,與車輛配置做比照,據此產生release.tgz文件,并和上文提到過的升級軟件boot.img一同提供給網關,網關執行上述升級軟件,更新在網關上連接的二十余個ECU。

為了展示我們對車電系統整體的理解,我們對特斯拉在2016年年末推出的彩蛋功能進行了自定義修改和展示。下圖是彩蛋過程中幾個重點參與活動的ECU:

首先,CID會發送啟動信號,觸發這一過程,信號會被發送至BCCEN,該控制器對相關硬件進行初始化操作后,會確認目前車輛是否準備好啟動彩蛋,并等待鑰匙的按鍵信號。按鍵后,CID開始播放音樂,同時BCCEN以及其他ECU會按照各ECU中存儲的動作表,控制各組件按照預定計劃動作。

因此為了實現自定義彩蛋功能,我們在CID中動態修改了多個檢查點,并對ECU固件中的動作表進行了修改,將修改后的固件刷入了ECU中。

最后,作為對前沿技術的一個嘗試,我們研究了ape-updater中的安全漏洞。該程序作為特斯拉OTA框架中的一部分,負責整個APE系統的更新。

該程序提供了兩個業務端口,其中25974端口提供了一個交互式shell和多種命令,可供CID進行控制;28496端口可通過一個HTTP服務器提供其他組件需要的文件。

在25974端口提供的handshake命令中,會從服務器請求一個JSON字符串,并稍后提供給install命令解析。在某個特定版本的特斯拉APE固件中,我們發現了名為m3-factory-deploy的命令,該命令可覆蓋handshake返回的JSON,從而讓攻擊者提供的JSON被解析。

利用JSON中存在的self_serve鍵值,可以要求APE將/var/etc/saccess/tesla1這一文件暴露在HTTP服務器下,從而可得到其內容。利用其為憑據,可通過25974端口得到ape-updater中自帶的命令執行權限,可以重新開啟SSH,并以root權限在APE上執行任意程序。

在上述所有漏洞報告給特斯拉后,特斯拉做出了及時的反應,其中包括:

  • 修復Webkit漏洞
  • 與英偉達共同修復NVMap中的內核漏洞
  • 修復Gateway中的漏洞

我們還注意到特斯拉在其系統安全性上不斷地進行改善與提高,比如:

  • 更嚴格的iptables限制
  • 對OTA框架中的幾個關鍵程序進行進一步加固
  • 降低saccess文件夾中token的權限
  • 禁止系統降級
  • ……

我們認為在這一過程中,特斯拉專業的安全響應團隊和他們的OTA機制起到了關鍵的作用,防止了車主受到進一步的威脅。

由于篇幅所限,對相關漏洞我們只介紹了類型和核心原理,對我們的研究感興趣的朋友可以查看我們發布的白皮書《穿云撥霧:對特斯拉汽車網關、車身控制模塊以及輔助駕駛(Autopilot)ECU的滲透測試》獲取更多信息。


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.jmbmsq.com/664/