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