寶馬汽車安全漏洞詳解:古有伯樂識良駒,今有黑客擒寶馬
ADAC(全德汽車俱樂部)想深入了解內(nèi)嵌移動網(wǎng)絡(luò)調(diào)制解調(diào)器的汽車如何向制造商發(fā)送數(shù)據(jù)。CT(德國計(jì)算機(jī)技術(shù)類的雜志)為ADAC介紹了一位安全專家。這位專家深入分析寶馬汽車ConnectedDrive系統(tǒng)的數(shù)據(jù)傳輸過程。最終,他發(fā)現(xiàn)一系列安全漏洞,允許未授權(quán)的攻擊。

ADAC(全德汽車俱樂部)想深入了解內(nèi)嵌移動網(wǎng)絡(luò)調(diào)制解調(diào)器的汽車如何向制造商發(fā)送數(shù)據(jù)。C'T(德國計(jì)算機(jī)技術(shù)類的雜志)為ADAC介紹了一位安全專家。這位專家深入分析寶馬汽車ConnectedDrive系統(tǒng)的數(shù)據(jù)傳輸過程。最終,他發(fā)現(xiàn)一系列安全漏洞,允許未授權(quán)的攻擊者打開車門。
物聯(lián)網(wǎng)并不止步于控制車庫的大門:越來越多的車默認(rèn)配備蜂窩調(diào)制解調(diào)器與SIM卡。根據(jù)制造商的不同,這些調(diào)制解調(diào)器可以完成不同的事情:它們可能為乘客提供互聯(lián)網(wǎng)訪問;它們也可以發(fā)送遙測數(shù)據(jù)或交通信息到制造商,或它們可以在發(fā)生碰撞啟動應(yīng)急服務(wù)。有些品牌的汽車,一個(gè)手機(jī)APP允許車主通過移動APP控制車輛的一些功能。其中的功能可能包含輔助加熱系統(tǒng)或?qū)﹄妱榆嚨闹麟姵爻潆姟?/p>
BMW是該領(lǐng)域的領(lǐng)導(dǎo)者之一,其ConnectedDrive已經(jīng)在市場上使用多年。和C'T(德國計(jì)算機(jī)技術(shù)類的雜志)一樣,ADAC對ConnectedDrive系統(tǒng)傳輸數(shù)據(jù)對隱私和消費(fèi)者保護(hù)的影響非常感興趣。他們委托我深入調(diào)查這個(gè)事情,而結(jié)果是令人震驚的:即使關(guān)注點(diǎn)起初并不是安全性,我還是發(fā)現(xiàn)了一些嚴(yán)重的漏洞。
科普:什么是ConnectedDrive服務(wù)?
ConnectedDrive,德國BMW公司于2006年聯(lián)手Google公司開發(fā)的“聯(lián)網(wǎng)駕駛”服務(wù)。ConnectedDrive 有5項(xiàng)服務(wù),BMW助理,BMW在線,BMW導(dǎo)航,BMW電話服務(wù)和車內(nèi)互聯(lián)網(wǎng)接入,所有這些提供給你獨(dú)一無二的移動體驗(yàn)——最大化的安全、舒適和駕駛樂趣。
為了開展研究,ADAC提供了幾輛配有ConnectedDrive的寶馬車,其中有一輛寶馬320D Touring(不懂車,不知道中文名是什么款)。我并沒有從制造商獲得任何特殊的資料,只能依賴那些網(wǎng)上公開的信息。
為獲得第一印象,我查看了一下ConnectedDrive的控制單元,發(fā)現(xiàn)所謂的Combox有幾種型號。除了其他功能,Combox設(shè)備還負(fù)責(zé)車上多媒體功能,如播放U盤上的音樂文件或配對手機(jī)與車上內(nèi)置的藍(lán)牙免提裝置。自2010年以來,這個(gè)設(shè)備已經(jīng)部署在各種寶馬車型。

