基于威脅建模的業(yè)務(wù)安全保障方法

頂象
0 評(píng)論 8291 瀏覽 14 收藏 18 分鐘

威脅建模用來(lái)分析系統(tǒng)可能存在的風(fēng)險(xiǎn),通??梢詮娜齻€(gè)維度來(lái)建立模型:以資產(chǎn)為核心、以攻擊者為核心、以軟件系統(tǒng)為核心。

一、什么是威脅建模

所謂威脅,通常是指系統(tǒng)的安全漏洞,可能存在于系統(tǒng)的具體實(shí)現(xiàn)上,也可能存在于系統(tǒng)的安全策略配置上。安全漏洞往往給攻擊者提供了非授權(quán)的訪問(wèn)和攻擊系統(tǒng)的入口點(diǎn),達(dá)成控制或者破壞系統(tǒng)的目的。

業(yè)務(wù)風(fēng)險(xiǎn)也是一種典型的威脅,如航旅業(yè)務(wù)往往面臨機(jī)票爬取、惡意占座等業(yè)務(wù)風(fēng)險(xiǎn),如不能對(duì)業(yè)務(wù)風(fēng)險(xiǎn)進(jìn)行有效控制,會(huì)影響業(yè)務(wù)正常開(kāi)展,增加經(jīng)營(yíng)成本。

威脅建模是使用抽象的概念來(lái)分析系統(tǒng)可能存在的風(fēng)險(xiǎn)。如在業(yè)務(wù)安全這個(gè)維度,通過(guò)定位攻擊目標(biāo)和可利用的業(yè)務(wù)安全漏洞來(lái)提高系統(tǒng)安全性,然后定義防范或減輕系統(tǒng)業(yè)務(wù)風(fēng)險(xiǎn)的對(duì)策的過(guò)程。

從某種意義上來(lái)說(shuō),在日常生活中,我們潛意識(shí)中也在不停的實(shí)踐著威脅建模。我們會(huì)關(guān)注每天的天氣和氣溫變化,如果氣溫驟降,就會(huì)做出添衣的決策,如果第二天下雨的概率很大,就會(huì)做出帶把傘出門(mén)的決策,從而達(dá)到降低患上感冒的可能性。

二、為什么要做威脅建模

1. 完善軟件系統(tǒng)功能設(shè)計(jì)中的安全設(shè)計(jì)部分

絕大部分的開(kāi)發(fā)團(tuán)隊(duì)都使用系統(tǒng)需求分析文檔、軟件系統(tǒng)設(shè)計(jì)文檔以及功能模塊詳細(xì)設(shè)計(jì)文檔來(lái)規(guī)范系統(tǒng)的開(kāi)發(fā)和測(cè)試過(guò)程;整個(gè)開(kāi)發(fā)周期中,只在測(cè)試階段引入滲透測(cè)試或者安全代碼審計(jì)來(lái)提高交付的系統(tǒng)的安全性。但是,因?yàn)樵O(shè)計(jì)階段就缺少安全部分的分析設(shè)計(jì)工作,往往導(dǎo)致滲透測(cè)試和安全代碼審計(jì)工作事倍功半,收效甚微。測(cè)試人員無(wú)法根據(jù)缺乏安全設(shè)計(jì)的設(shè)計(jì)文檔來(lái)估算安全測(cè)試用例的覆蓋度;研發(fā)人員也無(wú)法針對(duì)發(fā)現(xiàn)的威脅快速并高效的提供解決威脅的開(kāi)發(fā)修復(fù)途徑和安全產(chǎn)品采購(gòu)需求。

2. 系統(tǒng)化和量化威脅分析和解決過(guò)程

安全代碼審計(jì)和滲透測(cè)試是兩種最為常見(jiàn)的發(fā)現(xiàn)威脅以提高系統(tǒng)安全性的方式。但是這兩種方式都具備類似的缺點(diǎn):很難系統(tǒng)化和量化系統(tǒng)的安全性。威脅模型更關(guān)注哪些方面可能出現(xiàn)安全問(wèn)題,通過(guò)建模的方式將威脅抽象化和結(jié)構(gòu)化,以圖表幫助確定威脅的范圍,并利用表格和列表的方式來(lái)追蹤和更新威脅,實(shí)現(xiàn)在開(kāi)發(fā)過(guò)程或者運(yùn)維過(guò)程中識(shí)別和管理威脅。

