天天看點

19歲少年連黑25輛特斯拉,過程大揭秘

作者:新智元

編輯:好困 拉燕 袁榭

【新智元導讀】「25輛特斯拉被黑」事件又有後續:19歲事主在個人部落格上詳細複述了完成此舉的前因後果、操作流程。此外,相關軟體漏洞也已成功補上。

1月11日,一位來自德國的19歲年輕黑客突然發推表示,自己成功地控制了10個國家的20多輛特斯拉的。

随後,這個數字很快就增加到了13個國家和超過25輛特斯拉。

19歲少年連黑25輛特斯拉,過程大揭秘

簡而言之,他能遠端讓被黑掉的特斯拉汽車執行:

  • 解鎖車門
  • 打開車窗
  • 啟動無鑰匙駕駛
  • 分享視訊到特斯拉
  • 調整空調模式和溫度
  • 控制喇叭和燈光

David Colombo表示,雖然沒有取得任何轉向、加速、刹車和其他駕駛動作的權限,不過理論上可以通過漏洞開啟召喚模式讓車輛自動移動。

最近,他在個人部落格上公布了自己如何做到的技術操作流程、前因後果。

不如我們先來看看那些被「黑」了的特斯拉們都到過哪裡。

19歲少年連黑25輛特斯拉,過程大揭秘

一輛特斯拉Model Y在加州

19歲少年連黑25輛特斯拉,過程大揭秘

一輛特斯拉在歐洲

19歲少年連黑25輛特斯拉,過程大揭秘

一輛特斯拉Model 3在比利時(大部分時間)

19歲少年連黑25輛特斯拉,過程大揭秘

一輛特斯拉Model 3在英國(數過倫敦而不入)

19歲少年連黑25輛特斯拉,過程大揭秘

一輛特斯拉Model Y在佛羅裡達州

19歲少年連黑25輛特斯拉,過程大揭秘

一輛特斯拉Model Y在加拿大的基奇納及周邊地區

Colombo在幾個小時内就找到了來自13個國家的25輛以上的特斯拉。包括德國、比利時、芬蘭、丹麥、英國、美國、加拿大、意大利、愛爾蘭、法國、奧地利和瑞士。

還有大約至少30多個來自中國,不過Colombo非常謹慎,并沒有對這些車下手。

漏洞如何被發現

事情的起因要從去年說起,Colombo正準備與一家來自巴黎的SaaS公司客戶,讨論安全審計的問題。

然後,他的好奇心就被激發了。

在正式見面之前,他想偷偷看一下這家公司的基礎設施,比如獲得一些關于他們使用什麼服務和平台的基本資訊。

Colombo想着,如果很快能找到一些過時的軟體或暴露的備份資料庫,就可以在會議上向他們展示了。

19歲少年連黑25輛特斯拉,過程大揭秘

在做一些基本的子域列舉時,他發現了一個「backup.redacted.com」域名。

但除了一個普通的「this works」頁面外,沒有任何東西在運作。

在進行了一個非常簡單的nmap掃描之後産生了一些結果,但隻是發現了remoteanything和一些「遊戲伺服器」端口。

事情似乎有些奇怪。

19歲少年連黑25輛特斯拉,過程大揭秘

Colombo嘗試通過telnet連接配接,但沒有成功。

19歲少年連黑25輛特斯拉,過程大揭秘

不過,當通過浏覽器通路時,就會發現這些端口竟然指向了——TeslaMate。

19歲少年連黑25輛特斯拉,過程大揭秘

現在看起來,就有趣多了。

然而,嘗試通路Dashboard時,隻給了一個錯誤,并沒有成功。

19歲少年連黑25輛特斯拉,過程大揭秘

但是,好奇心再一次發揮了作用。

TeslaMate是特斯拉的一個自我托管的資料記錄器,而且它是開源的。

理論上,它隻用于提取資料和存儲以及顯示,并不能運作任何指令,比如使用TeslaMate解鎖車門。

通過檢視Docker檔案,Colombo發現它還帶來了一個Grafana的安裝。

端口5555,通路了一下試試?

19歲少年連黑25輛特斯拉,過程大揭秘

果然成了。

進入之後Colombo看到了大量的資料,包括特斯拉途徑的路線、曾充電位置、目前的位置、慣常停車位置、車輛行進時段、出行的速度、導航請求、軟體更新的曆史,甚至特斯拉汽車周圍的天氣曆史等等。

這真是......不妙啊。

Colombo表示,顯然自己不應該從這個端口知道,這家SaaS公司的CTO去年去哪裡度假了。

那麼,如果TeslaMate能夠提取所有的車輛資料,它可能也有辦法向特斯拉發送指令?

在産生這種想法之後,Colombo花了點時間閱讀TeslaMate的源代碼,以便弄清楚認證是如何進行的、特斯拉的證書如何在應用程式中流動、以及它在哪裡存儲使用者的API密鑰。

結果有些出乎意料,TeslaMate将API密鑰儲存在了和所有其他資料相同的位置,既沒有單獨存儲,也沒有加密。

19歲少年連黑25輛特斯拉,過程大揭秘

那麼,如果Grafana可以通路車輛資料,而API密鑰存儲在車輛資料一邊,Grafana可以讀取和輸出API密鑰嗎?

用Grafana Explore來運作自定義查詢試試?但這需要認證,真是無奈。

不過,有沒有聽說過這個遙遠的網絡安全問題叫做「預設密碼」?

19歲少年連黑25輛特斯拉,過程大揭秘

是的,TeslaMate Docker的Grafana安裝時帶有預設憑證。

