關于軟件開發安全的CISSP秘籍(二)
平衡安全和功能
開放和分布式環境可能同時在使用傳統技術和新技術,以及企業內部網絡和業務合作伙伴外網,還要保持在互聯網的電子商務業務--這些情況都帶來很多安全挑戰。然而,我們可以通過在不同技術層面分層部署安全控制以更好地保護這些系統。作為防守的最后壁壘,部署在系統和應用層面安全控制應該盡可能嚴格。
軟件開發安全讓軟件供應商面臨著很多挑戰和壓力,這通常導致他們未能將安全構建到軟件產品。對于CISSP考試,考生應該深入了解決策過程以及過于依靠基于環境的安全設備而不是從一開始構建適當水平的安全性到產品中所帶來的危害。
大多數商業應用都有內置安全控制,盡管直到最近供應商才開始在默認情況中設置安全性。這迫使用戶做出風險決策來降低其安全保護,而不是采用供應商推薦的水平。雖然這些做法在開始會讓用戶覺得麻煩,但日益增加的全球威脅級別不僅提高了商業供應商的責任,也提高了用戶部分的意識和責任。
然而,構建安全軟件的經濟學可能涉及系統安全和功能之間的權衡。雖然很多業內人士擔心當今軟件安全不安全,但客戶對功能的要求仍然超過安全需求。而與此同時,攻擊者的技術日益純熟,整個行業有義務尋求新的方法來發現罕見條件下的系統漏洞,并修復這些漏洞以防止它們被惡意利用。
安全構建軟件程序取決于我們在每個開發階段提升可視性和安全優先級的能力。早在項目啟動階段,我們就可以開始根據業務需求、責任風險和投資限制來制定安全目標。在整個需求和設計階段,我們可系統地發現隱藏的功能和架構缺陷。然后,我們可在架構和測試階段部署檢查方法和自動化,以根除哪些已知編碼缺陷或故障情況。在每個決策點,決策人員都應該根據風險分析來了解他們需要接受的風險,作為更低價格、更快進入市場、增加功能或提高可用性的權衡。通過使用針對安裝和管理的操作清單,以及通過運用嚴格的變更控制方法,軟件供應商可確保其產品可同時滿足用戶需求以及企業安全標準--不管是現在還是未來。
漏洞識別做法應該構建到應用開發過程,這包括:
- 攻擊面分析:識別和減少可由不受信任用戶訪問的代碼數量
- 威脅建模:這個系統性方法用于了解不同的威脅如何被執行以及成功的攻擊如何發生
- 靜態分析:這個調試技術會檢查代碼而不會執行程序,在程序編譯前執行程序。
- Fuzzing技術:用于發現軟件漏洞和缺陷。
能力成熟度集成模型(CMMI)是一種過程改進模型,它為增量式軟件開發改進提供了途徑。這種模型采用數字1到5來代表工藝質量和優化的成熟度等級:1=初始,2=受管理,3=已定義,4=受量化管理,5=優化。
CMMI可對應軟件開發生命周期的不同階段,包括概念定義、需求分析、設計、開發、集成、安裝、操作和維護,以及在每個階段會發生什么。它可用于評估安全工程實踐以及發現改進做法。它還可用于客戶評估軟件供應商。在理想情況中,軟件供應商可使用該模型來改進其流程,而客戶可使用該模型評估供應商的做法。
編程語言和分布式計算
在簡要介紹編程開發后,這部分CISSP章節涉及面向對象的編程、代碼塊作為類對象的封裝以及如何改變和重用這些對象。在創建應用設計時,該應用的數據使用被建模,數據路徑被分析。這部分主要關注對象的原子性--其凝聚力和耦合特性,因為這將提高它們可安全更新的容易程度。
軟件編程語言已隨著時間推移而演變,主要包括以下:
- 第一代:機器語言
- 第二代:匯編語言
- 第三代:高級語言
- 第四代:非常高級語言
- 第五代:自然語言
每一代都增加了編程語言的能力,每種編程語言都有自己的安全問題,安全專業人員必須了解這一點。
本章節涵蓋數據從應用導入和導出的方式,還有確保組件通信(COM、DCOM)標準和技術的有效性、不同系統(ORB、CORBA、ODBC、DDE)之間數據無縫交換以及在本地應用(OLE)外對數據訪問,以及圍繞每種使用的安全問題。
本部分還將涵蓋面向服務的架構(SOA),它同時提供很多不同應用對最需要的服務的標準訪問。SOA內的服務通常通過Web服務提供,這讓基于Web的通信可無縫進行--使用簡單對象訪問協議(SOAP)、HTTP、Web服務描述語言(WSDL)、通用描述、發現和集成(UDDI)以及可擴展標記語言(XML)等基于Web的標準。
另外還有服務器端包含、客戶端驗證、跨站腳本以及參數驗證等Web安全問題,以及每種漏洞類型的應對方法。
數據庫技術
數據庫包含開展業務、指導業務戰略以及證明業務績效歷史的數據。在這個方面,考試內容包括數據庫管理軟件,以及不同類型數據庫模型概述。數據庫模型定義了不同數據元素之間的關系,決定了數據如何被訪問,并定義了可接受的操作、提供的完整性類型以及數據如何組織。數據庫模型還提供了正式的方法以概念形式表示數據,并提供操縱數據庫中數據的必要方法。主要有幾種類型的模型:
- 關系型
- 分層型
- 網絡型
- 面向對象型
- 對象關系型
關系型數據需要深入了解,包括如何在數據字典中表示和使用模式、它如何應用到安全中、主鍵和外鍵如何關聯、檢查站和保存點如何運作,以及如何維護數據集的完整性--這是確保數據不會遺落在模式外或安全控制外的關鍵。
如果數據不能被訪問和使用,數據則失去作用;應用需要能夠獲取和使用數據庫中的信息,它們還需要某種類型的接口和通信機制,該領域主要包含這些接口語言:
- 開放數據庫連接(ODBC)
- 對象鏈接和嵌入數據庫(OLE DB)
- ActiveX數據對象(ADO)
- Java數據庫連接(JDBC)
這部分CISSP包含數據庫安全問題,包括并發保護、回滾功能、兩階段提交、檢查站,以及聚合和推理保護。安全穩定的數據庫提供ACID特性:
- 原子性--對數據庫的更改生效
- 一致性--傳輸必須符合定義的完整性限制
- 隔離--在傳輸完成前,用戶或流程無法查看傳輸
- 持久性--當傳輸發生時,即是永久性
數據倉庫(不同數據集聚合)和數據集市(數據倉庫子集副本)構成同樣的挑戰,對這些系統付出的努力和成本讓它們產生的元數據對企業非常有價值,這也需要高層次的保護水平。
另外,為最佳安全性管理數據系統的戰略也進行了討論,主題包括如何使用安全觀點來執行安全政策、內容和背景信息推動的訪問控制戰略、匯聚和推理攻擊帶來的挑戰,以及采用迂回戰術(蜂窩抑制、噪音和干擾等)
安全威脅和應對方法
在這部分的CISSP中,考試準備工作包括了解影響應用及系統的最常見威脅攻擊以及它們如何執行。這些常見威脅包括:拒絕服務、定時攻擊、病毒、蠕蟲、Trojan木馬、rootkit和犯罪軟件等。
專家系統和人工神經網絡等采用人工智能的先進系統可幫助發現不同信息塊之間的關聯,并可發現網絡流量或應用中可能表明攻擊的異常模式。