軟體開發的實踐,其實不算什麼高深莫測的道理。你總是能在生活中,找到類似的概念。今天,一家公司想談資訊安全,但主事者下班回家,連鎖門的習慣都可有可無。其實最後都會成為高談闊論。
假設今天你不小心掉了皮夾,你心裡面會想些什麼呢?糟了,裡面還有錢(?)裡面有信用卡(?)裡面有老婆的照片(?)如果是我,這些東西都可能會綜合起來,心裡面盤算著,掉了這個皮夾,我會損失多少錢,並且裡面的證件跟卡片掉了,會有什麼樣的風險。要花多少力氣去重辦,要怎樣通報,要怎樣做災後重建。
其實,資訊安全的風險也是這樣一回事。談到風險時,你可能會想到風險發生時,會帶給公司或專案什麼樣的損失與衝擊。然而,比起 SQL Injection 來講,天上的隕石砸中機房的衝擊可能更大,但為何大家不怕隕石呢?因為發生機率極低。
我們在評估風險時,最常的就是將它量化,而量化的評估方式,大多是以風險發生的衝擊與機率相乘而得。這樣的評估方式,衍生出一套更細膩的評估方法。
做為業界被攻擊得最兇的一家公司,Microsoft 近年來在安全上面大大地投入了相當的力氣,這是令人相當敬佩的。其中之一,就是提出風險評估準則 DREAD 模型。這個方式擴充了 ISO 的評估機制,並且可以搭配 Microsoft 另外一套風險分析模型 STRIDE 一起使用。
DREAD 五個字母分別代表以下含意 [1]:
* Damage:風險發生時的損害
* Reproducibility:攻擊的複製可能性
* Exploitability:攻擊手法的難易度
* Affected users:風險發生影響範圍
* Discoverability:風險揭露可能性
透過這五個面向,評估每一個風險的可能性數據,並加權平均,得到風險的評估值。這便是典型的風險分析量化方式。
例如,架一個網站,可能會碰到攻擊者進行 SQL Injection 攻擊,而這時,如果你的網站是像我的部落格,沒人知道也沒人閱讀,那第一個 D,甚至最後一個 D 都是 0。況且如果只有你一個使用者,那 A 也可能只有 1 或 0。但 R 與 E,則取決於你使用的框架與設計手法。
但如果你的網站,是幫政府做的公開網站,這樣對岸的高手們,隨時都想幫你做滲透測試。
今天的內容並不多,因為接下來要談的 STRIDE 的範圍其實很大。並且風險塑模這主題,是資訊安全中極為重要的一環。但這些都是很基本的內容,希望這些內容,可以為各位在職場勞苦的工程師們帶來幫助。
[1]: 可參考 OWASP Threat Risk Modeling