3. 提供安全測(cè)試的設(shè)計(jì)和執(zhí)行的指導(dǎo)

我們使用軟件測(cè)試來(lái)對(duì)軟件產(chǎn)品和階段性的開(kāi)發(fā)結(jié)果來(lái)進(jìn)行質(zhì)量檢驗(yàn),力求發(fā)現(xiàn)其中的各種缺陷,并督促缺陷得到修復(fù),從而控制軟件產(chǎn)品的質(zhì)量。作為軟件測(cè)試中的一個(gè)環(huán)節(jié),安全測(cè)試的關(guān)注點(diǎn)是安全缺陷,保障的是軟件產(chǎn)品的安全性質(zhì)量。

軟件測(cè)試可以使用軟件的需求分析和定義、軟件系統(tǒng)設(shè)計(jì)、模塊詳細(xì)功能設(shè)計(jì)甚至具體編碼實(shí)現(xiàn)來(lái)指導(dǎo)測(cè)試的設(shè)計(jì)和執(zhí)行。同樣,通過(guò)威脅建模,可以在安全測(cè)試的設(shè)計(jì)和執(zhí)行中獲得以下指導(dǎo):軟件系統(tǒng)可能會(huì)面臨哪些方面的安全威脅;系統(tǒng)正在遭遇哪些方面的威脅;以及系統(tǒng)現(xiàn)狀能夠抵御哪些方面的威脅。

4. 提供安全缺陷修復(fù)驗(yàn)證的指導(dǎo)

威脅建模是為了交付安全性更高的軟件、服務(wù)或者技術(shù)。因此,在找到和定位威脅之后,如何處理和管理威脅也是威脅建模不可或缺的一個(gè)部分。威脅建模能夠權(quán)衡解決威脅的策略,并指導(dǎo)系統(tǒng)的開(kāi)發(fā)者使用哪些技術(shù)和系統(tǒng)配置方式來(lái)處理發(fā)現(xiàn)的各類威脅。與功能測(cè)試報(bào)告相似,表格和列表也可以應(yīng)用于整體威脅建模漏洞的跟蹤。

三、如何做威脅建模

下圖是微軟通過(guò)實(shí)踐過(guò)程提出的威脅建模的過(guò)程。首先需要預(yù)設(shè)場(chǎng)景,在場(chǎng)景中,我們需要考慮具體的業(yè)務(wù)特征、真實(shí)用例以及場(chǎng)景中所用的產(chǎn)品;圖表化能夠幫助我們理解業(yè)務(wù)場(chǎng)景和系統(tǒng),以及定位威脅的攻擊面;然后我們需要借助特定的模型和方法來(lái)發(fā)現(xiàn)威脅并對(duì)發(fā)現(xiàn)的威脅進(jìn)行評(píng)級(jí);在處理威脅階段,我們優(yōu)先處理攻擊難度低并且危害程度的威脅;最后,驗(yàn)證階段,需要測(cè)試是否已經(jīng)對(duì)相關(guān)威脅進(jìn)行有效的處理,達(dá)到威脅建模的結(jié)果收斂,系統(tǒng)的安全性有效提高。

從安全角度理解正在構(gòu)建的系統(tǒng)

威脅建模通常從三個(gè)維度來(lái)建立模型:以資產(chǎn)為核心、以攻擊者為核心、以軟件系統(tǒng)為核心。在實(shí)踐中使用哪種建模方式往往根據(jù)系統(tǒng)構(gòu)建者的關(guān)注點(diǎn)來(lái)決定的。

風(fēng)控或者業(yè)務(wù)部門(mén)關(guān)注的可能更多的是資產(chǎn)或者有價(jià)值的東西;安全部門(mén)關(guān)注的更多的是攻擊者,通過(guò)利用攻擊庫(kù)列表來(lái)尋找系統(tǒng)威脅;研發(fā)部門(mén)關(guān)注的更多的是正在構(gòu)建的軟件或者部署的系統(tǒng),將威脅模型作為常用的軟件開(kāi)發(fā)模型的補(bǔ)充,來(lái)提高軟件系統(tǒng)的安全性。

圖表是幫助我們理解系統(tǒng)的最為趁手的武器。我們通常使用數(shù)據(jù)流圖(data flow diagram)、統(tǒng)一建模語(yǔ)言UML、狀態(tài)圖來(lái)理解正在構(gòu)建的系統(tǒng)。

