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