對于創建網絡威脅模型并沒有放之四海而皆準的辦法,只需保持靈活性,并專注于誰、什么、為什么、如何以及何時。目前有很多關于創建威脅模型的理論。多年來,筆者從概念水平和應用水平以很多方式來使用威脅模型,這些威脅模型的可用性往往取決于它們被用于什么樣的任務。
解構威脅模型的目的需要退后一步審視它們在任何風險情況下的價值,專注于誰、什么、如何、何時以及為什么:
˙誰在進行攻擊,包括民族國家、有組織的犯罪團伙等?
˙攻擊的終極目標是什么,例如信用卡數據或計算機資源?
˙攻擊者將使用何種方法來獲取數據,例如SQL注入攻擊還是緩沖區溢出攻擊?
˙攻擊者為什么要執行攻擊?其目標數據具有貨幣價值,或者攻擊者可以利用你的資源來攻擊其他目標?
簡單地說,威脅可以被描述為誰將會攻擊什么,使用何種方法來達到其目的。
什么以及如何:威脅模型通常把大部分重點放在什么和如何。從攻擊什么以及如何攻擊來入手,可以讓你找出設計中的潛在漏洞,無論誰將執行這個攻擊及其動機。然而,僅專注于什么和如何存在的挑戰是,它們會隨著時間而改變。
誰和為什么:與什么和如何不同,誰以及為什么往往是相當穩定的。這里的假設是,無所謂誰或者為什么攻擊,重點應該是阻止攻擊。不過,專注于誰和為什么可以帶來提供更好保護的新思路。
例如,我們知道在進行高級持續威脅(APT)的攻擊者正在模糊測試Flash Player。為了從不同的角度來看這個問題,我們決定停下來問為什么。這不僅僅是因為Flash Player的普及性。攻擊者專注于Flash Player是因為他們可以將其嵌入到Office文檔來執行有針對性的魚叉式釣魚攻擊。
有針對性魚叉式釣魚攻擊是有價值的攻擊方法,因為攻擊者可以在最小的風險下直接訪問特定目標。通過添加Flash Player警告對話框來警告用戶Office中潛在的魚叉式釣魚攻擊嘗試,我們解決了Flash Player帶來的威脅,從而讓攻擊沒那么有效。在添加簡單的緩解措施后,零日攻擊的數量減少,迫使攻擊者開發新的漏洞利用方法。
何時:檢查何時進行攻擊也是非常有用的。大多數人認為威脅模型是針對設計階段的工具。然而,威脅模型也可以用于制定事件響應計劃。你可以考慮給定的風險,“這個緩解措施是何時失效或者被攻擊者繞過,我們將如何響應。”
威脅模型靈活性
針對應用程序的威脅模型可以有利于控制高級別(誰/為什么)和低級別威脅(如何/什么)。但在快速發展的環境中,保持威脅模型的更新需要付出很大的努力。
并且,這個問題沒有放之四海而皆準的辦法。從以往的經驗來看,最好的方法是盡量保持威脅建模的根本,同時保持靈活性。為了實現這一點,考慮這三個因素:
1. 應該有針對每個應用程序的一般高級別威脅模型。這種高級別模型可以確保每個人都朝著同一個方向,并且,它可以根據對應用程序的重大改變來進行更新。高級別的威脅模型可以與客戶共享,幫助新員工了解應用程序的安全設計,并作為安全團隊的參考。
2. 威脅模型不必記錄在傳統威脅模型格式中。 傳統格式非常清楚且有組織性,但也很復雜。威脅模型的目標是記錄風險并制定計劃來解決這些問題。對于單個功能,這可能是讓每個人都可以理解的簡單的信息,例如“這個功能沒有安全影響”。
3. 把信息放在開發人員最有可能找到的地方。 例如,如果你使用上述的簡化格式,最好把威脅信息放在緩解措施存在的地方。這些威脅信息可以直接包含在規范中、在代碼注釋或者用于威脅單元測試中。當正式威脅模型作為完全獨立的文件存在時,這可以幫助消除交叉引用問題。
威脅建模的概念可以幫助確保設計的全面性。通過檢查誰、為什么以及什么時候,威脅建模的傳統方法可以更有效地識別高基本環境和響應。通過靈活的方式來說明文件,安全信息可以放在開發人員最可能找到、使用和維護的地方。這些步驟可以幫助進行威脅建模。