軟件安全:使用ARA尋找軟件缺陷
簡單地說,如果我們想要解決軟件安全問題,我們就需要把更多注意力放在缺陷上。
使用ARA尋找軟件缺陷
多年來,我們都在致力于軟件風(fēng)險分析和設(shè)計(jì)審查。當(dāng)我們在1997年第一次開始審查系統(tǒng)的安全性時,我們采用了專業(yè)的方法--三個專業(yè)人士在房間里使用一塊白板來審查。而現(xiàn)在,當(dāng)我們深入檢查軟件架構(gòu)中的缺陷時,我們采用的是被稱為架構(gòu)風(fēng)險分析(ARA)的方法。
ARA包括四個步驟。步驟0(我們通常是從0開始的,因?yàn)槲覀兪瞧婵停┦谦@取一個架構(gòu)圖。這可能聽起來很愚蠢,但不管你信不信,從開發(fā)團(tuán)隊(duì)獲取相關(guān)的最新的架構(gòu)圖比聽起來更困難。例如,一些開發(fā)團(tuán)隊(duì)指出“代碼就是設(shè)計(jì)”,對此,我們不敢茍同。
這個步驟的最終目標(biāo)是創(chuàng)建軟件系統(tǒng)的單頁總覽視圖。單頁總覽視圖非常重要,因?yàn)槲覀兿胍?ldquo;森林級”的軟件視圖,避免“只見樹林不見森林”。我們都知道,漏洞出現(xiàn)在樹木級,而缺陷則在森林級。我們不想要看到大堆代碼,我們不想要UML,也不想要防火墻配置網(wǎng)絡(luò)地圖。在很多情況下,我們可以通過詢問軟件架構(gòu)師、開發(fā)人員和測試人員自己繪制一頁紙的總覽圖。
你的圖表需要包含一些重要元素,其中包括,但不限于,DAO/持久層、業(yè)務(wù)邏輯/業(yè)務(wù)規(guī)則、安全功能、工具包(WSE、WCF、Ajax)、中間件、web服務(wù)、云計(jì)算API、緩存和分發(fā)。
當(dāng)你得到架構(gòu)圖后,你需要進(jìn)行三個專門的分析步驟:1)已知攻擊分析,2)系統(tǒng)特定攻擊分析,以及3)相關(guān)性分析。(我們重新命名了ARA的這三個步驟以便用戶更容易理解)。
1)已知攻擊分析很容易理解,正如其字面意思。獲取與你的架構(gòu)相關(guān)的已知攻擊列表,并逐一進(jìn)行檢查。微軟的STRIDE方法(有人將其誤叫成威脅建模)就是一個很好的例子。STRIDE是欺騙、篡改、否認(rèn)、信息泄漏、拒絕服務(wù)和特權(quán)提升的縮寫。這就是微軟已知攻擊清單。
已知攻擊分析的關(guān)鍵是要知道一些已有的攻擊。如果你能制定一份設(shè)計(jì)層面的攻擊的列表,這就已經(jīng)成功了一半。STRIDE可能適用于操作系統(tǒng)供應(yīng)商,而你需要根據(jù)自己的市場和自己面對的獨(dú)特的攻擊者建立自己的列表。創(chuàng)建這種列表的方法之一是詢問你的漏洞管理團(tuán)隊(duì),看看哪些攻擊最常見。
當(dāng)你發(fā)現(xiàn)列表中的某個攻擊具有相關(guān)性,計(jì)算其影響力,并思考你該如何修復(fù)架構(gòu)來降低風(fēng)險。請注意我們這里使用的是“降低”。有時候缺陷并不需要完全解決或者完全根除,我們只需要根據(jù)特定情況將風(fēng)險降低到可接受的水平即可。
如果能夠找出根本性的缺陷,對于企業(yè)來說,真的很有價值。發(fā)現(xiàn)一個有缺陷的設(shè)計(jì),通過正確部署安全控制,降低數(shù)十或數(shù)百個漏洞帶來的風(fēng)險,這難道不是好事嗎?我們可以通過輸出編碼來實(shí)現(xiàn)這一過程。
2)系統(tǒng)特定攻擊分析側(cè)重于根據(jù)系統(tǒng)的運(yùn)作情況來揭露無根據(jù)的假設(shè)、深挖歧義內(nèi)容以及尋找新攻擊。這個步驟需要最豐富的經(jīng)驗(yàn)和天賦,因?yàn)榘踩旧硎擒浖男屡d的屬性。你知道,有時候軟件自己運(yùn)行時很正常,但當(dāng)它被添加到更大的生態(tài)系統(tǒng)時,它就完全脫離軌道了。這就是我們的意思。預(yù)見自然發(fā)生的后果可能是非常棘手的工作。
在很多情況下,分解問題可能會有所幫助。最起碼,在這個步驟中,我們可以思考信任建模(明確確定信任邊界)、數(shù)據(jù)敏感性建模(確定隱私和信任問題)以及威脅建模(確定攻擊者,并從攻擊者的角度考慮)。請注意,我們這里使用的威脅建模的術(shù)語與微軟的有所不同。
在這里,我們想強(qiáng)調(diào)的一種方法是綜合不同的觀點(diǎn)。你能否試想,兩個軟件架構(gòu)師,一個架構(gòu),在同一個房間,會發(fā)生什么事?提示:這里不存在世界和平。利用非常有經(jīng)驗(yàn)的架構(gòu)師對相同系統(tǒng)的不同觀點(diǎn),能夠幫助你全面綜合地解決問題。
在此步驟中,注意你所發(fā)現(xiàn)的攻擊及其影響。想一想你該如何通過修改設(shè)計(jì)來降低這種風(fēng)險。
3)相關(guān)性分析在于,確定你依賴的其他軟件架構(gòu)的運(yùn)作情況。讓我們面對現(xiàn)實(shí)吧,現(xiàn)在的軟件幾乎總是依賴于別人設(shè)計(jì)和構(gòu)建的組件和框架的正常運(yùn)作。它們的前提條件是什么?它們?nèi)绾斡绊懩愕南到y(tǒng)?如果框架“胡作非為”,你的設(shè)計(jì)會怎樣?
請從你正在依賴的組件開始,確認(rèn)這些問題:你依賴的組件中是否有已知漏洞?(無論是開源組件或者其它,答案通常是肯定的)。你是否在這些框架中構(gòu)建了足夠的安全控制?它們真的有用嗎?(不幸的是,答案通常是否定的)還有其它功能或特性需要被禁用嗎?(可能)。框架在默認(rèn)情況下安全嗎?(可能,如果你最近操作得當(dāng)?shù)脑挘?/span>
寫下你發(fā)現(xiàn)的事實(shí),思考其影響,確定該怎么做。在完成ARA的四個步驟后,你會發(fā)現(xiàn)你面臨很多風(fēng)險,也會產(chǎn)生很多改進(jìn)設(shè)計(jì)的想法。考慮這些風(fēng)險,并明確對業(yè)務(wù)的影響。然后將你發(fā)現(xiàn)的風(fēng)險進(jìn)行優(yōu)先排序,提出解決方案來解決你所發(fā)現(xiàn)的最重要的缺陷。
接下來有些棘手:搞清楚如何以及何時進(jìn)行重大的架構(gòu)變更。在某些情況下,解決方案需要幾年時間才能展開,對此,請不要太絕望。
輕量級設(shè)計(jì)審查
ARA聽起來很容易嗎?但事實(shí)并非如此。由于這個過程很密集,并且涉及很多專業(yè)知識,深入的ARA并不會適用于所有你的應(yīng)用。ARA是關(guān)鍵系統(tǒng)必備的架構(gòu),但對于非核心系統(tǒng),這并沒有必要。在以后的文章中,我們將探討應(yīng)該如何解決在這些“不太重要的”系統(tǒng)中的漏洞問題。
修復(fù)你的缺陷
無論你的架構(gòu)審查過程是否會帶來快速的重構(gòu)或者使用多年的多個版本企業(yè)架構(gòu)的變更,現(xiàn)在是時候讓我們開始重視軟件安全問題。我們不能放棄漏洞檢測以及用來發(fā)現(xiàn)和修復(fù)漏洞的工具,但與此同時,鑒于缺陷也占據(jù)一半的問題,我們需要謹(jǐn)慎地解決這些問題。

