天天看點

如何在19歲黑掉25輛特斯拉?

一個月前,“19歲少年接連控制十幾個國家25輛特斯拉”的新聞一度刷屏,但當時,考慮到漏洞負責人披露原則,他并沒有公布細節。漏洞修複之後,這位來自德國的19歲少年David Colombo在個人的部落格上公布了事件原委及技術細節。

如何在19歲黑掉25輛特斯拉?

發生了什麼?

在部落格裡,David Colombo自稱通過發現的漏洞,可以遠端黑掉特斯拉,實作:

打開車門

打開車窗

禁用哨兵模式

啟動無鑰匙駕駛

當然,如大家所熟知的其他大部分黑掉汽車的研究一樣,David Colombo 也同樣無法控制汽車執行轉向、加速、刹車等難度更高、更複雜的操作。

他在2021年10月份就發現了相關問題,經過研究後,由于無法直接聯系到對應的負責團隊,且為了提醒更多車主注意這個問題,于是他在2022年1月10日發了推特,進而火爆全網。按照歐洲中部時間,整個事情發展的時間線如下:

2021–10–29:首次發現問題

2021–10–29:聯系車主

2021–11–01:記錄下問題

2022–01–09:全網搜尋其他可能被影響的車輛

2022–01–10:發現有12個國家超過20輛車可能受到影響

2022–01–10:試圖找到車主的身份資訊

2022–01–10:聯系兩個能找到的特斯拉車主并告知相關問題

2022–01–10:發條推特,希望更多車主注意到

2022–01–10:這條推特火了

2022-01-10:發現13個國家超過25輛車會受到影響

2022-01-10:和知名網絡安全專家John Jackson交流,他推薦将漏洞上報擷取CVE-ID,讓問題得到更有效的處理

2022-01-11:去MITRE申請一個CVE-ID,并提供了一些基本資訊

2022-01-11:準備了一份詳細的報告

2022-01-11:聯系了特斯拉生産安全組,讓他們盡快告知被影響的車主

2022-01-11:聯系了第三方的維修人員,讓他們盡快釋出更新檔

2022-01-11:和特斯拉生産安全組共享被影響的車主的更多資訊

2022-01-11:MITRE準許了CVE-ID申請。暫定為CVE-2022–23126

2022-01-11:特斯拉生産安全組表示他們正在調查相關問題

2022-01-12:第三方的維護人員釋出了1.25.1版本,包含部分更新檔

2022-01-12:歐州中部時間7:30,特斯拉協調召回了數千個潛在被影響的API token

2022-01-12:特斯拉強制一些被影響的使用者重置密碼

2022-01-12:等待特斯拉生産安全組的進一步回複

2022-01-12:和第三方維護人員一同開發更多更新檔(加密關鍵通路token)

2022-01-13:特斯拉生産安全組表示他們召回了所有受影響的API token,并且通過郵件和推送告知了所有被影響的特斯拉車主

2022-01-13:一部分之前受過影響的特斯拉車主依舊會受到影響

2022-01-18:再一次和特斯拉交涉,等待特斯拉生産安全組的進一步通知

2022-01-19:特斯拉召回了另一批通路token

2022-01-19:發現了另一處直接影響特斯拉的API的漏洞,并報告給特斯拉

2022-01-22:特斯拉承認了新漏洞,将推出新的修複更新檔;

2022-01-24:公開發表部落格

2022–01–24:向 MITRE / CVE 配置設定機構送出相關資訊

2022–01–24:漏洞獲得編号:CVE-2022–23126

上下滑動檢視完整内容

到底是什麼問題?

作為一家自己給自己打工的公司CEO,Colombo 發現這個問題可以說是偶然中帶着點必然。2020年,他準備與一家巴黎的SaaS公司聊安全審計業務。在聊業務之前,他打算研究一下這家公司的基礎設施,了解他們使用的服務和平台等基本資訊。如果他們使用的是舊版的軟體或者未加密的資料庫等等,業務就有戲了。結果這一研究,真的發現了問題。

奇怪的namp掃描結果

嘗試通過 telnet 連接配接也不起作用。

但是,他在浏覽器裡通路這些端口時,卻發現指向了被TeslaMate ——一款開源的自我托管的資料記錄器。TeslaMate主要用于提取資料和存儲以及顯示,并不能運作任何指令。

如何在19歲黑掉25輛特斯拉?

在好奇心的驅使下,他想直接通路儀表闆,結果失敗了。但是在檢視Docker檔案的時候,發現可以安裝Grafana。而且通路端口 5555 之後,他發現了大量敏感資訊。車輛途經的路線、曾充電的位置、目前的位置、平常停車的位置、車輛行駛時段、出行速度、導航請求、軟體更新的曆史,甚至特斯拉汽車周圍的天氣曆史等等。顯然,這些資訊不該從這個端口洩露出去。