而當(dāng)我們?cè)谶M(jìn)行威脅建模的時(shí)候,我們會(huì)將圖表應(yīng)用于以下三個(gè)步驟來(lái)理解系統(tǒng):

  1. 確認(rèn)系統(tǒng)數(shù)據(jù)流模型;
  2. 確認(rèn)信任邊界;
  3. 確認(rèn)攻擊面。

數(shù)據(jù)流模型是進(jìn)行威脅建模的最佳模型,這是因?yàn)榘踩珕?wèn)題往往是在數(shù)據(jù)流中出現(xiàn),而不是在控制流中。進(jìn)程、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)和外部實(shí)體是數(shù)據(jù)流圖的四個(gè)基本要素。下圖顯示的是一個(gè)典型的數(shù)據(jù)流圖模型。

進(jìn)程:運(yùn)行中的代碼,如服務(wù)、組件;用圓角矩陣或圓形圖形表示。

數(shù)據(jù)流:外部實(shí)體與進(jìn)程、進(jìn)程與進(jìn)程或者進(jìn)程與數(shù)據(jù)存儲(chǔ)之間的交互;用箭頭表示。

數(shù)據(jù)存儲(chǔ):存儲(chǔ)數(shù)據(jù)的內(nèi)部實(shí)體,如數(shù)據(jù)庫(kù)、消息隊(duì)列、文件等;用中間帶標(biāo)簽的兩條平行線表示。

外部實(shí)體:系統(tǒng)控制范圍之外的用戶、軟件系統(tǒng)或者設(shè)備;用直角矩陣表示。

航旅系統(tǒng)某應(yīng)用場(chǎng)景數(shù)據(jù)流圖