也有可能在沒有通過Grafana端登入的情況下,以未經授權的匿名使用者身份查詢token。

試着用admin:admin登入,果然成功了。

為Grafana(Explore)建立一個查詢字元串,并查詢API token,這之後就沒有什麼神奇了。

是以說,軟體用預設值初始化的預設值是為了讓管理者友善去更改的,實際上并不安全。

開發者通常選擇預設值,讓軟體在開箱後盡可能地開放和易于使用。然而,當預設值不安全而管理者不改變它時,這種便利是有代價的。

19歲少年連黑25輛特斯拉,過程大揭秘

獲得對世界各地的随機特斯拉的通路的過程:

  • 在網際網路上搜尋TeslaMate執行個體
  • 確定它們以不安全的預設Docker配置運作
  • 轉到3000端口,通路Grafana Dashboard
  • 使用預設憑證登入(當然,隻有在明确授權的情況下才可以這樣做)
  • 轉到資料總管标簽
  • 使用查詢生成器來提取API并重新整理token
  • 愉快地玩特斯拉吧

除了登入之外,在漏洞的加持下,即便是車主改變了管理密碼,依然可以通過Grafana的API端點,以未經授權的匿名Grafana使用者身份對TeslaMate資料源運作任意請求。

不過這隻影響到TeslaMate docker,而且現在更新檔也已經釋出了,也就是1.25.1版本。

19歲少年連黑25輛特斯拉,過程大揭秘

那麼,如果發現了這樣的漏洞,該怎麼做?

你應該将漏洞報告給負責的團隊。

如果找不到又該怎麼辦呢?

那就發條推特吧~

19歲少年連黑25輛特斯拉,過程大揭秘

抛開玩笑話不談,Colombo表示,自己發那條推特隻是因為很沮喪。

花了一整天尋找後,隻能聯系到兩位特斯拉車主并且告知他們。

另外,對于這條推文可能引起的所有混亂和猜測,Colombo深表歉意。

然後……這條推特就火了。

為了尊重受影響的特斯拉車主的隐私,根據他的要求删掉了車主身份資訊。在這篇文章中,受影響的特斯拉的名字更改為「藍色巨人」。

19歲少年連黑25輛特斯拉,過程大揭秘

多虧了這條推文,Colombo找到了另一位來自愛爾蘭的特斯拉車主。

19歲少年連黑25輛特斯拉,過程大揭秘

然而,車主多次重置特斯拉帳戶密碼後,也沒能撤銷API token。

好在經過了4小時的不懈努力,終于通過一個未被記錄的API端點撤銷了密鑰。

聯系特斯拉

當Colombo發現沒有合法的途徑找到其他受影響的車主之後,便和特斯拉産品安全團隊取得了聯系。(推特上有網友「支招」,在特斯拉汽車螢幕上放「你被黑了」的視訊)

特斯拉表示他們正在調查這個問題,然後在不久之後就撤銷了所有受影響的和遺留的token。

據特斯拉安全團隊稱,截至2022年1月13日,所有被影響的使用者應該都收到了電子郵件通知。

是以如果特斯拉車主曾經安裝過TeslaMate,就去檢查一下你的郵箱。

19歲少年連黑25輛特斯拉,過程大揭秘

然而,特斯拉安全團隊第二次撤銷token後,一些特斯拉通路token仍然公開在網際網路上,可能是因為使用者又登入了易受攻擊的TeslaMate.

是以,Colombo寫了一個Python腳本來自動從易受攻擊的執行個體中撤銷暴露的通路token。

壞消息是,第3版token好像沒有辦法撤銷。

釋出漏洞

鑒于有相當多的特斯拉車主受到影響,是以Colombo申請獲得該漏洞的CVE編号。

CVE-2022–23126 描述:

「TeslaMate 1.25.1 之前的預設 Docker 配置允許攻擊者擷取受害者生成的token,進而使他們能夠通過 Tesla 的 API 執行未經授權的操作,例如控制車輛的某些關鍵功能或洩露敏感資訊。」

需要了解的是,這是一個開源項目,随着時間的推移而發展,這樣的事情是有可能會發生。

在此,Colombo也給出了一些建議:

就是别把重要物件連上網際網路。這很簡單。

如果你必須把一些東西聯網,一定確定它是被修改到安全設定程度,而不是用預設設定裸奔,預設設定可能會不安全。

19歲少年連黑25輛特斯拉,過程大揭秘

完整的時間線

以下是David Colombo記錄的事件時間線,所有時間都是歐洲中部時間:

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:特斯拉在協調世界時6:30,歐州中部時間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-10:發現了另一處漏洞,并且做了彙報,這次的漏洞直接影響了特斯拉的API

2022-01-22:特斯拉承認了該處新增漏洞,并且在生産中進行了補救

2022-01-24:公開發表這篇記錄

何許人也?

按David Colombo的自述,他現年19歲,家住德國巴伐利亞州,離慕尼黑車程兩小時的地方。

Colombo自稱10歲開始寫碼,從此紮進網絡安全的世界裡。15歲實際辍學,形式上是向德國商務部申請了每周隻有2天去學校點卯的特殊許可。

實際上學校也不太願意管他,畢竟他真上學時,學校的資訊大螢幕經常無故黑屏故障。

David Colombo現在是個工具現代但形式古典的小作坊主:開了家「Colombo科技」的一人作坊式公司、自學程式設計手藝、自己招攬白帽黑客業務。

顧客包括從紅牛公司到美國國防部的各種需要驗證網絡安全的機構實體。

19歲少年連黑25輛特斯拉,過程大揭秘

參考資料:

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