Combox內(nèi)部構(gòu)造:除了其他東西,控制單元會將寶馬汽車的ConnectedDrive服務(wù)連接到在線服務(wù)器。它的調(diào)制解調(diào)器可以看到位于電路板的右上角。
Combox所使用的CPU是SH-4A,一款Renesas生產(chǎn)的功能強(qiáng)大的32位RISC處理器。產(chǎn)自Cinterion(原屬西門子)的調(diào)制解調(diào)器完成設(shè)備的移動通信功能。同時(shí),該設(shè)備也使用一款Renesas 生產(chǎn)的V850ES型微控制器。選擇V850ES想必是看中了它的低功耗,即使在車已經(jīng)停下且引擎不運(yùn)行的情況下,也能夠讓調(diào)制解調(diào)器接收消息。但SH-4A較大的功率需求將會很快耗盡電池存儲的電量。#p#
拆卸
剛開始,我從車上拆下COMBOX模塊,并把它連接到AC適配器,再激活模塊的應(yīng)急功能,此功能通常通過駕駛艙內(nèi)的按鈕觸發(fā)。通過查看主板上的模塊,我識別出電源線的管腳及連接器(connector)上的應(yīng)急按鈕。互聯(lián)網(wǎng)上的資料搜集提供了另一種可行的路徑:通過下載面向?qū)汃R汽車維修中心的診斷軟件,它描述了管腳配置信息。為了記錄COMBOX在移動網(wǎng)絡(luò)中產(chǎn)生的流量,我使用基站搭建了測試環(huán)境。這個(gè)基站可以支持OpenBSC,從而模擬了一個(gè)蜂窩網(wǎng)絡(luò)。(寶馬和基站都買不起,腫么辦?)

使用類似SysmoBTS或nanoBTS的基站來模擬蜂窩網(wǎng)絡(luò),記錄控制單元的數(shù)據(jù)流
當(dāng)按下應(yīng)急按鈕時(shí),Combox發(fā)送文本消息,然后發(fā)起語音呼叫。文本消息經(jīng)加密處理,無法透漏任何可識別的特征。在應(yīng)急模式被觸發(fā)的每次測試中,發(fā)送的數(shù)據(jù)看起來都不一樣,暗示著數(shù)據(jù)可能經(jīng)過加密過處理。
為了查明數(shù)據(jù)在什么地方加密,我記錄蜂窩調(diào)制解調(diào)器與V850ES微控制器之間的傳輸數(shù)據(jù),該流量通過串行線路傳輸。為了解調(diào)制解調(diào)器上連接器的配置,我咨詢了網(wǎng)上可以查到的所有型號。因?yàn)槲以诖芯€路上記錄的數(shù)據(jù)中無法找到應(yīng)急文本消息,我斷定應(yīng)急消息的創(chuàng)建和加密位于調(diào)制解調(diào)器。這個(gè)假設(shè)是合理的;可以擴(kuò)展蜂窩調(diào)制解調(diào)器來提供這樣的功能。
脫焊
遇到加密這種棘手情況,我不得不去獲得調(diào)制解調(diào)器的固件。調(diào)制解調(diào)器單元并不包含可獲取固件的標(biāo)準(zhǔn)化測試接口(聯(lián)合測試工作組,JTAG)。這就意味著我不得不從調(diào)制解調(diào)器上拆除閃存模塊焊點(diǎn),然后使用適配器板來讀取固件。這可不是是一項(xiàng)簡單的工作,因?yàn)樾酒?jīng)過BGA封裝-在脫焊后,還需要錫球重整(reball),然而供應(yīng)商為你提供了關(guān)照。

Combox的調(diào)制解調(diào)單元加密文本消息
為了分析固件,我使用足夠多的I/O管腳和匹配的1.8伏I/O電壓把適配器板的閃存芯片連接到STM32評估電路板。只需幾行C代碼,我就通過評估電路板的串口連接器把閃存的內(nèi)容提取到PC機(jī)上。為了分析固件代碼,我動用了神器IDA Pro。它可以探測匯編代碼,而且支持這款調(diào)制解調(diào)器的ARM處理器。

