威脅建模對于軟件開發的生命周期是一個很重要的過程,但是這個詞的使用并不局限于軟件。
在此,我們將關注如何為物聯網建立威脅模型。本文首先所關注的是由物聯網的客戶端所帶來的新威脅面,以及不斷增加的終端所帶來的日漸增加的安全風險。
不能把物聯網安全當成是一個簡單的消費者的安全問題。物聯網安全對于所有的部門和領域都至關重要,不妨考慮一下:
政府:城市的規劃者們正忙于設計所謂的智能城市,其中布滿了可以使服務更高效的傳感器和連接器。物聯網可以優化地面交通,可以為智能城市提供運力和動力。
工業:重工業可以連接到互聯網的傳感器網絡,從而監視工人是否暴露在自然的或人造的危險化學物品中。工廠中的傳感器可以為預測性維護提供幫助,并且可以將運營數據提供給分析引擎。例如,航空單位可以利用飛機發動機引擎生成的海量數據,進而優化飛行路線和燃料計劃。
企業:物聯網使得企業的外圍世界更加復雜。幾乎有一半的新技術員工是常常在其住處工作的遠程雇員。不妨想象一下其房間充滿了大量的“準安全”的有可能搭上單位VPN便車的物聯網設備。IT部門已經在清理為臨時用戶服務的網絡,因為一些惡意的物聯網設備已經出現。
無論是消費者、政府、工業界,還是企業都會受到影響,有時甚至被物聯網改變。為物聯網構建威脅模型可以將單位及其他群體的環境變為一個整體上安全的物聯網。
就像最初的互聯網一樣,物聯網可能會改變一切。但與互聯網不同的是,我們有了安全意識,而且有機會將安全性構建到物聯網中。

圖1 物聯網生態系統威脅面
綜上所述,物聯網需要一種比當前更加強健的安全應用,否則,我們構建的將是一個遍布補丁的卻又漏洞百出的系統,正如現在的互聯網一樣。物聯網絕對不僅僅是消費者的問題,它涉及到企業、工業界和政府等主體。
將安全性應用到任何系統開發中的一種方法是通過威脅建模過程。威脅模型的評估可以使系統設計者和安全專家能夠做到:
1.分類記錄在用資產;
2.確認潛在威脅;
3.給資產和威脅評級和打分。
這也許聽起來很復雜。但如果有正確的態度和適當的人員,完成這些任務就頗為激動人心。下面就來看一下威脅建模的機理,然后提供一些啟動一次新威脅模型項目的技巧。
第一步:分類記錄在用資產
對于一個物聯網項目,資產的范圍不僅包括設備自身,還有支持該設備的所有系統。
一個典型的物聯網項目架構要有只讀性的傳感器,要有一些控制,還要通過一個控制器節點來進行通信。這個節點將會通過本地網絡或公有云亦或私有云來發布數據。云中的數據收集節點實施數據處理和分析,并且還可能有一個與項目接口的Web應用。最后,還需要平板電腦及其應用程序,以便于與Web應用或控制器進行接口。擁有成熟的安全過程的任何一家單位都應當已經在其Web應用和云端內容中建立過威脅模型。那么,只需將一個新的威脅模型應用到設備和控制器上。但是,很多新的物聯網廠商和創立者并沒有成熟的項目,也沒有為整個系統建立威脅模型。
如今,已經有許多安全專家關注到了這個問題。開放式的Web應用程序安全項目(OWASP)有一個物聯網項目頁面,其中確認了物聯網系統的很多資產,如圖1所示。
管理員不妨考慮每一個威脅面,并且確認單位項目中的資產,然后列示出來,以此作為威脅模型評估的一部分。
第二步:確認潛在威脅
幸運的是,很多潛在的威脅已經為人所知。我們只需將其應用到項目中。早期的威脅建模中,其利用的模型之一就是“六面”威脅分類,其目的在于幫助我們去詢問如下六個問題(如圖2):
欺騙:攻擊者是否能夠假裝是另一個人呢?
篡改:攻擊者是否能夠成功地將篡改后的數據注入到系統中?
否認:用戶是否能夠偽裝交易并未發生?
信息泄露:應用程序是否會將數據泄露給外部?
拒絕服務:應用程序是否能夠被惡意關閉呢?
特權提升:用戶是否能夠獲得超級用戶權限?
很多眾所周知的攻擊,如中間人攻擊或是重放攻擊,就屬于這些類型。

