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