調(diào)制解調(diào)器的閃存經(jīng)過脫焊后連接到適配器板(左側(cè))。讀取固件的方法來可能看起來有些荒唐,但確實(shí)有效
通過IDA Pro工具,我迅速識別出固件上多種加密和哈希算法。這是因?yàn)榱餍屑用芩惴ㄊ褂锰囟ǖ谋砼c常數(shù),它們可以被自動化地查找。基于這些發(fā)現(xiàn),我可以查找到使用相同加密和哈希算法的其他代碼。#p#
尋找密鑰
加密秘鑰來自何處?作為樂天派,我起初推測廠商會為每輛車生成唯一的密鑰,并存儲在V850ES微型控制器上,然后再發(fā)送到蜂窩調(diào)制解調(diào)器。由于在這種假設(shè)場景下查找密鑰需要花費(fèi)大量的工作,所以我決定繼續(xù)分析應(yīng)急呼叫的協(xié)議。固件中的特定字符串表明,它似乎正在使用NGTP協(xié)議(下一代Telematics協(xié)議)。并不令人感到意外,因?yàn)閷汃R公司是NGTP主要支持者之一。
為了定義通信協(xié)議,NGTP使用標(biāo)準(zhǔn)符號表示法ASN.1(抽象語法標(biāo)記1)。經(jīng)過分析得知,該固件使用開源編譯器asn1c來創(chuàng)建語法。結(jié)合asn1c工作原理來查看固件的結(jié)構(gòu),我嘗試重構(gòu)接近該協(xié)議所用的ASN.1語法。這個(gè)步驟是必須的,因?yàn)镹GTP只是對協(xié)議如何構(gòu)建給出建議,但并未規(guī)定實(shí)際的實(shí)現(xiàn)細(xì)節(jié)。
按照這個(gè)思路,我再次踏上尋找加密密鑰的道路。NGTP協(xié)議包含更新密鑰的函數(shù),讓我確信密鑰一定存在某個(gè)地方。長期以來,尋找總是徒勞無功。在最后一次嘗試中,我分析了固件中一個(gè)隨機(jī)數(shù)據(jù)塊。我嘗試把該數(shù)據(jù)塊的部分?jǐn)?shù)據(jù)作為密鑰來解密記錄的緊急文本消息。經(jīng)過一些失敗的嘗試后,最后獲得了成功。
這個(gè)發(fā)現(xiàn)愈發(fā)讓我感到怪異。他們不會真的對所有的汽車都使用同樣的密鑰材料吧?另外,我目前只能查看緊急文本消息。對那種使用場景,所有車擁有相同密鑰并不會造成什么危害。
我發(fā)現(xiàn)了加密使用DES(56位密鑰)算法和AES128(128位密鑰)算法。為簽名消息,固件使用了三種簽名算法DES CBC-MAC,HMAC-SHA1和HMAC-SHA256。消息的頭部指定了算法的類型和所用的密鑰對。
目前,尚不清楚寶馬公司為什么會使用DES算法,因?yàn)镈ES算法的破解已有一段時(shí)間了。而且相對于其他加密算法,DES數(shù)據(jù)塊的長度更短,從而生成更短的加密消息。3DES情況也一樣,但起碼3DES被多數(shù)人認(rèn)為是安全的。
重組
在成功地嘗試解密與解碼應(yīng)急短信后,我把注意力轉(zhuǎn)向了汽車本身。我想要查明當(dāng)涉及安全相關(guān)的功能時(shí),寶馬汽車的通信是否會受到更好的保護(hù)。為了這個(gè)目的,我開始調(diào)查車門遠(yuǎn)程解鎖的功能。
為使用這個(gè)功能,車主首先需要在BMW網(wǎng)站上注冊賬戶并開啟遠(yuǎn)程服務(wù)。駕駛員可以使用iOS和Android版的My BMW Remote移動應(yīng)用來打開駕駛員旁邊的車門。為了詳細(xì)了解其工作原理,我不得不再次記錄汽車收發(fā)的數(shù)據(jù)。這需要先發(fā)送一條短信,否則不可能與已關(guān)閉引擎的汽車建立數(shù)據(jù)連接。
獲得這條短信的最簡單方法是監(jiān)聽Combox設(shè)備上蜂窩調(diào)制解調(diào)器與V850ES微控制器之間的串口連接。在只是APP打開車門后,我的確在記錄的數(shù)據(jù)中找到一條文本消息。這條消息似乎包含調(diào)試字符,因?yàn)樗鼘?shí)際上已經(jīng)蜂窩調(diào)制解調(diào)器處理過。
通過對My BMW Remote移動應(yīng)用的加密算法與密鑰表的了解,我可以輕易地解碼與分析這條消息。為了查看汽車的反應(yīng),我使用模擬的蜂窩網(wǎng)絡(luò)向汽車發(fā)送消息的副本(重放攻擊)。