如何在19歲黑掉25輛特斯拉?
如何在19歲黑掉25輛特斯拉?

作為安全研究員,看到這兒估計已經開始激動了,但沒有人會想就此打住,好奇心會驅使你繼續研究。Colombo 也是一樣:既然能拿到車輛的資料,是不是也能向車輛發送指令呢?他研究了TeslaMate的源代碼,了解其身份認證方式和流程以及使用者API密鑰存儲位址。結果發現API密鑰跟其他資料存儲在相同位置且沒有加密。接下來的操作大家可能更熟悉了:TeslaMate Docker的Grafana安裝時帶有預設憑證,用admin:admin就能成功登入,然後查詢API token。接下來就是正常操作了……

到了這一步,Colombo意識到這個問題很嚴重,于是就停手并向相關部門報告,但沒聯系到。今年1月份,他再次想到這個問題,覺得TeslaMate 用預設的Docker配置進行部署依然是很大的安全隐患。而且再次搜尋時他發現,2021年12月起,特斯拉可以使用無鑰匙啟動,這就暴露了更大的攻擊面。

簡單來說,Colombo通過以下幾步就能在全球範圍内随機通路特斯拉:

在網際網路上搜尋配置了TeslaMate的車輛

确認它們使用預設Docker(不安全)配置運作

通過3000端口通路Grafana 儀表闆

使用預設憑證登入

通路資料總管标簽

使用查詢生成器來提取API并重新整理token

愉快地玩耍吧

*提示,以上行為應在有授權的情況下進行

利用相關漏洞(CVE-2022–23126),即便是車主改變了管理密碼,依然可以通過Grafana的API端點,以未經授權的匿名Grafana使用者身份對TeslaMate資料源運作任意請求。不過這隻影響到TeslaMate docker,目前已經釋出了更新檔(1.25.1版本)。

如何在19歲黑掉25輛特斯拉?

理論上來說,除了開車門車窗、啟動無鑰匙駕駛等,利用 Tesla API token還可以分享視訊到特斯拉、調整空調模式和溫度、控制喇叭和燈光等。Colombo 在幾小時内随機查到了歐美等13個國家的25輛特斯拉的行駛軌迹。

如何在19歲黑掉25輛特斯拉?

加州

如何在19歲黑掉25輛特斯拉?

丹麥

如何在19歲黑掉25輛特斯拉?

比利時

如何在19歲黑掉25輛特斯拉?

英國

如何在19歲黑掉25輛特斯拉?

佛羅裡達

如何在19歲黑掉25輛特斯拉?

加拿大

擔心影響太大,他開始聯系車主并在推特上曝光了事件,并找到了特斯拉産品安全團隊。最終,特斯拉調查之後撤銷了所有受影響的和遺留的token,并向所有受影響的車主發送了通知。不過,一系列操作之後,一些特斯拉通路token仍然公開在網際網路上,可能是因為使用者再次登入了易受攻擊的TeslaMate。于是他再次聯系特斯拉并将漏洞申請了CVE編号,希望更多車主能及時修複。此外,在修複交流過程中,他還發現最開始無法擷取的車主電子郵件位址居然可以擷取了,于是便進一步跟特斯拉溝通了這一問題,特斯拉表示會在後續進行修複。

另外,Colombo 還給出了一些建議:

給車主:

- 不要随便暴露憑證

- 将 TeslaMate更新到最新版本并關注最新更新

給第三方軟體維護者:

- 確定所有包含敏感資料的儀表闆和資料庫都要通過身份驗證才能通路

- 存儲關鍵token時要加密,確定不被外部擷取。

給特斯拉:

- 給 API 劃定不同的功能權限

- 為API無鑰匙啟動功能添加密碼

- 特斯拉賬戶密碼重置後應撤銷API token

- 用簡便的方法儲存并跟蹤 API token

更新檔:

https://github.com/adriankumpf/teslamate/releases/tag/v1.25.1

TeslaMate進階驗證設定文檔:

https://docs.teslamate.org/docs/guides/traefik

最後,讓我們回到标題。如何在19歲黑掉全球25輛特斯拉?作為一個10歲開始寫碼,15歲辍學,19歲自創公司接業務的網絡安全技術愛好者,David認為主要是靠好奇心和運氣。而對于大部分人來說,還是要好好掌握技術,再保持對世界好奇心和鑽研的勁頭。至于是不是19歲,并不那麼重要。年齡從來不是極客的束縛,黑掉特斯拉也不是目的,看看Colombo最終做的,還是發現問題、解決問題,幫助更多人離安全更近一點。

*參考來源:

https://medium.com/@david_colombo/how-i-got-access-to-25-teslas-around-the-world-by-accident-and-curiosity-8b9ef040a028

分享收藏點贊在看

繼續閱讀