來源:貿澤電子 物聯網(IoT)應用在將外圍傳感器、網關和云資源結合起來的同時,也將遭到前所未有的攻擊,因為這會引入大量潛在的攻擊面和安全漏洞。隨著IoT應用與企業基礎設施的關聯愈發緊密,這就需要對這些威脅、所引發的可能性及影響有一個清楚的了解。通過有條不紊的對威脅和風險進行評估,開發團隊可以在必要時加強安全性,或者對可接受的風險做出明智的決策。 連接系統中廣泛存在的安全漏洞已被頻頻報道。即使是快速瀏覽新聞頭條,也可以看出攻擊范圍之大,從公開的大規模分布式拒絕服務(DDoS)攻擊到極為隱蔽的高級持久性威脅(APT),這些威脅會駐留并悄悄地提取有價值的數據,或為更極端的攻擊做準備。 這些聳人聽聞的攻擊讓我們意識到,使用安全機制和創建安全系統不是一回事。黑客能成功侵入各種安全機制構建的系統,即使是最注重安全性的開發團隊也可能會在設計中不知不覺地留下開放式攻擊面。 事實上,當今設計的復雜性導致可利用的開放式攻擊面增加,特別是諸如IoT應用的多層連接系統。當大量不同類型的可編程設備連接到云時,端到端的安全性就更像是一種統計概率問題,而不是絕對的確定性。在這樣一個相互關聯的系統體系中,每個元件不僅可提供特定功能,還會引入一組安全漏洞。 通過充分了解每個漏洞如何對整個應用造成威脅,企業可以判斷出該漏洞所來的風險是否超出了可承受范圍,以及是否需要進行后續緩解。 這種預測風險的能力所具有的戰略價值是難以盡述的。同時,通過將安全漏洞與風險評估相結合,開發團隊可以設計出一個戰略路線圖,開發一種實用的方法來幫助連接系統應對幾乎源源不斷的威脅。事實上,如果沒有通過威脅和風險評估獲得較高的認知,即使是最有經驗的開發團隊也不敢完全保證系統和應用的安全。然而,要獲得這些知識,首先要構建一個有據可查的威脅模型,以便清楚地了解系統所面臨的潛在威脅。 威脅模型可以捕獲與系統設計相關的特定安全漏洞。從理論上看,創建威脅模型可以說是很簡單,比如,開發人員通過分析設計,就能識別與每個底層組件相關的安全漏洞。然而,我們會發現在實踐中,威脅建模所涉及的工作、研究和策略遠遠超出了最初的想法,而且還會帶來一系列技術安全問題。在廣泛應用后,威脅建模還可以識別與物聯網應用相關的生命周期和總體安全策略中的漏洞。最后,可接受威脅模型的內容可能會隨著它們所服務的物聯網應用和組織的不同而變化。即便如此,不同的威脅模型也有某些共同的特點,任何威脅建模方法都會遵循一些共同的步驟。 威脅建模 威脅建模首先是對系統的準確描述,即所謂的評估目標(TOE),與特定的用例相關,例如公用水表的操作。如果說威脅模型描繪出了系統漏洞的畫面,那么TOE描述就是畫布。通過擴大或縮小TOE范圍,威脅建模團隊可以在威脅識別過程中擴大或縮小關注點。例如,Arm最近發布的智能水表威脅模型嚴格地限制了它的TOE,只關注系統核心(圖1)。 ![]() 圖1:Arm的水表威脅模型(來源:Arm) 當然,將TOE限制在更大、更復雜的系統或應用的一個子系統中,意味著識別威脅、評估風險和構建有效緩解計劃的能力就會受到限制。對于物聯網應用等復雜系統,經驗豐富的威脅建模師可能會創建一系列威脅模型,從對整個系統非常的抽象描述到對組織具有特殊意義或需要關注的子系統日益詳細的描述。 無論采用何種方法,都不會對TOE描述的詳細程度提出絕對要求。旨在提供每個組件詳盡細節的建模方法可能會耗盡流程參與者的所有精力。另一方面,過于抽象的模型可能會隱藏微妙的漏洞,或阻止識別深深隱藏在依賴關系鏈或第三方軟件庫中的漏洞。 一種有效的折中方法就是只收集所需的詳細信息,以捕獲在系統的特定獨立區域之間跨“信任邊界”的所有交互(圖2)。 ![]() 圖2:不同區域之間可能跨信任邊界示例(來源:Microsoft) 例如,物聯網應用可以包含多個與云資源、網關、物聯網終端設備和用戶鏈接的區域。跨信任邊界操作的事務特別容易受到一系列針對傳輸數據、安全憑證或協議的異常攻擊。即使是看似無安全問題的跨信任邊界的通信嘗試,也會為“指紋”攻擊創造一條路徑,黑客會利用系統響應中包含的已知指示器來確定系統的底層組件,為更直接的攻擊做好準備。 當然,如果其中一些組件來自第三方,那么理解每個區域底層組件之間的交互就變得尤為重要。例如,使用第三方傳感器驅動程序的物聯網設備,會受到驅動程序邊界的威脅(圖3)。 ![]() 圖3:數據流程圖(來源:Microsoft) 雖然適當的詳細描述對于威脅建模是必不可少的,但卻無法識別與這些詳細信息相關的特定威脅。在Arm的水表威脅模型中,建模者提供了與每個資產相關的威脅簡表,如固件、測量數據以及與可能觸及TOE的外部實體(如用戶、管理員和攻擊者)的交互信息。 對于固件來說,該模型可以描述特定威脅,包括安裝受損固件、修改用于驗證固件更新、克隆等的相關安全證書所帶來的威脅。開發團隊可以根據資產和已識別漏洞列表,列出一組相應的安全目標和緩解方法。例如,Arm的水表模型最后列出了一系列包括針對固件的安全需求,例如需要安全引導、固件驗證、對驗證失敗的響應等。 可用資源 在識別潛在威脅時,很少有開發組織能夠實時識別其TOE描述中的詳細資產和流程可能會面臨的每一個潛在威脅。然而工程師可以利用一些公開的資源來完成這部分操作。開發人員可以利用公共資源,如通用攻擊模式枚舉和分類(CAPEC)列表,自上而下地審查最可能的攻擊類型。然后,自下而上地識別公共弱點枚舉(CWE)列表中列出的可能攻擊目標,該列表描述了系統設計方法中固有的缺陷,例如使用硬編碼憑據時。設計人員在確定其設計中使用的特定硬件或軟件組件時,可以求助于通用漏洞披露(CVE)列表,該列表列出了可用硬件或軟件組件中的特定軟件缺陷或潛在漏洞。 對于風險評估,通用脆弱性評分系統(CVSS)等資源為評估與特定脆弱性相關的風險提供了一致的方法。雖然風險與特定漏洞的性質有關,但它也包括其他因素,例如用于執行攻擊的途徑(向量)、利用漏洞所需的攻擊復雜性等。例如,通過網絡執行的攻擊比物理訪問攻擊帶來的風險要大得多。同樣,簡單的攻擊比高度復雜的攻擊具有更大的風險。使用CVSS計算器,工程師可以快速計算出這些不同的影響因素,得出與特定威脅或威脅類別相關的風險等級的分數值。對于Arm水表,CVSS計算器計算出固件攻擊所涉及的因素具有9.0的臨界風險值(圖4)。 ![]() 圖4:CVSS計算器(來源:FIRST.org) 由于廣泛的需求和技術問題,帶動了各種自動化工具的出現,如開源Web應用程序安全項目(OWASP)Threat Dragon項目、Mozilla的SeaSponge和Microsoft的威脅建模工具,以幫助開發人員借助于建模工作。每種工具都采用不同的威脅建模方法,從Threat Dragon項目和SeaSponge中的系統圖到Microsoft的詳細STRIDE(即“欺騙”、“篡改”、“拒絕”、“信息披露”、“拒絕服務”和“特權提升”)。盡管這些工具已經有好幾年的歷史,而且通常是為企業軟件系統構建,但是威脅建模是一個廣泛適用的持久過程,更多地依賴于當前的攻擊向量、弱點和漏洞列表,而不是特定的方法論。盡管如此,還是一直有新的工具不斷涌現,有望在系統描述和威脅識別之間建立更緊密的聯系。然而,盡管深度學習技術在快速占領其他領域,但在將這些技術應用于自動威脅和風險評估方面仍然存在重大挑戰。即便如此,智能建模和評估工具仍將很快被廣泛應用。 同時,開發人員還可以找到包含安全弱點、漏洞和攻擊模式的各種列表,以至于信息量過于龐大,特別是對于那些剛剛開始進行威脅建模的人來說。事實上,過于復雜也是不進行威脅建模的常用借口之一。工程師們可以利用較為溫和的方法,專注于最常見的威脅,而不是深入到細節。截至本文撰寫之時,OWASP仍在回顧其2018年的10大物聯網安全漏洞,而其之前的10大物聯網安全漏洞列表也非常有用。也就是說,開發人員只需在他們常用的資訊網站上找到這些漏洞和攻擊的現成目錄即可。 然而,對于能夠快速突破基礎攻擊的組織來說,也可以將這些方法用于解決物聯網設計中的安全相關問題。例如,機器控制回路中使用的系統通常面臨與功能安全相關的任務關鍵型需求。在這類系統中,防護和功能安全交織在一起,因此威脅模型可能需要考慮到防護或安全方面的漏洞會造成人身安全風險的情況。同樣,防護和隱私也在許多方面有重疊之處,任何一方的漏洞都可能導致個人身份信息泄漏。 結論 威脅建模和風險評估在復雜系統中的有效應用遠遠超出了可用選項和技術的任何簡單列表。與每個特定系統一樣,每個開發組織都擁有自己獨特的約束機制和能力。在滿足某個系統或組織的需求的同時,可能會完全忽略另一個系統或組織的需求。唯一共同的要求可能是需要先進行威脅和風險評估。即便如此,企業是否應該嘗試創建一個“完整”的威脅模型和風險評估呢?答案是否定的,因為這種嘗試并不能得到一個完美的結果。 世界自然混亂的進程,系統漏洞緩解與黑客利用之間的抗衡,最終使任何追求完美的嘗試都無法實現。但如果不根據威脅模型和風險評估建立安全路線圖,將無法避免導致常見安全漏洞的一些陷阱和彎路。 作者:Stephen Evanczuk 在電子行業有20多年的寫作經驗,涉及廣泛的主題,包括硬件、軟件、系統和物聯網等應用。他獲得了神經網絡神經科學博士學位,并在航空航天行業從事大規模分布式安全系統和算法加速方法的研究。目前,他在寫技術和工程方面的文章的閑暇之時,還在研究深度學習在識別和推薦系統中的應用。 |