攻擊寶馬ConnectedDrive系統(tǒng)
接收到短信之后,汽車大約花費(fèi)一分鐘啟動連接到主處理單元的系統(tǒng)。COMBOX通過蜂窩網(wǎng)向?qū)汃R后臺服務(wù)器發(fā)起連接,并嘗試訪問服務(wù)器上的數(shù)據(jù)。如果Combox沒有接收到任何數(shù)據(jù),連接被終止,什么事情也不會發(fā)生。這就意味著短信不足以打開車門,系統(tǒng)還需要來自后臺進(jìn)一步的數(shù)據(jù)。
對于剛剛發(fā)生的事情,令人吃驚的是汽車與寶馬服務(wù)器之間的蜂窩連接可以在模擬網(wǎng)絡(luò)中毫無保留的記錄下來。汽車只是發(fā)送一個(gè)簡單HTTP Get請求,在傳輸過程并沒使用SSL或TLS加密。
為查明汽車期望從寶馬后臺獲得的數(shù)據(jù),在利用短信開始重放攻擊之前,我至需通過App觸發(fā)解鎖序列。通過這種方式,服務(wù)器便會存儲有關(guān)我這輛汽車的所需信息。緊接著,車門便打開了。
新數(shù)據(jù)可以使用上面所述的方法來解密與分析。這一次所用的協(xié)議又是NGTP,但使用不同的簽名算法與加密算法:AES128而不是DES,HMAC-SHA256而不是DES-CBC-MAC,但是使用相同的加密表。#p#
破門而入
現(xiàn)在,我已經(jīng)具備充足的知識來模擬解鎖功能的所有組件。我可以偽造打開車門的數(shù)據(jù),而所需的設(shè)備只是一個(gè)基站和一臺筆記本,這臺筆記本將發(fā)送偽造的短信,然后再偽裝成寶馬的后臺服務(wù)器。
問題是已經(jīng)提取出來的密鑰是否適用于其他的汽車。對其他幾臺寶馬汽車的測試讓我吃下定心丸。在這個(gè)測試過程,我獲知了一些額外情況。如果配備ConnectedDrive的車輛沒有激活遠(yuǎn)程服務(wù),遠(yuǎn)程打開車門就不能奏效。不過,我們可以利用模擬的蜂窩網(wǎng)絡(luò)來激活遠(yuǎn)程服務(wù)。
這個(gè)工作類似于前面的攻擊。汽車發(fā)送一條短信,指示它從BMW服務(wù)器上下載新的配置數(shù)據(jù)。配置數(shù)據(jù)通過HTTP Get請求加載,配置數(shù)據(jù)被格式化成未加密且易于理解的XML文件。配置文件并不能防篡改,這種問題原本可以利用數(shù)據(jù)簽名輕易解決。這就意味著我可以使用模擬網(wǎng)絡(luò)輕易地激活遠(yuǎn)程服務(wù),然后再打開車門。
至少,汽車會檢查消息的目的地址,即消息應(yīng)該被發(fā)送到哪輛汽車。這個(gè)檢查是通過查看消息中的VIN(車輛標(biāo)識碼)來完成的。如果VIN不能與提出質(zhì)疑的汽車相匹配,它就不會執(zhí)行發(fā)送的命令。這對攻擊者來說并不是什么障礙,因?yàn)镃OMBOX在這方面給予攻擊者極大的幫助:如果Combox不能接收到有效的VIN碼,它實(shí)際上會發(fā)送一條錯(cuò)誤消息,而這條錯(cuò)誤消息會包含VIN來標(biāo)識錯(cuò)誤消息的發(fā)送者。

