關(guān)于軟件開發(fā)安全的CISSP秘籍(一)
大部分公司依靠防火墻、入侵檢測系統(tǒng)、內(nèi)容過濾、反惡意軟件、漏洞掃描儀及其他網(wǎng)絡(luò)工具來解決安全問題。他們對這么多控制的依賴主要是因為軟件包含很多漏洞,用戶面臨風(fēng)險。企業(yè)環(huán)境有時被認(rèn)為是“外硬內(nèi)軟”,即網(wǎng)絡(luò)外圍安全可能很強(qiáng)大,但內(nèi)部軟件程序在獲取訪問權(quán)限后很容易被利用。
對于軟件問題,最好的辦法是在一開始構(gòu)建軟件開發(fā)安全流程。然而,軟件程序通常將功能擺在首位,而不是安全性。而其實,從一開始將安全構(gòu)建到每個軟件中要比隨后增加安全性更為有效。
在這篇有關(guān)信息系統(tǒng)認(rèn)證安全專家(CISSP)考試軟件開發(fā)安全領(lǐng)域的文章中,筆者將探討如何構(gòu)建軟件程序;哪些安全機(jī)制和戰(zhàn)略可用于保護(hù)在訪問、處理和存儲過程中的數(shù)據(jù);以及軟件開發(fā)安全的常見威脅及應(yīng)對方法。探討的話題包括:
軟件開發(fā)安全:模型、方法、生命周期階段以及對開發(fā)過程的管理。
編程語言和分布式計算:軟件架構(gòu)、編程語言和概念、變化控制方法、改進(jìn)模型、數(shù)據(jù)建模和結(jié)構(gòu)、數(shù)據(jù)接口和交換方法。
數(shù)據(jù)庫系統(tǒng):模型、管理系統(tǒng)、查詢語言、組件、數(shù)據(jù)倉庫及挖掘、模式和安全措施。
安全威脅和應(yīng)對方法:應(yīng)用和系統(tǒng)面臨的常見威脅,以及專家系統(tǒng)和人工神經(jīng)網(wǎng)絡(luò)如何應(yīng)用于緩解威脅。
軟件開發(fā)安全組織
由于軟件最接近企業(yè)最重要的數(shù)據(jù),現(xiàn)在有很多倡議和舉措用于提高安全軟件開發(fā)流程的使用率。還有很多團(tuán)體和組織提供了安全軟件開發(fā)的最佳做法,以幫助企業(yè)實現(xiàn)軟件安全保護(hù)。
Web應(yīng)用安全聯(lián)盟(WASC)主要為萬維網(wǎng)及基于Web的軟件提供最佳做法安全標(biāo)準(zhǔn)。
開放Web應(yīng)用安全項目(OWASP)同樣也是專門處理Web安全問題的組織,該組織提供軟件開發(fā)安全準(zhǔn)則、測試程序和代碼審查步驟,它還負(fù)責(zé)維護(hù)OWASP Top 10--當(dāng)今企業(yè)面臨的最大Web應(yīng)用安全風(fēng)險清單。
ISO/IEC 27034標(biāo)準(zhǔn)則提供了安全軟件開發(fā)的最佳做法,符合ISO/IEC的信息安全管理系統(tǒng)模型及ISO/IEC 27000系列。該標(biāo)準(zhǔn)提供了應(yīng)用安全概述和理念、組織規(guī)范性框架、應(yīng)用安全管理流程、應(yīng)用安全驗證及針對特定應(yīng)用的安全準(zhǔn)則。
美國國土安全部有一個軟件保障程序,該程序提供最佳做法、工具、準(zhǔn)則、規(guī)則和其他資源,軟件開發(fā)人員、架構(gòu)師和安全從業(yè)人員可利用這些資源將安全構(gòu)建到軟件開發(fā)的每個階段。
另外,MITRE的常見缺陷列表(CWE)提供有關(guān)最危險軟件錯誤的信息。CWE為軟件開發(fā)安全問題提供了常用語言和分類,并詳細(xì)介紹了編程代碼、產(chǎn)品設(shè)計和系統(tǒng)架構(gòu)中發(fā)現(xiàn)的漏洞。NIST已經(jīng)將這些CWE映射到其國家漏洞數(shù)據(jù)庫(NVD)--這是美國政府基于標(biāo)準(zhǔn)的漏洞管理數(shù)據(jù)庫。
安全軟件開發(fā)
為特定系統(tǒng)確定適當(dāng)?shù)陌踩墑e不是容易的事情,并且這取決于很多因素,包括操作系統(tǒng)的信任水平、它將連接到系統(tǒng)的安全水平、誰將會使用該系統(tǒng)、數(shù)據(jù)的敏感性、系統(tǒng)功能對企業(yè)的關(guān)鍵性以及部署最佳安全做法的成本等。了解系統(tǒng)開發(fā)的過程和經(jīng)濟(jì)學(xué)可幫助我們理解為什么目前生產(chǎn)環(huán)境中很少有系統(tǒng)被認(rèn)為是足夠安全。
這個安全軟件開發(fā)領(lǐng)域涵蓋內(nèi)容包括:不同環(huán)境為何需要不同類型的安全性、解決故障狀態(tài)的重要性以及平衡安全和滿足業(yè)務(wù)需求的功能之間的難度。
現(xiàn)在的環(huán)境和技術(shù)的日益復(fù)雜化也讓“通用型”安全方法失去作用,系統(tǒng)構(gòu)建和軟件開發(fā)的歷史概述也可幫助說明為什么昨天的方法已經(jīng)無法不再適用于當(dāng)今超級互聯(lián)世界。
軟件開發(fā)生命周期
每個系統(tǒng)都有自己的開發(fā)生命周期,主要包括以下階段:啟動、開發(fā)、部署、操作/維護(hù)和處置??偟膩碚f,這些被稱為系統(tǒng)開發(fā)生命周期(SDLC)。
每個SDLC階段都有特定的目標(biāo)和要求;這個章節(jié)側(cè)重于這些特定安全目標(biāo)和要求以及它們?nèi)绾握系絊DLC模型。這個領(lǐng)域涵蓋的一些SDLC模型包括:
瀑布模型--這是一種按順序的方法,它要求每個階段完成后,下一個才能開始。這種方法難以整合變化,這是不靈活的模型。
V模型--這種模型強(qiáng)調(diào)每個階段的核查和驗證,需要在整個項目中進(jìn)行測試,而不只是在最后。
增量模型--在整個軟件開發(fā)階段,軟件會有多個開發(fā)周期。每個階段提供可用的軟件版本。
螺旋模型--這是一個迭代的方法,強(qiáng)調(diào)每次迭代的風(fēng)險分析。它允許通過靈活漸進(jìn)的方式整合客戶反饋。
快速應(yīng)用開發(fā)--這種模型整合了原型開發(fā)和迭代開發(fā)程序,其目標(biāo)是加速軟件開發(fā)過程。
靈活模型--在這種模型中,迭代和增量開發(fā)過程鼓勵使用基于團(tuán)隊的協(xié)作。它側(cè)重于靈活性和適應(yīng)性,而不是嚴(yán)格的工藝結(jié)構(gòu)。
請繼續(xù)閱讀《關(guān)于軟件開發(fā)安全的CISSP秘籍(二)》