在數(shù)據(jù)流圖確認(rèn)后,我們需要引入信任邊界對(duì)數(shù)據(jù)流圖進(jìn)行改進(jìn)。信任邊界是不同主體匯聚的位置,即實(shí)體與其他不同權(quán)限實(shí)體之間交互的位置。信任邊界是識(shí)別威脅的最佳位置,因?yàn)榇蟛糠值耐{往往具備跨越邊界的行為,劃分信任邊界的數(shù)據(jù)流是需要進(jìn)行威脅分析的元素實(shí)例。

對(duì)某應(yīng)用場(chǎng)景的數(shù)據(jù)流圖引入信任邊界

在確認(rèn)數(shù)據(jù)流圖的信任邊界后,我們可以很容易就得到當(dāng)前場(chǎng)景暴露的攻擊面。攻擊面往往就是一個(gè)信任邊界,使攻擊者可以發(fā)動(dòng)攻擊的地方。

1. 找出系統(tǒng)中可能會(huì)出現(xiàn)的威脅

借助業(yè)務(wù)場(chǎng)景數(shù)據(jù)流圖和信任邊界的劃分,我們已經(jīng)對(duì)威脅最容易發(fā)生在那些地方有了一定的概念,接下去我們需要做的是找出這些威脅點(diǎn)可能會(huì)出現(xiàn)哪些具體的威脅。

STRIDE方法是由微軟開(kāi)發(fā)和推廣的用于威脅建模的工具,該方法將威脅分為6個(gè)維度來(lái)進(jìn)行評(píng)估,幾乎能夠覆蓋目前的絕大部分安全問(wèn)題。STRIDE是六個(gè)單詞的縮寫(xiě),分別為:

Spoofing:假冒,偽裝,冒充他人身份;

Tampering:篡改,非法修改數(shù)據(jù)或者代碼內(nèi)容;

Repudiation:否認(rèn),否認(rèn)自己的行為,宣稱自己沒(méi)有做過(guò)某事;

Information Disclosure:信息泄露,獲取到自身權(quán)限本不能獲取的信息;

Denial of Service:拒絕服務(wù)攻擊,消耗系統(tǒng)資源,影響系統(tǒng)的可用性;

Elevation of Privilege:提權(quán),獲取到更高的系統(tǒng)權(quán)限;

結(jié)合數(shù)據(jù)流圖的基本元素,使用STRIDE方法作為威脅維度來(lái)對(duì)各基本元素進(jìn)行威脅分析,可以得出以下表格:

表格所描述的是作為基本元素會(huì)面臨哪些維度的威脅。比如外部實(shí)體可以被偽造,并否認(rèn)自己發(fā)起的行為。數(shù)據(jù)存儲(chǔ)幾乎不會(huì)被偽造,但是往往面臨數(shù)據(jù)被篡改,機(jī)密數(shù)據(jù)泄露以及被拒絕服務(wù)攻擊使不能服務(wù)的威脅,同時(shí),數(shù)據(jù)存儲(chǔ)是否會(huì)面臨否認(rèn)的威脅需要根據(jù)數(shù)據(jù)存儲(chǔ)的用途,當(dāng)數(shù)據(jù)存儲(chǔ)用于審計(jì)的場(chǎng)景下,可能會(huì)面臨偽造的威脅。

接下去我們可以使用該表格對(duì)具體業(yè)務(wù)場(chǎng)景進(jìn)行業(yè)務(wù)風(fēng)險(xiǎn)分析,如對(duì)本文上述航旅某業(yè)務(wù)場(chǎng)景中的各個(gè)要素進(jìn)行潛在威脅定位,可以得出以下表格:

在使用STRIDE方法分析完特定業(yè)務(wù)場(chǎng)景下數(shù)據(jù)流圖中的所有元素示例的潛在威脅以后,我們已經(jīng)得到一個(gè)抽象的威脅定位圖表。接下去我們需要根據(jù)攻擊庫(kù)來(lái)進(jìn)行威脅枚舉,對(duì)各個(gè)潛在威脅構(gòu)建威脅描述和攻擊方法,并輸出一個(gè)威脅列表,對(duì)每一個(gè)威脅項(xiàng)進(jìn)行描述。

頂象技術(shù)在航旅、電商等現(xiàn)實(shí)業(yè)務(wù)攻防中積累下來(lái)的數(shù)據(jù)和經(jīng)驗(yàn),累積了豐富的業(yè)務(wù)風(fēng)險(xiǎn)攻擊庫(kù)和相應(yīng)的防護(hù)方法,以威脅編號(hào)T1和T4舉例輸出威脅項(xiàng)描述如下所示:

2. 對(duì)可能會(huì)出現(xiàn)的威脅評(píng)級(jí)并處理

使用STRIDE方法對(duì)業(yè)務(wù)場(chǎng)景的數(shù)據(jù)流圖分析完畢后,我們已經(jīng)獲取到當(dāng)前系統(tǒng)在該業(yè)務(wù)場(chǎng)景下所面臨的潛在威脅。接下去我們就需要一個(gè)個(gè)處理這些威脅。

在我們確認(rèn)威脅處理方法之前,我們不得不以 “妥協(xié)”的想法認(rèn)清一些現(xiàn)實(shí):首先,有一些威脅是無(wú)法根除的,我們只能降低這些威脅發(fā)生的機(jī)會(huì),或者提高威脅發(fā)生的門(mén)檻;其次,有一些威脅雖然存在,但是發(fā)生的概率很低,而且一旦發(fā)生,帶來(lái)的危害也很小。我們需要找到一些機(jī)制來(lái)判斷是否真的需要投入成本去修復(fù)這些漏洞。

正因?yàn)槿绱?,我們需要采用威脅評(píng)級(jí)的方式,對(duì)我們定位出的威脅項(xiàng)進(jìn)行評(píng)分,然后根據(jù)系統(tǒng)的實(shí)際情況和評(píng)分結(jié)果來(lái)權(quán)衡處理威脅的方式,是解決威脅還是緩解威脅或者接受威脅。

威脅評(píng)級(jí)有很多種方式,如DREAD與CVSS(Common Vulnerability Scoring System)方法。不同評(píng)級(jí)方法對(duì)威脅進(jìn)行評(píng)級(jí)的維度和風(fēng)險(xiǎn)等級(jí)的計(jì)算方法會(huì)略有不同,但是總體來(lái)說(shuō),威脅的級(jí)別等于威脅發(fā)生的概率乘以威脅帶來(lái)的潛在損失。在實(shí)際事件中可以根據(jù)系統(tǒng)或者業(yè)務(wù)場(chǎng)景特征選擇合適的評(píng)級(jí)方法甚至對(duì)其進(jìn)行調(diào)整使其適應(yīng)實(shí)際情況。