一些BMW車型中,COMBOX已經(jīng)被替換成其他類型的控制單元。TCB(Telematic Communication Box)支持通用移動通信系統(tǒng)(UMTS),而且不會不泄露VIN,但仍使用已知的加密密鑰。
在接下來的研究,我也研究了幾款最新的BMW車型。其中在一些車型中,COMBOX已經(jīng)被替換為其他的控制裝置。多媒體與免提功能已經(jīng)整合到所謂的Headunit。而蜂窩通信已經(jīng)遷移到到TCB (Telematic Communication Box),它現(xiàn)在除了支持GPRS/EDGE連接,還支持通用移動通信系統(tǒng)(UTM)。TCB會忽略未包含正確VIN的消息。因?yàn)樗床换貜?fù),正確VIN碼并不像在COMBOX中一樣那么容易查明。不過,通信仍然使用了適用所有車輛的已知密鑰。
實(shí)踐
在現(xiàn)實(shí)中,通過模擬網(wǎng)絡(luò)遠(yuǎn)程解鎖車門將會是什么樣子?這要求所需設(shè)備能夠放在一個(gè)公文包或一個(gè)背包中。模擬網(wǎng)絡(luò)的覆蓋范圍即使在市中心也可以超過100米。所謂國際移動用戶識別碼捕捉器(IMSI catcher)比實(shí)際的移動網(wǎng)絡(luò)擁有更強(qiáng)的信號,所以會導(dǎo)致手機(jī)優(yōu)選選擇偽造的移動蜂窩網(wǎng)絡(luò)。IMSI catcher不需要事先知道目標(biāo)汽車的電話號碼。IMSI catcher使用TMSI替代。當(dāng)一個(gè)移動設(shè)備接入IMSI偽造的網(wǎng)絡(luò)時(shí),IMSI會給這個(gè)設(shè)備分配一個(gè)TMSI。如果目標(biāo)車輛使用TCB模塊,攻擊者阻塞這個(gè)區(qū)域存在的UMTS信號,迫使控制單元退回到GSM模式。
因?yàn)椴粌H配有ConnectedDrive的汽車會接入到偽造的移動蜂窩網(wǎng)絡(luò),通過查看IMEI碼來過濾接入的設(shè)備是個(gè)不錯(cuò)的方法,IMEI碼是分配給所有移動設(shè)備與蜂窩調(diào)制解調(diào)器的唯一序列碼。IMEI碼的前8位數(shù)字指示設(shè)備的類型(手機(jī)型號代碼,TAC)。攻擊者可以利用這個(gè)方法區(qū)分Combox與TCB。
獲知某個(gè)汽車配備了Combox,攻擊者可以查找到VIN,然后激活遠(yuǎn)程服務(wù)并打開駕駛員旁的車門。如果汽車裝備了TCB,VIN可以通過另一種方式獲取。根據(jù)汽車所銷往的國家,VIN可以在擋風(fēng)玻璃上看到或出現(xiàn)在門框的銘牌上,因此當(dāng)有人離開汽車時(shí),攻擊者可以使用相機(jī)拍下來。解鎖車門并沒有留下任何痕跡,即使在擁擠的街道也不顯眼。
結(jié)論
在初步調(diào)查時(shí),我發(fā)現(xiàn)了ConnectedDrive上的6歌安全漏洞:
①BMW在所有的車輛上使用相同的對稱密鑰
②一些服務(wù)并沒有在汽車與寶馬公司后臺的傳輸過程中加密消息
③ConnectedDrive配置數(shù)據(jù)不能防篡改
④COMBOX在NGTP錯(cuò)誤消息中泄露VIN碼
⑤通過短信發(fā)送的NGTP數(shù)據(jù)使用不安全的DES加密算法加密
⑥COMBOX沒有實(shí)施保護(hù)措施來防御重放攻擊
這些問題本來可以被輕易地避免。例如,在傳輸過程中執(zhí)行加密的組件都已具備,但僅僅被一些ConnectedDrive服務(wù)所使用。此外,制造商可以通過寫入VIN使上述控制系統(tǒng)擁有不同的標(biāo)識,因此也可以為每個(gè)車輛寫入唯一的密鑰。
一年前接受C'T雜志的采訪時(shí),寶馬公司研發(fā)部門的克勞斯布特內(nèi)爾博士說,當(dāng)涉及到公司的在線服務(wù)時(shí),汽車的安全和授權(quán)訪問具有最高優(yōu)先級。參考布特內(nèi)爾的話,寶馬公司把所有服務(wù)路由到自己的安全后臺。此外,汽車只處理授權(quán)的命令,且命令只能是預(yù)先設(shè)定的命令列表中的。
原則上,這是正確的,但知易行難。據(jù)寶馬公司宣稱,安全漏洞已全部修復(fù)。盡管寶馬公司信誓旦旦擔(dān)保沒問題,但對于車主來說又該何去何從?不幸的是,ConnectedDrive不能被輕易關(guān)閉-它沒有提供類似手機(jī)飛行模式的功能。
為了永久關(guān)閉ConnectedDrive,車主要填寫一個(gè)書面請求,還要跑一趟汽車維修中心。其中自助措施是斷開Combox或TCB與天線。取決于車型而定,這個(gè)方法易于實(shí)施,因?yàn)榭刂茊卧挥谛欣顜牡匕逑旅?。不過,這樣也就關(guān)閉了自動應(yīng)急呼叫(Security與Safety不能兼得啊)。
沒想那么長遠(yuǎn)的車主寄希望制造商在處理在線服務(wù)的細(xì)節(jié)時(shí)已經(jīng)足夠謹(jǐn)慎。ADAC要求汽車裝備的計(jì)算機(jī)采用先進(jìn)的防止篡改與非法訪問的保護(hù)措施。要求中提到,這種保護(hù)應(yīng)該遵守與其他行業(yè)相同的安全標(biāo)準(zhǔn)。此外,這些安全措施也要通過第三方中立機(jī)構(gòu)驗(yàn)證-例如作為德國波恩聯(lián)邦信息安全局的公共標(biāo)準(zhǔn)認(rèn)證((Common Criteria Certification)的一部分。