專家論道:如何利用威脅模式
威脅模式是能夠讓隱藏的安全威脅和機(jī)制變成明顯的威脅和機(jī)制的有效方式,這樣安全人員就可以編寫安全要求以及架構(gòu)和測試安全工具。作為開始,筆者想使用STRIDE的修正版,它可以清晰的將威脅到機(jī)制繪制處理。這樣的話,當(dāng)開始新項(xiàng)目時(shí)(如SOA Web服務(wù)等),我們就可以確定哪些標(biāo)準(zhǔn)可以幫助項(xiàng)目進(jìn)行。
威脅 |
機(jī)制 |
示例標(biāo)準(zhǔn) |
Spoofing |
驗(yàn)證 |
WS-Security |
篡改數(shù)據(jù) |
數(shù)字簽名、Hash |
WS-Security + XML Signature |
爭議 |
審計(jì)日志 |
無 |
信息暴露 |
加密 |
WS-Security + XML Encryption |
拒絕服務(wù) |
可用性服務(wù) |
無 |
特權(quán)的提升 |
授權(quán) |
無 |
威脅模式通常都被誤解了,他們并不是關(guān)于建構(gòu)威脅的。作為防御性程序員,我們幾乎不能控制威脅,我們的工作只是超出漏洞并修復(fù)漏洞。漏洞基本上是被動的系統(tǒng)缺陷,威脅是利用漏洞的各種操作,那么我們就能夠1)確認(rèn)威脅;2)處理威脅。威脅建模的最終結(jié)果不是威脅列表,而是解決方法的列表。并且不僅僅是通用列表,積極的威脅還能夠幫助我們在架構(gòu)中找出對策。
此外,如果我們對比構(gòu)建軟件的架構(gòu)/設(shè)計(jì)早期階段的方法,威脅模式其實(shí)是一種對比/比較的結(jié)構(gòu)化方法。例如,如果我們正在建立一套Web服務(wù)并在SOA風(fēng)格(WS-*)和REST風(fēng)格間進(jìn)行選擇,我們可能會想看看每種軟件安全棧支持的現(xiàn)行標(biāo)準(zhǔn)。
威脅 |
機(jī)制 |
示例SOA標(biāo)準(zhǔn) |
示例REST標(biāo)準(zhǔn) |
Spoofing |
驗(yàn)證 |
WS-Security |
XML Signature (僅響應(yīng)) |
篡改數(shù)據(jù) |
數(shù)字簽名、Hash |
WS-Security + XML Signature |
XML Signature (僅響應(yīng)) |
爭議 |
審計(jì)日志 |
無 |
無 |
信息暴露 |
加密 |
WS-Security + XML Encryption |
XML Encryption (僅響應(yīng)) |
拒絕服務(wù) |
可用性服務(wù) |
無 |
無 |
特權(quán)的提升 |
授權(quán) |
無 |
無 |
威脅建模幫助我們將非常抽象的對象(如分析服務(wù)中的軟件安全功能等)描繪出具體的結(jié)構(gòu),但是如你所見,威脅建模并不是關(guān)于威脅,而是關(guān)于安全架構(gòu)元素。這只是個(gè)示例,并不是完整的威脅模型,但是它能夠提供有效的的方式來查找安全架構(gòu)中的問題。