在過去的幾年中,物聯網(IoT)被吹捧為下一個大事件以及蹩腳的物聯網。這兩種描述都是有道理的。保護不力的物聯網設備已被用于許多分布式拒絕服務(DDoS)攻擊,并且據稱有用且友好的設備已侵犯其隱私并暴露其用戶的個人信息。
我相信這些設備的開發人員和制造商正在關注,因此,他們可能會解決身份驗證/授權,不安全的Web界面,不良的網絡服務和加密等明顯問題,以及在發現安全性或其他缺陷時無法更新軟件。我擔心的是,他們沒有對傳統計算行業發現的艱難發現給予足夠的關注。
一旦簡單而明顯的安全漏洞得到糾正,作惡者將轉向其他攻擊面。計算機制造商必須處理的這些其他漏洞無疑將成為物聯網黑客的下一個目標。本文重點介紹系統啟動/固件以及該空間中物聯網設備的潛在安全問題。最重要的是,如何處理它們。
為什么物聯網固件是一個問題
物聯網生態系統中的許多人似乎認為他們的設備是簡單,一次性的一次性設備,例如您運送和忘記的基本設備或嵌入式系統。隨著越來越多的物聯網設備不斷被開發,這種看法是有問題的。
根據定義,物聯網設備是互聯網連接的。這意味著網絡堆棧,通信協議,設備和云中的應用程序可以利用設備提供的數據以及這種連接所暗示的所有攻擊。這種連接性使這些設備成為理想的目標,任何安全漏洞都為攻擊者打開了大門。
由于物聯網設備的復雜性和范圍,在大多數情況下,它們必須在現場進行更新。這些設備的數量及其使用模式驅動更新功能自動和遠程啟動。這為那些改變他們的軟件來改變他們的行為的人提供了另一個攻擊媒介。
這種攻擊媒介并不是一個新現象。自互聯網出現以來,網絡連接的計算機系統一直在處理它們。問題在于,物聯網設備的開發人員已經將他們的小工具視為簡單,單一用途的設備,不易受到惡意行為的影響,因此不容易受到攻擊。好吧,事實證明恰恰相反。壞人可以竊取用戶的數據,使用設備監視用戶防火墻內的網絡基礎設施,或者將設備用作攻擊其他系統的啟動平臺。
該怎么辦
從根本上說,物聯網設備的軟件/固件必須受到保護,就像在通用計算機系統中必須保護代碼一樣。這包括初始化設備硬件,加載和啟動設備軟件(系統和應用程序)的固件和軟件,以及更新物聯網設備固件和軟件的過程。
平臺固件和啟動安全性
自計算早期以來,已經創建了平臺固件來初始化系統硬件并加載初始軟件。對于傳統計算平臺,該軟件通常是從磁盤加載的操作系統,但即使在沒有傳統操作系統的嵌入式平臺上,軟件通常也從緩慢的非易失性存儲加載到更快的RAM內存中以進行正常操作。當 IBM 創建他們的 PC 時,他們為此任務開發了稱為 BIOS(基本輸入/輸出系統)的固件。這個原始的BIOS被克隆并在許多平臺上使用;然而,隨著計算系統變得越來越復雜,處理器很難模仿1970年代PC的行為;一個新的標準誕生了。雖然簡單的嵌入式和 SoC 系統轉向了 U-Boot 和核心引導等單片解決方案,但大多數大型和通用系統都遵循 UEFI 標準。
可擴展固件接口 (EFI) 設計最初是由英特爾為新一代處理器創建的,消除了 BIOS 的大部分架構限制。英特爾試圖將EFI作為整個行業BIOS的一般替代品,但由于它由單個主要行業參與者“擁有”,因此對這個想法有一些抵制。相反,英特爾為行業貢獻了設計,并幫助建立了統一可擴展固件接口(UEFI)論壇來管理未來的架構。今天,UEFI論壇由300多家公司組成,負責UEFI標準的開發和演變。
UEFI論壇采取的舉措之一是系統啟動時的安全性,并且不可避免地需要更新其固件/軟件。已經表明,如果攻擊者可以在系統啟動和啟動過程中獲得對系統的控制,他們可以完全“擁有”該系統發生的情況。最終,攻擊者可以在啟動后禁用軟件中提供的保護,并加載他們選擇的任何其他程序。此外,他們甚至可以在啟動之前就修改普通軟件以完成其投標。如果壞人能夠盡早控制系統,那么該系統可能會完全受到損害。
如果代碼更新過程遭到破壞,情況也是如此。如果黑客創建自己的代碼并將其與系統制造商最初提供的代碼交換,則上面列出的所有壞事也可以在系統更新受損的系統中完成。
UEFI 規范提供了標準接口描述和旨在顯著限制此類威脅的體系結構。用于保護系統免受這些威脅的兩種主要技術是:
安全啟動 – 要求對系統的所有軟件組件進行加密簽名,否則將不允許它們運行。這可以防止在系統啟動期間運行受損的組件,從而維護可以一直延續到應用程序軟件本身的信任根。
膠囊更新 - 這要求所有系統更新都以加密方式簽名,并提供工具以確保系統固件/軟件無法回滾到安全性較低的版本。
UEFI 是唯一將這些安全功能作為其行業標準的一部分的固件解決方案。此外,雖然許多安全研究人員和黑客一直在測試其設計,但沒有人能夠發現安全架構中的任何缺陷。一些實現存在缺陷,但不是設計。
UEFI 還提供了更多與安全相關的功能,但它們超出了本文的范圍。我建議您訪問 http://www.uefi.org 網站,了解規格、白皮書和培訓材料。
那么,為什么不是每個人都使用 UEFI 固件呢?
如果UEFI架構為這些安全威脅提供了“解決方案”,為什么不是每個人都使用它?我相信有幾個主要原因:
許多物聯網開發人員來自嵌入式/SoC領域,其中整體式啟動解決方案很普遍。盡管U-Boot和核心引導等解決方案存在局限性,但開發人員傾向于使用他們知道并且感到滿意的內容。
關于UEFI固件存在許多誤解和“替代事實”,這些事實限制了它在某些社區中的接受程度。這些誤解的例子是:它太慢了;它太大了;架構太復雜;它不是“開放的”等。這些在 uefi.org 網站上的UEFI白皮書中在很大程度上被揭穿了。
我該何去何從?
因此,我希望我已經說服您至少考慮將UEFI作為下一個物聯網設備的固件設計替代方案。如何開始?
下載最新的 UEFI 規范并嘗試閱讀封面以涵蓋它可能不是最好的開始方式。首先,UEFI 是一個接口規范,而不是一個實現。該規范支持許多設備中可能不需要的功能,并且該規范的大小乍一看似乎令人生畏(2000 多頁!只有少數基本功能需要符合規范,您可以根據需要從其他功能中進行選擇。uefi.org 網站上有許多教育材料,書籍和演示文稿。
作為接口規范,它不驅動所描述的服務的實際代碼實現。Tianocore.org 提供了一個開源示例實施,以及不錯的文檔,其中包括多個英特爾參考平臺的完整實施以及可用于為其他平臺創建解決方案的代碼。還有針對 ARM 處理器和平臺的綁定,ARM 人員提供了一個文檔,描述了基于 ARM 的設備上對 UEFI 的要求。我甚至聽說在底層核心引導代碼庫上分層的UEFI接口的實現。完全取決于您的實現是什么樣的,以及需要和實現哪些功能。
有幾家獨立的固件供應商很樂意幫助你為設備創建自定義 UEFI 實現。
底線
物聯網設備是真正的網絡連接計算設備,具有所有伴隨的風險。安全性較弱的物聯網設備不僅會危及設備本身及其數據,還會危及本地網絡和整個互聯網中的其他設備。隨著這些設備的創建者修復了某些設備顯示的明顯安全限制,壞人將尋找其他攻擊媒介。這些攻擊面將包括攻擊設備固件和軟件更新機制。為了讓您的客戶和其他利益相關者滿意,您應該考慮為 IoT 設備實現 UEFI。
審核編輯:郭婷
-
物聯網
+關注
關注
2927文章
46007瀏覽量
389197 -
IOT
+關注
關注
187文章
4293瀏覽量
200948
發布評論請先 登錄
評論