責(zé)任編輯:和碩涵
-
發(fā)電電力輔助服務(wù)營銷決策模型
2019-06-24電力輔助服務(wù)營銷 -
電力線路安全工作的組織措施和技術(shù)措施分別是什么?
-
兩會保電進(jìn)行時丨陜西電力部署6項(xiàng)重點(diǎn)任務(wù)
-
電力線路安全工作的組織措施和技術(shù)措施分別是什么?
-
兩會保電進(jìn)行時丨陜西電力部署6項(xiàng)重點(diǎn)任務(wù)
-
山東特高壓首次完成帶電消缺 確保電力安全穩(wěn)定迎峰度冬
-
發(fā)電電力輔助服務(wù)營銷決策模型
2019-06-24電力輔助服務(wù)營銷 -
繞過安卓SSL驗(yàn)證證書的四種方式
-
網(wǎng)絡(luò)何以可能
2017-02-24網(wǎng)絡(luò)
-
Windows 10首發(fā) 四大安全提升
-
超級安卓漏洞 “寄生獸”影響數(shù)千萬手機(jī)應(yīng)用
-
航空公司首出現(xiàn)操作系統(tǒng)被黑
2015-06-23航空公司
-
“企業(yè)應(yīng)急響應(yīng)和反滲透”之真實(shí)案例分析
-
攜程恢復(fù)正常 安全,我們準(zhǔn)備好了嗎?
2015-05-29攜程 -
一張圖讀懂《2014年消費(fèi)者個人信息網(wǎng)絡(luò)安全報告》