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