前言
11月24日左右,大量媒體發文說特斯拉APP存在漏洞,導致特斯拉汽車可被他人盜取。最近FB編輯也剛好有時間,于是就對這個事件做了一個詳細的調查——某些不負責任媒體及號稱安全媒體的“炒作”、“故事會”背后,真相往往并不是你“看到”的那樣。
我們先看一下特斯拉APP的功能。根據特斯拉官網的描述,該APP有著以下功能。
無鑰匙駕駛:忘記攜帶車鑰匙時也可以解鎖并駕駛 Tesla。
里程狀態:檢查當前里程數、充電狀態并接收充電完成提醒。
溫度控制:遠程啟動天窗通風或溫度控制系統。
GPS 定位 :再也不會忘記您停車的位置。
注:在使用移動應用程序之前,請確保您的 Tesla 已經交付,并且在中央觸摸屏的設置菜單中啟動了“遠程訪問”功能。
攻擊過程
可以說這個特斯拉APP基本上可以完美替代車鑰匙。但是這個APP的漏洞在哪里?先讓我們觀看一下Promon團隊針對特斯拉APP的安全檢測過程,視頻已經做過漢化處理。
觀看完視頻后,可以總結出他們的測試過程如下:
Promon一名安全人員搭建了一個Wi-Fi釣魚網絡。
特斯拉的車主使用的是Android手機,連接釣魚網絡后下載了惡意APP。
惡意APP重新打包了特斯拉的APP,植入了惡意代碼,并且完成靜默安裝。
當該用戶再次登陸偽造的特斯拉APP時,他的登陸賬號和密碼就被發向了Promon安全研究人員。
安全研究人員利用這個登陸憑證登陸了正常的特斯拉APP對車輛進行定位。
最后找到汽車所在位置,再利用APP進行解鎖,然后開車走人。
這個鍋真該特斯拉背?
Promon是位于挪威Oslo城市的一個研究所,由SINTEF和Oslo大學資助和組織,主要是致力于APP安全的研究領域,并且號稱已經保護了數百萬的APP應用。雖然如此,但是這次針對特斯拉的實驗非常的不嚴謹。
如果要滿足Promon視頻中的攻擊結果,那么需要滿足以下條件。
1. 用戶必須連接到釣魚熱點
2. 用戶必須安裝Promon制作的釣魚APP
3. 用戶的Android系統必須是Android 6以下的版本
4. 用戶必須開啟特斯拉遠程訪問功能
實際上,這個按理來說不應該是特斯拉APP的漏洞,主要是由于Android 6以下的版本存在漏洞,所以說攻擊者主要是利用Android老版本的漏洞。利用釣魚熱點將Google商店定向到了一個虛假的地址。所以當用戶以為自己是在Google Play下載的APP,實際上他們下載的是一個惡意軟件。而且因為Android低版本所存在的漏洞,將導致惡意APP可以提升自己的權限,從而跨目錄訪問和修改其它APP的文件。估計伊隆·馬斯克看完這個視頻后是十分蒙B的,莫名其妙的躺槍了。然后特斯拉立刻發表聲明稱這個不是特斯拉的漏洞,這個鍋我們不背!
或許迫于媒體壓力和公關壓力,Promon官方主頁在11月25日發表了一篇文章,說明這個并不是特斯拉的漏洞,這個攻擊方法可以針對所有的Android APP。
同時特斯拉官方也對這個視頻做出了回應:
這份安全報告和視頻并未指出特斯拉APP存在任何漏洞。視頻只不過演示了一個再明白不過的道理,如果手機本身已經被黑掉了,那么這部手機上的App就不可能再是安全的。這些研究人員只是想告訴大家請更新自己的安卓系統,不然一旦安裝惡意APP,就會危及所有安卓系統內的APP,當然也包括特斯拉的APP。
至始至終,感覺這個實驗完全就是一場烏龍鬧劇。 不過這次實驗也反應了特斯拉APP在設計中的一些缺陷。
1. 特斯拉APP沒有針對低版本安卓提供任何形式的防護措施
根據Promon的官方統計,從2015年至今,全球大約只有24%的安卓設備是Android 6的版本,而75%的安卓設備用的是Android 6以下的版本。視頻中演示的手機型號為三星Galaxy A5,并且未對設備進行root。
2. 特斯拉APP的OAuth授權文件是以明文存儲的
據悉特斯拉APP在用戶登錄成功后會生成一個OAuth令牌,之后全部的請求都會帶入這個令牌,也就是說擁有OAuth令牌你可以實時定位,解鎖和駕駛特斯拉等。據悉特斯拉APP的OAuth令牌是有效的為90天。90天時間已經足夠干很多事情了。
誰來背這個“鍋”?
了解入侵步驟后,大部分讀者都認為這個安全問題不在于特斯拉,而是在于用戶本身。但是正如Promon報告中所述,全球大約有百分之75的安卓設備還存在安全問題,主要原因是制造商并未針對這些設備制定相關的更新ROM,如果用戶要對這些設備進行更新,需要自己去刷相關ROM。關于IoT安全防控方面,大部分廠商都采取主動式安全策略,比如設置防火墻,威脅預警建模等等。但是可否換一個思路將主動式安全和被動式安全結合起來?在這里iOS做的就很不錯。使用iOS設備的朋友都清楚,在下載APP的時候,有些APP對系統版本有特定的要求,如果你的系統版本過低,需要自己對系統進行升級才可以使用。但是Android系統卻一直沒有引用iOS系統這種安全機制。
換個思維來看,在IoT控制端啟動的時候,可否在Secure booting(安全啟動機制)上下功夫。首先是主動式安全策略,當控制端啟動的時候會檢查系統的相關環境,在滿足特定的情況下才可以順利啟動控制端。實際上,針對IoT的安全策略也有很多,主要是分為以下五個大類。
1. 安全啟動:啟動時使用密碼生成的數字簽名來驗證設備上的軟件的真實性和完整性。
2. 訪問控制:對每個訪問的請求進行控制,比如權限劃分,資產劃分,IP段劃分等。
3. 設備認證:對登陸的設備進行相關信息驗證,比如Mac地址,IP地址等,可以參考Steam的Mac地址信任策略。
4. 防火墻和IPS:通過防火墻和IPS對IoT設備進行保護,阻止含有威脅的流量請求。
5. 更新策略:一旦IoT相關設備運行起來后,應該有一個或者多個更新策略以預防突發的安全預警。
總結來看,這個鍋不應該特斯拉單獨來背。安全是一個木桶理論,只有多個方面做到安全,才能保證一定程度的安全。所以安全,不單純是企業方面需要努力,用戶及使用者也需要下功夫。正如上文所述,關于IoT安全,除了主動式安全策略,還應該有相對應的被動式安全策略。
總結
很多安全會議都會講到IoT安全,那么為什么IoT安全如此重要?IoT的全稱是Internet of Things,中文也叫做物聯網,其目的是把物品和網絡關聯起來。在早些年,互聯網安全事件只能發送在網絡世界里。但是現在,網絡安全已經可以直接的影響到我們現實中的生活。在IoT日益發展的今天,安全情況卻不容樂觀。最為引人關注的就是mirai僵尸網絡事件了。部分黑客利用mirai腳本入侵了全球絕大部分物聯網攝像頭,并且利用這些僵尸網絡進行大規模的DDOS攻擊,造成美國和德國的網絡一度癱瘓,而相對于IoT的安全研究還有很長一段路要走,可謂是任重道遠。