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