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