天天看點

關于軟體開發安全的CISSP秘籍(二)

關于軟體開發安全的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和犯罪軟體等。

專家系統和人工神經網絡等采用人工智能的先進系統可幫助發現不同資訊塊之間的關聯,并可發現網絡流量或應用中可能表明攻擊的異常模式。

作者:shon harris

來源:51cto