CISP認(rèn)證的指定教材《注冊(cè)信息安全專(zhuān)業(yè)人員培訓(xùn)教材》的第10章講述的是軟件安全開(kāi)發(fā)。介紹了包括軟件安全開(kāi)發(fā)的相關(guān)概念,包括幾種典型的軟件開(kāi)發(fā)生命周期模型、微軟的軟件開(kāi)發(fā)生命周期模型、威脅建模流程、支持威脅建模的STRIDE模型、軟件安全設(shè)計(jì)原則和軟件安全測(cè)試方法等。
我們以提綱挈領(lǐng)的方式介紹關(guān)鍵概念要點(diǎn)如下:
1、軟件開(kāi)發(fā)生命周期模型包括瀑布模型(Waterfall Model)、迭代模型、增量模型、快速原型模型、螺旋模型和凈室模型。瀑布模型的一個(gè)特點(diǎn)是軟件開(kāi)發(fā)生命周期的階段通常不可逆,即從需求分析到架構(gòu)設(shè)計(jì)再到編碼實(shí)現(xiàn),像瀑布自頂向下逐階段實(shí)施。瀑布模型的另一個(gè)特點(diǎn)是反饋環(huán)太長(zhǎng),一般到軟件系統(tǒng)上線(xiàn)運(yùn)行階段,客戶(hù)才感知軟件產(chǎn)品實(shí)現(xiàn)與理想需求的差距。所以瀑布模型是建立在最初需求不變的假設(shè)條件下的,在這個(gè)市場(chǎng)和客戶(hù)需求瞬息萬(wàn)變的時(shí)代,我們都知道這種假設(shè)是不成立的。很多企業(yè)或組織在嘗試各種模型后,最終選擇了敏捷開(kāi)發(fā)的短迭代增量模型。敏捷模型繼承了迭代和增量模型的特點(diǎn),并且強(qiáng)調(diào)價(jià)值的快速交付。
2、微軟的軟件開(kāi)發(fā)生命周期模型是應(yīng)對(duì)軟件安全危機(jī)的典型解決方案。軟件開(kāi)發(fā)生命周期簡(jiǎn)稱(chēng)SDL,是微軟于2002年開(kāi)發(fā)出來(lái)的指導(dǎo)大型軟件開(kāi)發(fā)組織如何進(jìn)行全生命周期的軟件安全開(kāi)發(fā)。以下圖示就是SDL的階段劃分:
SDL強(qiáng)調(diào)針對(duì)開(kāi)發(fā)團(tuán)隊(duì)和高層進(jìn)行安全意識(shí)與能力的培訓(xùn),在軟件需求階段采集安全需求并進(jìn)行必要的風(fēng)險(xiǎn)評(píng)估,在軟件設(shè)計(jì)階段考慮威脅建模,在軟件驗(yàn)證階段進(jìn)行滲透測(cè)試和模糊測(cè)試。
3、威脅建模是以結(jié)構(gòu)化的方式識(shí)別和評(píng)估應(yīng)用系統(tǒng)所面臨的威脅,其具體流程包括確立建模對(duì)象、識(shí)別威脅、評(píng)估威脅和消除威脅等4步。微軟提出使用STRIDE模型來(lái)有效的識(shí)別威脅。STRIDE是有Spoofing(假冒)、Tampering(篡改)、Repudiation(否認(rèn))、Information Disclosure(信息泄露)、Denial of Service(拒絕服務(wù))和Elevation of Privilege(提升權(quán)限)的第一個(gè)字母組合而成。我們最為熟知的就是Denial of Service(拒絕服務(wù)),即黑客利用自己控制的感染病毒的機(jī)器(俗稱(chēng)肉雞)來(lái)發(fā)起針對(duì)某業(yè)務(wù)應(yīng)用服務(wù)器的攻擊,通過(guò)發(fā)送大量數(shù)據(jù)包請(qǐng)求來(lái)耗盡目標(biāo)服務(wù)器的CPU和內(nèi)存資源,最終導(dǎo)致業(yè)務(wù)不可用。企業(yè)或組織可以應(yīng)用STRIDE模型進(jìn)行威脅建模,反復(fù)執(zhí)行確立建模對(duì)象、識(shí)別威脅、評(píng)估威脅和消除威脅等4步,直到所有的威脅所帶來(lái)的風(fēng)險(xiǎn)都在可接受范圍之內(nèi)為止。
4、軟件安全設(shè)計(jì)原則通常包括十?dāng)?shù)種之多,比如我們所熟知的最小特權(quán)原則、默認(rèn)故障處理保護(hù)原則、不信任原則和攻擊面最小化原則等。比如不要輕易給運(yùn)維人員root超級(jí)帳號(hào),這符合最小特權(quán)原則。應(yīng)用發(fā)生故障后,應(yīng)該不向遠(yuǎn)程未授權(quán)的用戶(hù)暴露敏感信息,如錯(cuò)誤編號(hào)和服務(wù)器信息等,這符合默認(rèn)故障處理保護(hù)原則。
5、軟件安全測(cè)試方法包括滲透測(cè)試和模糊測(cè)試等。滲透測(cè)試是一種模擬攻擊者(黑客)進(jìn)行攻擊的測(cè)試方法,從攻擊者視角來(lái)測(cè)試軟件系統(tǒng)。模糊測(cè)試也稱(chēng)Fuzz測(cè)試,對(duì)被測(cè)系統(tǒng)提供非預(yù)期的輸入來(lái)監(jiān)視可能的異常結(jié)果來(lái)發(fā)現(xiàn)軟件故障的方法。非預(yù)期數(shù)據(jù)通常表現(xiàn)為大量的畸形數(shù)據(jù),把這些畸形數(shù)據(jù)作為測(cè)試用例的具體輸入。