圖2 “六面”威脅分類的六個問題
在第二步中,單位的威脅模型團隊(當然可以是一個虛擬的團隊)可以實施頭腦風暴,為每項資產提出盡可能多的威脅,并且需要一位主持人來記錄一切。為了保證這個步驟盡可能做到真正的“頭腦風暴”,管理者需要在討論中只考慮威脅,而不是減輕威脅的方法。在此時不要評價,也不要判斷。如果某人說,“這是不可能發生的”,或者“我們可以通過那種方法來解決……”,管理員就要說,“我們在這兒只是盡可能多的提出可能性和問題,下一步將會為這些威脅評級,最后一步才是如何減輕以及解除威脅”,從而確保“頭腦風暴”不脫離軌道。
第三步:威脅和資產評級
在所有的威脅都被集思廣益并記錄后,就需要對其評級。查看威脅清單并決定每種威脅的風險評估。選擇一種有序的量化系統,如設置為1到3(1為最低風險)。然后再從如下五方面對上述變量進行打分:
破壞力:這種威脅可能引起的破壞力有多大?
可再生性:這種威脅的繁殖能力或可再生能力如何?
漏洞可利用性:有沒有不太可能被利用漏洞的極限條件?
受影響的用戶數量:是所有用戶,還是一些用戶或單個用戶受到影響?
可被發現性:這種威脅被發現的可能性有多大?
這種評級系統并不是新鮮事物,很多現代的從業者們一直認為可再生性和可被發現性可以取最大值。這是因為整個市場和漏洞資金項目都已經在教育研究者和攻擊者們,要將時間用于發現漏洞,并且準備好應對的武器。我們應該是假設存在一個漏洞,那么就會有人發現它,并且想辦法實施漏洞利用。
在建立威脅建模系統后,要注意,你要分析的是威脅和資產,而不是人。
下面看一個威脅建模案例,其中涉及一個智能泊車計量系統。如前所述,我們將分三步進行。
第一步,確認在用資產
對于智能泊車計量系統的部署來說,資產的清單相對較短并且容易定義:
信用卡的付款信息;金錢(硬幣);泊車計量時間;泊車空間。
計量系統的制造商可以擁有不同的威脅模型,其中包括設備自身的物理方面:諸如設備內存、固件接口以及生態系統的通信等。
第二步:分類記錄各種威脅
在前面的“六面”威脅分類模型中,我們通過考量資產的六個方面來幫助確認一個系統的威脅。在將這個模型應用到智能泊車計量系統的資產時,可以發現如下的威脅清單:
當然,還有更多威脅,但為行文的簡短,在此僅關注上述威脅。
第三步:利用上文提到的量化系統給威脅評級和打分
下一步就是用一種升序計數模式來量化這些威脅。量化系統的計數可以從1到3,也可以從1到10。在此,我們用1來表示最小的威脅。下面用1到3的威脅量化模式。

圖3 評級打分方法

圖4 行動計劃建議
假設威脅的可再生性和可發現性都取最大值,就只需要給破壞力、漏洞可利用性和受影響的用戶數量來評級和打分,如圖3所示。
威脅建模的要點在于創建類似于以上表格的一個表,要列舉出全部威脅,并且確定其優先處理的等級。減輕每種威脅也就成了一個自然跟進的過程。確定優先次序對于在資源稀少的情況下制定決策是有益的,并不是任何威脅都需要立即解決。有時,證明其存在或者只是簡單地接受風險也是可以采取的正確策略。
在部署物聯網泊車系統的例子中,運營商選擇了下面的一些減輕威脅的措施,其中也包含了作者提供的一些建議,如圖4所示。
雖然這種威脅模型主要關注傳統的信息安全威脅,但運營商也從法律的角度進行風險分析。單位還應對智能城市的其他項目進行檢查。
運營商還在考慮由項目的子廠商帶來的風險;物聯網的制造商還在將微服務作為后端的解決方案,以用于集成和分析所有傳感器的數據。
但是,這只是廠商將一些代碼交給云并且進行維護的方法。在此,必須考慮到存在的各種風險,其中包括在廠商破產時會發生什么?再設想一下,陳舊的微服務代碼會不會不利于升級,從而導致通信的大量失敗。
一個適當的物聯網模型包括了現有基礎架構、Web應用、Web服務、云、傳輸安全以及人員的全部范圍。適當的威脅模型必須考慮到人的因素。因為我們永遠不知道一個具有破壞力的人會在什么時候會損害物聯網系統的安全。