基於 DREAD 模型的漏洞等級計算
去年,寫過一篇《漏洞運營規範化》,當時有些朋友問,無論是使用cvss,dread,owasp,或者是現有國內各大src的評級標準,能不能有一套可以減少爭議,能夠自動化實現的方法呢?
在這一年中,和團隊成員不斷的探索中,進行了關於漏洞評級的模型選型,標準化,自動化計算,以及根據實際情況的小範圍內測和公測,探索了一套基於DREAD模型的漏洞計算模式。
這套模式仍在不斷摸索中,歡迎感興趣的朋友,一起進一步溝通和探討。
一、選型
如前文所述,已知的漏洞計算模型包括cvss,dread,owasp,還有各大src現在應用的方式,真正準備進行標準化前針對各個模型進行了初步的調研。
調研前首先明確,這套模型需要明確幾個概念:
-
目標物件
是用在SRC收集漏洞上,而不是單純的內部掃描器穩定產出的結果,這就意味著收到的漏洞可能場景更復雜,更難以按照型別單一標準化。
-
目標人群
外界的白帽子是第一優先使用者,內部安全工程師是第二使用者,內部的各個業務方包括開發運維測試是第三使用者。也就是說,這裡面大部分的使用者都是非企業安全建設的使用者。
-
漏洞等級的定義
依據是——“可能帶來的影響”。可能帶來的影響,既不是指某類漏洞的危害(這裡指漏洞的等級不止需要考慮該漏洞本身,同時要考慮這個型別的漏洞實際影響的業務等多個維度),也不是已經帶來的影響(已經帶來影響的,可能已經是安全事件了)。
-
漏洞型別的範圍
除了傳統的Web安全漏洞,系統網路安全漏洞和移動客戶端的安全漏洞,可能還需要包括業務安全、業務邏輯,第三方平臺資訊洩露等,因為隨著安全的發展,出現的各種新型安全問題越來越多,也超出了原本技術漏洞的範疇,是更廣義上的漏洞。
幾個定義明確了之後,那哪個更適合應用在SRC呢?
結合以上應用場景,以及各個評分標準下,如果想在SRC進一步進行標準化,那麼DREAD成為了優選的物件。
二、等級計算
由於歷史原因,SRC的漏洞危害,包括忽略的情況下,一共分為5個大類,11個小類,分別是
等級大類 |
等級小類 |
嚴重 |
10 |
嚴重 |
9 |
高危 |
8 |
高危 |
7 |
高危 |
6 |
中危 |
5 |
中危 |
4 |
中危 |
3 |
低危 |
2 |
低危 |
1 |
忽略 |
0 |
由於後續的積分體系,獎勵體系都是依照這個等級規則來的,在等級不變的情況下,想與DREAD模型進行匹配,就需要進行一定的適配。
DREAD模型的計算方式:等級=危害性+復現難度+利用難度+受影響使用者+發現難度
已有的等級計分分數標準,結合DREAD的等級計算方式,最終適配出來的分數是:
等級[忽略(0),嚴重(10)]=(危害性[0,4]+復現難度[0,4]+利用難度[0,4]+受影響使用者[0,4]+發現難度[0,4])/2
其中,
-
危害性、復現難度、利用難度任意一個值為0,總分即為0;
-
等級為0總分除以2後取整。
三、等級定義
1.危害性(Damage)
危害性Damage,即how bad would an attackbe?(來源於維基百科,下同)意指:如果被攻擊了,會造成怎樣的危害?這裡根據系統受危害程度,洩露資訊的資料敏感性,資損,系統受危害程度等方面來衡量危害。
首先是資料敏感性。各公司一般會資料根據敏感程度分等級,可以是對外公開,內部公開,祕密資料,機密資料等
其次,對於資金的損失,可以按照實際的金額的某些區域進行劃分,也可以按照某個比例計算
再次,對於系統的破壞包括但不限於,上面說的資料洩露、資金損失外,能夠完全獲得許可權、執行管理員操作、非法上傳更為嚴重。
由此可參考以下等級劃分:
0分:未洩露敏感資訊,不涉及資金損失
1分:洩露內部公開的資料,或存在較少資金損失
2分:洩露祕密資料,或存在一定資金損失
3分:洩露機密資料,或資金損失較大
4分:獲取完全驗證許可權,或執行管理員操作,或非法上傳檔案,或資金存世巨大
2.復現難度 ( R eproducibility)
復現難度R eproducibility ,即 how easy is it to reproduce theattack?意指,復現這個攻擊的難易程度是怎樣的?重點在於這個漏洞是不是容易復現成功,有難度和概率問題。
(注意,有的地方的翻譯是, 攻擊後恢復運營的簡易度,經過幾番考察,這裡不是恢復運營的簡易度,reproduce指的是復現,即把這個漏洞重複演示,而不是恢復運營,國內有的地方按照恢復運營翻譯是有問題的 )。
0分:非常困難或者不可能復現,即時對於應用管理員
1分:很難復現,復現成功率較低,需要多種因素限制並對技術有較高要求
2分:可以復現,但有時間或其他因素限制
3分:容易復現,需要一步或兩步,可能需要變成授權使用者
4分:非常容易復現,僅僅一個瀏覽器和位址列就ok,不需要身份認證
3. 利用難度( Exploitability )
利用難度 Exploitability ,即 how much work is it to launch theattack?意指,需要什麼才能利用這個漏洞?這裡特指的是,使用什麼才能實現這個攻擊,這裡關注的重點是具體使用的工具。
0分:漏洞無法利用
1分:利用條件非常苛刻,如未披露的0day
2分:熟練攻擊者可攻擊,需自定製指令碼或高階攻擊工具
3分:中級攻擊者能攻擊,已存在可用工具或可被輕易利用
4分:初學者短期能掌握,僅需Web瀏覽器即可
4.受影響使用者( Affected Users )
受影響使用者 Affected Users ,即 how many people will beimpacted?意指,多少使用者會被影響到?實際應用的模型裡,添加了業務的重要程度,以及多少算“多”的概念。
業務的等級,同現在大多數公司對於業務的概念,氛圍核心、一般和邊緣,這個由公司各業務主導業務定級,安全團隊進行參考和微調
數量的概念,參考新頒佈的網路安全法,如果是敏感資料超過50條即可判刑來看,只要敏感資料超過50條即可認為是大量。
0分:對使用者無影響
1分:一般邊緣業務的少量使用者
2分:一般邊緣業務的大量使用者或核心業務的少量使用者
3分:核心業務的大量使用者
4分:所有使用者或涉及多個核心業務的大量使用者
5.發現難度( Discoverability )
發現難度 Discoverability ,即 how easy is it to discover thethreat?意指,發現這個威脅的難以程度?實際應用做了一些具體場景化的舉例。
當對已有應用進行安全審計時,“可發現性”將依照慣例被設定為4分,也就是預設此風險會被發現。
0分:非常困難,甚至不可能發現;需要原始碼或者管理員許可權
1分:發現漏洞很困難,可以通過猜測或者監測網路活動來發現
2分:在私有區域(如內網),部分非可見(如有許可權限制),有時間或其他因素限制,需要深入挖掘的漏洞
3分:容易發現,錯誤的細節已經在外部公共平臺上披露,而且可以用搜索引擎輕易發現,攻擊條件較易獲得
4分:非常容易發現,資訊在web瀏覽器的位址列或者表單裡可見(通常是外網)
四、問題和校正
在以上等級定義和計算下,經過一段時間的內測和小範圍公測,也發現了一些問題。
-
問題:
根據DREAD模型計算的5個維度的權重都是1,而通常情況下更多人更看重漏洞危害對等級的影響,或者有的只看重危害和利用難度,或者有的只看重危害+利用難度+影響使用者,那麼權重是不是需要調整呢,或者刪掉一些維度呢?
反饋:
這個可能需要大量的資料和實踐來支撐,目前DREAD模型的標準權重是1,這個是模型的理論基礎,後續結合實際情況再看是否和如何調整。
-
問題:
大部分時間計算下來的漏洞都是中危以上,基本上很難計算出來低危的漏洞,而實際上確實有低危的情況。
反饋:
1)方法一:這就要引入部分漏洞型別,當選擇這些型別的時候,會預設給出一些參考值。
2)方法二:調整漏洞等級的大分和小分的值,例如現有低危計算是1~2,可以調整為0.5~3.5都是低危。
-
問題:
除了常見的5個維度,有些情況下,如果通盤考慮,除了傳統意義上的安全風險,可能還有覆蓋不全的?
反饋:
1)安全維度本身,有時候需要考慮觸發條件等因素,可以酌情進行調整。
2)公關風險和法律風險,可以作為加分項。
參考
-
DREAD (risk assessment model)維基百科:
https://en.wikipedia.org/wiki/DREAD_(risk_assessment_model)
-
Threat Risk Modeling(OWASP翻譯4)簡書(侵刪):
https://www.jianshu.com/p/3534c30c0a83
-
6步教你搞定網路威脅建模(侵刪)
http://www.sohu.com/a/123809332_505884
-
DREAD: 安全風險評估模型(侵刪):
http://www.aiuxian.com/article/p-1962153.html
特別感謝:
sixwhale小姐姐,一起探索模型並用python編寫成了計算器;
IT小丑,Leej,鬆鬆_,hwan,一起測試優化;
M,友人A,HJK,在小範圍公測中給予大量意見和建議。
p.s.以上是最近這段時間對於基於DREAD模型的研究,其中很多地方都有不成熟甚至錯誤的地方,還請大家多多討論和指教,如果有好的意見建議和錯誤指正,會送上小禮物一份。
p.p.s 節前和晨晨小姐姐一起交流過,漏洞怎麼樣去重和稽核更合適,感興趣的小夥伴且看下回分解——漏洞去重。