DREAD風(fēng)險(xiǎn)模型的計(jì)算方式:

威脅等級(jí):[忽略(0),嚴(yán)重(10)]=(危害性[0,4]+復(fù)現(xiàn)難度[0,4]+利用難度[0,4]+受影響用戶[0,4]+發(fā)現(xiàn)難度[0,4])/2

以威脅編號(hào)T4舉例,其威脅等級(jí)計(jì)算過(guò)程如下:

  • 危害性(Damage):3分:泄露機(jī)密數(shù)據(jù),或資金損失較大;
  • 復(fù)現(xiàn)難度(Reproducibility):1分:很難復(fù)現(xiàn),復(fù)現(xiàn)成功率較低,需要多種因素限制并對(duì)技術(shù)有較高要求;
  • 利用難度(Exploitability):2分:熟練攻擊者可攻擊,需自定制腳本或高級(jí)攻擊工具;
  • 受影響用戶(Affected Users):1分:一般邊緣業(yè)務(wù)的少量用戶;
  • 發(fā)現(xiàn)難度(Discoverability):1分:發(fā)現(xiàn)漏洞很困難,可以通過(guò)猜測(cè)或者監(jiān)測(cè)網(wǎng)絡(luò)活動(dòng)來(lái)發(fā)現(xiàn);

因此威脅編號(hào)T4的威脅等級(jí) = (3+1+2+1+1)/ 2 = 4,中危級(jí)別,威脅的處理方法為使用HTTPS協(xié)議代替HTTP協(xié)議進(jìn)行數(shù)據(jù)傳輸,或使用頂象技術(shù)設(shè)備指紋和風(fēng)控引擎產(chǎn)品,對(duì)用戶登陸事件獲取實(shí)時(shí)安全防護(hù)。

輸出威脅項(xiàng)中威脅級(jí)別和威脅處理方法如下所示:

類似過(guò)程可輸出威脅編號(hào)T1的威脅級(jí)別和威脅處理方法如下所示:

在對(duì)所有的潛在威脅實(shí)例進(jìn)行威脅評(píng)級(jí)和威脅處理方法舉例之后,我們可以根據(jù)系統(tǒng)的業(yè)務(wù)特征,選擇合適的方式來(lái)處理潛在威脅。

結(jié)語(yǔ)

威脅建模是一種方法論,也是一種分析模型,它并不是針對(duì)風(fēng)險(xiǎn)的解決方案。但是通過(guò)對(duì)軟件或系統(tǒng)的威脅建模,可以幫助系統(tǒng)的構(gòu)建者找出最適合系統(tǒng)和業(yè)務(wù)場(chǎng)景的風(fēng)險(xiǎn)解決方案。

威脅建模提供了一組規(guī)范的工具和方法用來(lái)幫助我們處理系統(tǒng)中潛在的安全風(fēng)險(xiǎn),交付更安全的系統(tǒng)。最理想的情況是,我們?cè)陂_(kāi)始構(gòu)建系統(tǒng)的時(shí)候,將安全需求分析引入系統(tǒng)需求分析步驟,在系統(tǒng)概要設(shè)計(jì)和詳細(xì)涉及階段引入威脅建模分析部分,并將其作為測(cè)試階段安全測(cè)試工作的指導(dǎo),輸出測(cè)試報(bào)告的同時(shí)輸出安全報(bào)告。

在現(xiàn)實(shí)中,很多已經(jīng)上線的系統(tǒng)依然面臨著各種的潛在威脅和業(yè)務(wù)風(fēng)險(xiǎn),頂象技術(shù)在航旅、電商等現(xiàn)實(shí)業(yè)務(wù)攻防中依靠積累下來(lái)的數(shù)據(jù)和經(jīng)驗(yàn),累積了豐富的業(yè)務(wù)風(fēng)險(xiǎn)攻擊庫(kù)和相應(yīng)的防護(hù)措施,通過(guò)對(duì)現(xiàn)有業(yè)務(wù)系統(tǒng)的威脅建模,輸出全鏈路、多環(huán)節(jié)縱深風(fēng)控體系,能有效保障業(yè)務(wù)的健康運(yùn)營(yíng)。

 

本文由 @金融科 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未盡許可,禁止轉(zhuǎn)載。

題圖來(lái)自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒(méi)評(píng)論,等你發(fā)揮!