




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、應(yīng)用系統(tǒng)開發(fā)安全管理通則應(yīng)用系統(tǒng)開發(fā)安全管理通則_030326_v3_fd中國石油信息安全標(biāo)準(zhǔn)編號: 中國石油天然氣股份有限公司應(yīng)用系統(tǒng)開發(fā)安全管理通則(審閱稿)版本號:V3審閱人:王巍中國石油天然股份有限公司Error! No text of specified style in document.X前 言隨著中國石油天然氣股份有限公司(以下簡稱“中國石油”)信息化建設(shè)的穩(wěn)步推進(jìn),信息安全日益受到中國石油的廣泛關(guān)注,加強(qiáng)信息安全的管理和制度無疑成為信息化建設(shè)得以順利實(shí)施的重要保障。中國石油需要建立統(tǒng)一的信息安全管理政策和標(biāo)準(zhǔn),并在集團(tuán)內(nèi)統(tǒng)一推廣、實(shí)施。本規(guī)范是依據(jù)中國石油信息安全的現(xiàn)狀,參照
2、國際、國內(nèi)和行業(yè)相關(guān)技術(shù)標(biāo)準(zhǔn)及規(guī)范,結(jié)合中國石油自身的應(yīng)用特點(diǎn),制定的適合于中國石油信息安全的標(biāo)準(zhǔn)與規(guī)范。目標(biāo)在于通過在中國石油范圍內(nèi)建立信息安全相關(guān)標(biāo)準(zhǔn)與規(guī)范,提高中國石油信息安全的技術(shù)和管理能力。信息技術(shù)安全總體框架如下:1) 整體信息技術(shù)安全架構(gòu)從邏輯上共分為7個部分,分別為:物理環(huán)境、硬件設(shè)備、網(wǎng)絡(luò)、操作系統(tǒng)、數(shù)據(jù)和文檔、應(yīng)用系統(tǒng)和通用安全管理標(biāo)準(zhǔn)。圖中帶陰影的方框中帶書名號的為單獨(dú)成冊的部分,共有13本規(guī)范和1本通用標(biāo)準(zhǔn)。2) 對于13個規(guī)范中具有一定共性的內(nèi)容我們整理出了7個標(biāo)準(zhǔn)橫向貫穿整個架構(gòu),這7個標(biāo)準(zhǔn)的組合也依據(jù)了信息安全生命周期的理論模型。每個標(biāo)準(zhǔn)都會對所有的規(guī)范中相關(guān)涉及
3、到的內(nèi)容產(chǎn)生指導(dǎo)作用,但每個標(biāo)準(zhǔn)應(yīng)用在不同的規(guī)范中又會有相應(yīng)不同的具體的內(nèi)容。我們在行文上將這7個標(biāo)準(zhǔn)組合成一本通用安全管理標(biāo)準(zhǔn)單獨(dú)成冊。3) 全文以信息安全生命周期的方法論作為基本指導(dǎo),規(guī)范和標(biāo)準(zhǔn)的內(nèi)容基本都根據(jù)預(yù)防保護(hù)檢測跟蹤響應(yīng)恢復(fù)的理論基礎(chǔ)行文。本通則討論了在企業(yè)內(nèi)部自行開發(fā)一套應(yīng)用系統(tǒng)或外包開發(fā)所必須考慮到的安全問題。開發(fā)應(yīng)用系統(tǒng)的安全性考慮就好像建設(shè)樓房一樣,擁有越堅(jiān)固的地基樓房越是穩(wěn)定,因此如果在應(yīng)用系統(tǒng)的開發(fā)階段打好堅(jiān)實(shí)的安全基礎(chǔ),那么以后的日常維護(hù)工作就會很輕松。以下我們主要從系統(tǒng)開發(fā)的各個階段入手,闡述在標(biāo)準(zhǔn)的開發(fā)流程的各個階段中所應(yīng)注意的安全性考慮。本規(guī)范由中國石油天然氣
4、股份有限公司發(fā)布。本規(guī)范由中國石油天然氣股份有限公司科技與信息管理部歸口管理解釋。起草部門:中國石油制定信息安全政策與標(biāo)準(zhǔn)項(xiàng)目組。說 明在中國石油信息安全標(biāo)準(zhǔn)中涉及以下概念:組織機(jī)構(gòu)中國石油(PetroChina) 指中國石油天然氣股份有限公司有時也稱“股份公司”。集團(tuán)公司(CNPC) 指中國石油天然氣集團(tuán)公司有時也稱“存續(xù)公司”。為區(qū)分中國石油的地區(qū)公司和集團(tuán)公司下屬單位,擔(dān)提及“存續(xù)部分”時指集團(tuán)公司下屬的單位。如:遼河油田分公司存續(xù)部分指集團(tuán)公司下屬的遼河石油管理局。計(jì)算機(jī)網(wǎng)絡(luò)中國石油信息網(wǎng)(PetroChinaNet) 指中國石油范圍內(nèi)的計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)。中國石油信息網(wǎng)是在中國石油天然氣
5、集團(tuán)公司網(wǎng)絡(luò)的基礎(chǔ)上,進(jìn)行擴(kuò)充與提高所形成的連接中國石油所屬各個單位計(jì)算機(jī)局域網(wǎng)和園區(qū)網(wǎng)。集團(tuán)公司網(wǎng)絡(luò)(CNPCNet) 指集團(tuán)公司所屬范圍內(nèi)的網(wǎng)絡(luò)。中國石油的一些地區(qū)公司是和集團(tuán)公司下屬的單位共用一個計(jì)算機(jī)網(wǎng)絡(luò),當(dāng)提及“存續(xù)公司網(wǎng)絡(luò)”時,指存續(xù)公司使用的網(wǎng)絡(luò)部分。主干網(wǎng) 是從中國石油總部連接到各個下屬各地區(qū)公司的網(wǎng)絡(luò)部分,包括中國石油總部局域網(wǎng)、各個二級局域網(wǎng)(或園區(qū)網(wǎng))和連接這些網(wǎng)絡(luò)的專線遠(yuǎn)程信道。有些單位通過撥號線路連接到中國石油總部,不是利用專線,這樣的單位和所使用的遠(yuǎn)程信道不屬于中國石油專用網(wǎng)主干網(wǎng)組成部分。地區(qū)網(wǎng) 地區(qū)公司網(wǎng)絡(luò)和所屬單位網(wǎng)絡(luò)的總和。這些局域網(wǎng)或園區(qū)網(wǎng)互相連接所使用的
6、遠(yuǎn)程信道可以是專線,也可以是撥號線路。局域網(wǎng)與園區(qū)網(wǎng) 局域網(wǎng)通常指,在一座建筑中利用局域網(wǎng)技術(shù)和設(shè)備建設(shè)的高速網(wǎng)絡(luò)。園區(qū)網(wǎng)是在一個園區(qū)(例如大學(xué)校園、管理局基地等)內(nèi)多座建筑內(nèi)的多個局域網(wǎng),利用高速信道互相連接起來所構(gòu)成的網(wǎng)絡(luò)。園區(qū)網(wǎng)所利用的設(shè)備、運(yùn)行的網(wǎng)絡(luò)協(xié)議、網(wǎng)絡(luò)傳輸速度基本相同于局域網(wǎng)。局域網(wǎng)和園區(qū)網(wǎng)通常都是用戶自己建設(shè)的。局域網(wǎng)和園區(qū)網(wǎng)與廣域網(wǎng)不同,廣域網(wǎng)不僅覆蓋范圍廣,所利用的設(shè)備、運(yùn)行的協(xié)議、傳送速率都與局域網(wǎng)和園區(qū)網(wǎng)不同。傳輸信息的信道通常都是電信部門建設(shè)的。二級單位網(wǎng)絡(luò) 指地區(qū)公司下屬單位的網(wǎng)絡(luò)的總和,可能是局域網(wǎng),也可能是園區(qū)網(wǎng)。專線與撥號線路 從連通性劃分的兩大類網(wǎng)絡(luò)遠(yuǎn)程信
7、道。專線,指數(shù)字電路、幀中繼、DDN和ATM等經(jīng)常保持連通狀態(tài)的信道;撥號線路,指只在傳送信息時才建立連接的信道,如電話撥號線路或ISDN撥號線路。這些遠(yuǎn)程信道可能用來連接不同地區(qū)的局域網(wǎng)或園區(qū)網(wǎng),也可能用于連接單臺計(jì)算機(jī)。石油專網(wǎng)與公網(wǎng) 石油專業(yè)電信網(wǎng)和公共電信網(wǎng)的簡稱。最后一公里問題 建設(shè)廣域網(wǎng)時,用戶局域網(wǎng)或園區(qū)網(wǎng)連接附近電信部門信道的最后一段距離的連接問題。這段距離通常小于一公里,但也有大于一公里的情況。為簡便,同稱為最后一公里問題。涉及計(jì)算機(jī)網(wǎng)絡(luò)的術(shù)語和定義請參見中國石油局域網(wǎng)標(biāo)準(zhǔn)。目 錄1概述72目標(biāo)73適用范圍74規(guī)范引用的文件或標(biāo)準(zhǔn)85術(shù)語和定義96應(yīng)用系統(tǒng)開發(fā)總體原則117系
8、統(tǒng)需求收集和分析階段127.1可行性研究分析127.2開發(fā)人員安全管理147.3建立系統(tǒng)開發(fā)安全需求分析報(bào)告158系統(tǒng)設(shè)計(jì)階段的安全規(guī)范178.1單點(diǎn)訪問控制且無后門178.2人員職責(zé)和權(quán)限的定義178.3確保敏感系統(tǒng)的安全性178.4確保訪問層的安全性178.5確保日志管理機(jī)制健全188.6新系統(tǒng)的容量規(guī)劃189系統(tǒng)開發(fā)階段安全規(guī)范199.1系統(tǒng)開發(fā)語言199.2系統(tǒng)開發(fā)安全相關(guān)工具管理規(guī)范279.3控制軟件代碼程序庫299.4在軟件開發(fā)過程變更管理319.5開發(fā)版本管理329.6開發(fā)日志審核管理349.7防御后門代碼或隱藏通道3410系統(tǒng)測試階段安全規(guī)范3610.1應(yīng)用系統(tǒng)的安全性檢測36
9、10.2控制測試環(huán)境3810.3為測試使用真實(shí)的數(shù)據(jù)3910.4在軟件轉(zhuǎn)移至生產(chǎn)環(huán)境前進(jìn)行測試3910.5應(yīng)用系統(tǒng)安全質(zhì)量鑒定3911系統(tǒng)培訓(xùn)及文檔階段安全規(guī)范4011.1新系統(tǒng)的培訓(xùn)4011.2撰寫新系統(tǒng)和系統(tǒng)改進(jìn)的文檔4012應(yīng)用系統(tǒng)開發(fā)外包安全控制41附錄 1參考文獻(xiàn)42附錄 2本規(guī)范用詞說明43Error! No text of specified style in document.521 概述信息系統(tǒng)的許多的安全控制或其他安全性保證是通過系統(tǒng)的開發(fā)設(shè)計(jì)予以實(shí)現(xiàn)的。因此如果在系統(tǒng)的開發(fā)設(shè)計(jì)階段沒有對系統(tǒng)的安全性給予充分的考慮,那么系統(tǒng)本身一定會存在許多先天不足,系統(tǒng)就會漏洞百出。為確
10、保應(yīng)用系統(tǒng)的安全,在應(yīng)用系統(tǒng)開發(fā)之前就應(yīng)確認(rèn)系統(tǒng)的安全需求,并以此作為開發(fā)設(shè)計(jì)的階段的基礎(chǔ)。本規(guī)范主要規(guī)定了在系統(tǒng)開發(fā)的各個階段所應(yīng)遵守的各種安全規(guī)范,從需求分析開始,到設(shè)計(jì),再到開發(fā)和維護(hù)以及最后的文檔等系統(tǒng)開發(fā)的各個階段分別進(jìn)行闡述,并將在不同階段中所需要注意的安全問題和相關(guān)的安全規(guī)范進(jìn)行進(jìn)一步的描述和規(guī)定。2 目標(biāo)本規(guī)范的目標(biāo)為:保護(hù)應(yīng)用系統(tǒng)開發(fā)過程的安全。具體地說就是保護(hù)應(yīng)用系統(tǒng)開發(fā)過程免受未經(jīng)授權(quán)的訪問和更改,保護(hù)系統(tǒng)開發(fā)中系統(tǒng)軟件和信息的安全,確保開發(fā)項(xiàng)目順利正確的實(shí)施并對開發(fā)環(huán)境進(jìn)行嚴(yán)格的控制。同時確保應(yīng)用系統(tǒng)開發(fā)外包中的各項(xiàng)安全。3 適用范圍本套規(guī)范適用的范圍包括了整個應(yīng)用系統(tǒng)
11、開發(fā)過程中的安全。包括了系統(tǒng)開發(fā)可行性和需求分析階段的安全,系統(tǒng)設(shè)計(jì)階段的安全,系統(tǒng)開發(fā)階段的安全,系統(tǒng)測試階段的安全,系統(tǒng)培訓(xùn)和文檔階段的安全以及系統(tǒng)開發(fā)外包的安全規(guī)范。主要規(guī)定了應(yīng)用系統(tǒng)開發(fā)過程的安全保密,軟件的質(zhì)量的要求,系統(tǒng)和業(yè)務(wù)需求的符合性,保證敏感信息的安全,系統(tǒng)本身的穩(wěn)定性和兼容性問題。4 規(guī)范引用的文件或標(biāo)準(zhǔn)下列文件中的條款通過本標(biāo)準(zhǔn)的引用而成為本標(biāo)準(zhǔn)的條款。凡是不注日期的引用文件,其最新版本適用于本標(biāo)準(zhǔn)。1. GB17859-1999 計(jì)算機(jī)信息系統(tǒng)安全保護(hù)等級劃分準(zhǔn)則2. GB/T 9387-1995 信息處理系統(tǒng) 開放系統(tǒng)互連基本參考模型(ISO7498 :1989)3.
12、 GA/T 391-2002 計(jì)算機(jī)信息系統(tǒng)安全等級保護(hù)管理要求4. ISO/IEC TR 13355 信息技術(shù)安全管理指南5. NIST信息安全系列美國國家標(biāo)準(zhǔn)技術(shù)院6. 英國國家信息安全標(biāo)準(zhǔn)BS77997. 信息安全基礎(chǔ)保護(hù)IT Baseline Protection Manual (Germany)8. BearingPoint Consulting 內(nèi)部信息安全標(biāo)準(zhǔn)9. RU Secure安全技術(shù)標(biāo)準(zhǔn)10. 信息系統(tǒng)安全專家叢書Certificate Information Systems Security Professional5 術(shù)語和定義訪問控制access control 一
13、種安全保證手段,即信息系統(tǒng)的資源只能由被授權(quán)實(shí)體按授權(quán)方式進(jìn)行訪問,防止對資源的未授權(quán)使用。應(yīng)用系統(tǒng) application system認(rèn)證 authentication a. 驗(yàn)證用戶、設(shè)備和其他實(shí)體的身份; b. 驗(yàn)證數(shù)據(jù)的完整性。授權(quán)authorization 給予權(quán)利,包括信息資源訪問權(quán)的授予??捎眯詀vailability 數(shù)據(jù)或資源的特性,被授權(quán)實(shí)體按要求能及時訪問和使用數(shù)據(jù)或資源。緩沖器溢出 buffer overflow指通過往程序的緩沖區(qū)寫超出其長度的內(nèi)容,造成緩沖區(qū)的溢出,從而破壞程序的堆棧,使程序轉(zhuǎn)而執(zhí)行其它指令,以達(dá)到攻擊的目的。保密性confidentiality
14、數(shù)據(jù)所具有的特性,即表示數(shù)據(jù)所達(dá)到的未提供或未泄露給未授權(quán)的個人、過程或其他實(shí)體的程度。隱藏通道 covert channel 可用來按照違反安全策略的方式傳送!數(shù)據(jù)的傳輸信道。完整性integrity在防止非授權(quán)用戶修改或使用資源和防止授權(quán)用戶不正確地修改或使用資源的情況下,信息系統(tǒng)中的數(shù)據(jù)與在原文檔中的相同,并未遭受偶然或惡意的修改或破壞時所具的性質(zhì)。敏感信息 sensitive information 由權(quán)威機(jī)構(gòu)確定的必須受保護(hù)的信息,因?yàn)樵撔畔⒌男孤丁⑿薷?、破壞或丟失都會對人或事產(chǎn)生可預(yù)知的損害。系統(tǒng)測試 system testing用于確定系統(tǒng)的安全特征按設(shè)計(jì)要求實(shí)現(xiàn)的過程。這一過程
15、包括現(xiàn)場功能測試、滲透測試和驗(yàn)證。后門代碼 trapdoor 通常為測試或查找故障而設(shè)置的一種隱藏的軟件或硬件機(jī)制,它能避開計(jì)算機(jī)安全。而且它能在非常規(guī)時間點(diǎn)或無需常規(guī)檢查的情況下進(jìn)入程序。特洛伊木馬Trojan horse 一種表面無害的程序,它包含惡性邏輯程序,導(dǎo)致未授權(quán)地收集、偽造或破壞數(shù)據(jù),以此破壞計(jì)算機(jī)安全與完整性的進(jìn)程。驗(yàn)證 verification 將某一活動、處理過程或產(chǎn)品與相應(yīng)的要求或規(guī)范相比較。例:將某一規(guī)范與安全策略模型相比較,或者將目標(biāo)代碼與源代碼相比較。壓力測試 于確定系統(tǒng)的薄弱環(huán)節(jié),確定系統(tǒng)在非正常條件下能夠迅速恢復(fù)到正常的運(yùn)行狀態(tài)的能力。6 應(yīng)用系統(tǒng)開發(fā)總體原則應(yīng)
16、用系統(tǒng)的開發(fā)應(yīng)遵循一系列的總體原則,以確保開發(fā)過程中的安全。其中包括:a) 系統(tǒng)開發(fā)應(yīng)從業(yè)務(wù)需求的角度出發(fā),不得盲目追求系統(tǒng)的先進(jìn)性而忽略了系統(tǒng)的實(shí)用性。系統(tǒng)的開發(fā)是為了更好地滿足業(yè)務(wù)上的需要,而不是技術(shù)上的需要。b) 開發(fā)的方法和管理必須規(guī)范化、合理化、制度化,從而確保開發(fā)的質(zhì)量和進(jìn)度。c) 應(yīng)保證開發(fā)的進(jìn)度并按時完成。確保開發(fā)工作及時、有效且高質(zhì)量的完成。d) 系統(tǒng)開發(fā)必須具有一定的前瞻性,符合主流系統(tǒng)的發(fā)展方向。e) 提高和加強(qiáng)開發(fā)人員的安全意識。確保機(jī)密信息和關(guān)鍵技術(shù)不會泄漏,特別是不可泄漏到競爭對手的手中,否則將會對公司的競爭力產(chǎn)生極大的影響。f) 應(yīng)充分利用現(xiàn)有的資源。7 系統(tǒng)需求
17、收集和分析階段7.1 可行性研究分析對于應(yīng)用系統(tǒng)開發(fā)項(xiàng)目應(yīng)進(jìn)行一定的可行性分析,以保證只有在確認(rèn)具備了相當(dāng)?shù)馁Y源和條件,并且有能力滿足業(yè)務(wù)上的需求的情況下才能開展開發(fā)工作。切忌盲目開發(fā),否則既浪費(fèi)資源,又浪費(fèi)時間??尚行匝芯恳藦募夹g(shù)、需求面、投入和影響四個方面進(jìn)行考慮:7.1.1 技術(shù)可行性分析根據(jù)業(yè)務(wù)上提出的需求,從技術(shù)開發(fā)的角度分析現(xiàn)有的技術(shù)手段和技術(shù)能力是否能夠?qū)崿F(xiàn)業(yè)務(wù)上所要求的系統(tǒng)功能。通??蓮囊韵氯齻€方面進(jìn)行分析:a) 人員技術(shù)能力分析,指公司內(nèi)的系統(tǒng)開發(fā)隊(duì)伍或外包的第三方開發(fā)公司是否具有足夠技術(shù)和管理能力來完成系統(tǒng)開發(fā)的任務(wù)。b) 計(jì)算機(jī)軟件和硬件分析,指公司現(xiàn)有的軟件和硬件的性能
18、是否足夠滿足開發(fā)相應(yīng)的系統(tǒng)的要求。c) 管理能力分析,指現(xiàn)有的技術(shù)開發(fā)管理制度和管理流程是否成熟且標(biāo)準(zhǔn)化,是否滿足系統(tǒng)開發(fā)的要求。7.1.2 需求可行性分析系統(tǒng)的開發(fā)來源于業(yè)務(wù)上的需求,因此需要對該需求進(jìn)行可行性分析,以判斷需求是否明確,是否符合實(shí)際,是否在一定的時間范圍內(nèi)可以實(shí)現(xiàn)。7.1.3 投資可行性分析根據(jù)業(yè)務(wù)需求和技術(shù)手段的分析,確認(rèn)實(shí)現(xiàn)系統(tǒng)開發(fā)所需的投資,并確認(rèn)投資的數(shù)額是否在可控制和可承受的范圍內(nèi)。7.1.4 影響可行性分析所謂的影響是指社會影響,比如系統(tǒng)開發(fā)是否符合法律法規(guī)上的要求,是否和相關(guān)的管理制度或行業(yè)標(biāo)準(zhǔn)相抵觸,是否符合人文或道德上的約束等。7.2 開發(fā)人員安全管理7.2
19、.1 系統(tǒng)開發(fā)人員職責(zé)分配在系統(tǒng)開發(fā)的過程中,應(yīng)明確不同人員的身份和職責(zé)。在系統(tǒng)開發(fā)過程中具體可分以下三種角色:Ø 項(xiàng)目負(fù)責(zé)人員:確保在整個系統(tǒng)開發(fā)的各個階段都實(shí)施了相關(guān)的安全措施,同時在整個系統(tǒng)開發(fā)的過程中負(fù)責(zé)整個項(xiàng)目的開發(fā)安全管理。Ø 系統(tǒng)開發(fā)人員:根據(jù)業(yè)務(wù)需求確保開發(fā)的系統(tǒng)能夠滿足業(yè)務(wù)上的需求和相應(yīng)的安全上的需求,同時滿足系統(tǒng)質(zhì)量上和進(jìn)度上的要求。Ø 系統(tǒng)審核人員:對整個開發(fā)的過程進(jìn)行審核和監(jiān)督,確保開發(fā)的質(zhì)量和開發(fā)的安全。7.2.2 開發(fā)人員授權(quán)a) 應(yīng)根據(jù)該員工在整個開發(fā)項(xiàng)目中所負(fù)責(zé)的開發(fā)內(nèi)容授予其相應(yīng)的權(quán)限和所應(yīng)承擔(dān)的責(zé)任。b) 開發(fā)人員必須負(fù)責(zé)其開發(fā)
20、內(nèi)容的保密性,不得私自將開發(fā)的相關(guān)信息泄漏出去,即使對家人或開發(fā)團(tuán)隊(duì)中的其他開發(fā)人員也不得泄漏。但開發(fā)人員有責(zé)任將開發(fā)的相關(guān)信息告訴項(xiàng)目的負(fù)責(zé)人員或開發(fā)小組的負(fù)責(zé)人員。c) 以書面的方式將員工的權(quán)限和相應(yīng)的責(zé)任提交給員工本人。必須嚴(yán)格規(guī)定在為企業(yè)工作期間,所有和工作相關(guān)的開發(fā)成果的所屬權(quán)都?xì)w企業(yè)所有。d) 應(yīng)根據(jù)員工權(quán)限和責(zé)任的大小確認(rèn)是否需要簽署相關(guān)的保密協(xié)議。e) 應(yīng)在日常工作中記錄員工與開發(fā)相關(guān)的日志信息。f) 員工一旦離職或調(diào)動崗位應(yīng)立即收回或調(diào)整其相應(yīng)的權(quán)限。7.2.3 開發(fā)人員必須訓(xùn)練開發(fā)安全代碼的能力a) 在整個開發(fā)的過程中必須完整持續(xù)地進(jìn)行代碼錯誤處理所規(guī)定的流程。b) 錯誤問
21、題報(bào)告應(yīng)力求通俗易懂,不應(yīng)在其中包含任何系統(tǒng)細(xì)節(jié)問題。c) 應(yīng)對重要的敏感信息進(jìn)行加密保護(hù)。d) 應(yīng)使用一些相對復(fù)雜的加密和密鑰生成機(jī)制。e) 應(yīng)單獨(dú)編寫安全性設(shè)計(jì)說明概要7.2.4 分離系統(tǒng)開發(fā)和運(yùn)作維護(hù)管理層必須確保應(yīng)用系統(tǒng)的開發(fā)和運(yùn)作管理從組織人事和權(quán)限職責(zé)上分開。a) 信息技術(shù)人員可以現(xiàn)場修復(fù)或更改偶然或惡意的數(shù)據(jù)和軟件問題。b) 測試代碼中往往包含調(diào)試或者查錯代碼,大大增加了主機(jī)系統(tǒng)的性能負(fù)擔(dān)。c) 開發(fā)人員不應(yīng)具有很高的權(quán)限,否則將在系統(tǒng)運(yùn)行中產(chǎn)生很大的風(fēng)險。7.3 建立系統(tǒng)開發(fā)安全需求分析報(bào)告a) 安全需求計(jì)劃應(yīng)能夠達(dá)到期望的安全水平。其中包括了成本的預(yù)估,完成各個安全相關(guān)流程所
22、需的時間。b) 所有關(guān)于應(yīng)用系統(tǒng)的更新或改進(jìn)都必須基于業(yè)務(wù)需求,并有業(yè)務(wù)事件支持。這里的業(yè)務(wù)需求不僅僅包括了系統(tǒng)的功能、性能、開發(fā)費(fèi)用、開發(fā)周期等內(nèi)容,應(yīng)明確系統(tǒng)的安全要求。應(yīng)用系統(tǒng)的任何一次改進(jìn)或更新都應(yīng)和該業(yè)務(wù)系統(tǒng)的所有者密切相關(guān)。c) 開發(fā)安全需求分析計(jì)劃應(yīng)由開發(fā)項(xiàng)目經(jīng)理和公司內(nèi)部的安全小組共同商議決定。d) 應(yīng)確保每一個應(yīng)用系統(tǒng)的用戶都意識到系統(tǒng)的更新或改進(jìn)都與其自身密切相關(guān),所有的更新或改動建議都必須基于業(yè)務(wù)需求,而不是基于所謂的“信息技術(shù)的要求”。e) 系統(tǒng)的每一次更新或改進(jìn)都必須認(rèn)真對待,必須進(jìn)行詳細(xì)的需求定義、需求分析以及測試評估,以保證不會對業(yè)務(wù)造成任何不良影響。f) 業(yè)務(wù)需
23、求是系統(tǒng)更新和改動的基礎(chǔ),因此必須清晰明確地定義業(yè)務(wù)的需求,禁止在業(yè)務(wù)需求未經(jīng)業(yè)務(wù)部門領(lǐng)導(dǎo)和主要負(fù)責(zé)人員認(rèn)可的情況下,盲目地進(jìn)行開發(fā)工作。8 系統(tǒng)設(shè)計(jì)階段的安全規(guī)范8.1 單點(diǎn)訪問控制且無后門任何用戶如果希望訪問應(yīng)用系統(tǒng)中的某一部分,則必須通過統(tǒng)一且唯一的認(rèn)證授權(quán)方式及流程。8.2 人員職責(zé)和權(quán)限的定義由于不是所有的人員對于某一個應(yīng)用系統(tǒng)都具有同樣的訪問或使用權(quán)限,因此系統(tǒng)必須具有基于人員職責(zé)的用戶授權(quán)管理,以確保每個用戶可以訪問到其權(quán)限范圍內(nèi)的應(yīng)用系統(tǒng)部分。同時應(yīng)確保每個用戶無法訪問其權(quán)限范圍以外的應(yīng)用系統(tǒng)部分。8.3 確保敏感系統(tǒng)的安全性將應(yīng)用系統(tǒng)中敏感的信息保存在服務(wù)器端以進(jìn)行集中的加密
24、的安全管理,確??蛻舳讼到y(tǒng)本身并不能存儲任何敏感的數(shù)據(jù)。8.4 確保訪問層的安全性應(yīng)用系統(tǒng)不僅僅要確保系統(tǒng)模塊本身的安全性,同時還應(yīng)考慮模塊與模塊之間通訊的安全性。這種模塊與模塊之間通訊的安全性不僅僅包括了應(yīng)用系統(tǒng)內(nèi)部模塊之間通訊的安全,也包括了應(yīng)用系統(tǒng)內(nèi)部模塊和外部模塊之間的通訊安全性,如主機(jī)和客戶端之間通訊的安全性、服務(wù)器和服務(wù)器間通訊的安全性,以及本地系統(tǒng)和異地系統(tǒng)之間通訊的安全性。8.5 確保日志管理機(jī)制健全應(yīng)建立可根據(jù)情況自由設(shè)置的日志管理機(jī)制,也就是說日志記錄的范圍和詳細(xì)程度可以根據(jù)需求自行定制,且可以實(shí)現(xiàn)在應(yīng)用系統(tǒng)的使用過程中進(jìn)行日志的定制和記錄。保留所有與系統(tǒng)開發(fā)相關(guān)的程序庫的
25、更新審核記錄。8.6 新系統(tǒng)的容量規(guī)劃容量規(guī)劃是指確定系統(tǒng)的總體規(guī)模、性能和系統(tǒng)彈性。容量規(guī)劃的具體內(nèi)容可能有所不同,但一般應(yīng)考慮以下方面:a) 系統(tǒng)的預(yù)期存儲容量和在給定的周期中獲取生成和存儲的數(shù)據(jù)量。b) 在線進(jìn)程的數(shù)量和估計(jì)可能的占用資料c) 系統(tǒng)和網(wǎng)絡(luò)的響應(yīng)時間和性能,即端對端系統(tǒng)d) 系統(tǒng)彈性要求和設(shè)計(jì)使用率(峰值,槽值和平均值等)e) 安全措施如加密解密數(shù)據(jù)對系統(tǒng)的影響。f) 24x7運(yùn)作要求和可接受的系統(tǒng)宕機(jī)次數(shù)(維護(hù)或者設(shè)備更新導(dǎo)致的必須性宕機(jī))規(guī)劃容量的時候關(guān)于系統(tǒng)使用的信息了解的越多越好。近來,由于互聯(lián)網(wǎng)站的使用以指數(shù)形式增長,容量規(guī)劃的變動效果不是非常顯著,有時甚至毫無用
26、處。原因在于很難估計(jì)實(shí)際的負(fù)載。在容量估計(jì)的時候應(yīng)盡量將情況設(shè)想得復(fù)雜一些。9 系統(tǒng)開發(fā)階段安全規(guī)范9.1 系統(tǒng)開發(fā)語言程序員可使用很多指導(dǎo)規(guī)范來防止應(yīng)用程序中的普通安全問題。其中許多可以應(yīng)用于任何一種編程語言,但某些是針對特定的語言的。特定語言的指導(dǎo)規(guī)范主要集中在Perl,Java和C/C+語言。大多數(shù)情況下,一般的錯誤可以避免。而這些本可以避免的錯誤常常會導(dǎo)致很多安全漏洞,從而威脅信息的保密性、完整性和可用性。9.1.1 通用規(guī)范9.1.1.1 輸入驗(yàn)證在客戶機(jī)/服務(wù)器環(huán)境下,進(jìn)行服務(wù)端的驗(yàn)證而不是客戶端的驗(yàn)證(例如基于Javascript的驗(yàn)證)。通過在客戶端和服務(wù)器之間放置一個代理服務(wù)
27、器,可以很容易繞過客戶端驗(yàn)證。有了代理服務(wù)器,攻擊者可以在數(shù)據(jù)被客戶端“驗(yàn)證”后修改數(shù)據(jù)(與“man-in-the-middle”攻擊類似)。在實(shí)際的校驗(yàn)中,輸入校驗(yàn)首先定義一個有效(可接受)的字符集,然后檢查每個數(shù)據(jù)的字符是否在有效范圍內(nèi)。如果輸入中包含無效的字符,應(yīng)用程序應(yīng)返回錯誤頁面并說明輸入中包含無效字符。這樣進(jìn)行驗(yàn)證的原因是定義無效的字符集比較困難,并且一些不應(yīng)有效的字符通常不會被指出。邊界檢查(例如字符串的最大長度)應(yīng)在字符有效性檢查以前進(jìn)行。邊界分析可以防止大多數(shù)緩沖區(qū)溢出漏洞。從環(huán)境變量獲得的數(shù)據(jù)也需要進(jìn)行驗(yàn)證。同時避免在環(huán)境變量中存放敏感數(shù)據(jù)(例如密碼)。某些Unix系統(tǒng)(例
28、如FreeBSD)包含ps命令,可以讓用戶看到任何當(dāng)前進(jìn)程的環(huán)境變量,這常常會暴露保密性信息。9.1.1.2 SQL語句如果應(yīng)用程序需要連接后端數(shù)據(jù)庫,不得在代碼中使用SQL語句。使用程序以外的嵌入在代碼中的SQL語句調(diào)用特別危險,難以防止攻擊者使用輸入域或者配置文件(由應(yīng)用程序載入)來執(zhí)行嵌入式的SQL攻擊。而輸入驗(yàn)證有助于緩解這種風(fēng)險。 9.1.1.3 注釋代碼(commented code)當(dāng)應(yīng)用程序在實(shí)際環(huán)境中開始應(yīng)用時,應(yīng)刪除所有的注釋代碼。注釋代碼是用來調(diào)試或者測試的,它們不是最終應(yīng)用程序的一部分。無論如何應(yīng)在實(shí)際的環(huán)境中刪除它們來避免意外的執(zhí)行(一般注釋標(biāo)識被刪除后就無法激活休眠
29、的代碼,但還是存在可能性的,所以應(yīng)執(zhí)行這項(xiàng)工作)。9.1.1.4 錯誤消息所有對用戶顯示的錯誤信息都不應(yīng)暴露任何關(guān)于系統(tǒng)、網(wǎng)絡(luò)或應(yīng)用程序的敏感信息。如果可能的話,應(yīng)使用包含編號的一般的錯誤信息,這種信息只有開發(fā)者和/或支持小組才能理解。一般的錯誤信息的例子是“發(fā)生了錯誤(代碼1234),請您與系統(tǒng)維護(hù)部門聯(lián)系?!?.1.1.5 統(tǒng)一資源定位(URL)內(nèi)容對于web應(yīng)用,不要在URL上暴露任何重要信息,例如密碼、服務(wù)器名稱、IP地址或者文件系統(tǒng)路徑(暴露了web服務(wù)器的目錄結(jié)構(gòu))。這些信息可以在攻擊時使用。例如下面就是一個不安全的URL:PASSWORD&file=/home/USER/
30、expenses.txt9.1.1.6 設(shè)置PATH變量設(shè)置PATH為一個已知的值,而不僅僅是使用啟動時的缺省值。攻擊者可以在攻擊應(yīng)用程序時使用PATH變量,例如試圖執(zhí)行一個任意的程序。這些也可以應(yīng)用于大多數(shù)其他的語言。9.1.2 Perl語言多年以來,Perl已經(jīng)成為用于系統(tǒng)管理和Web CGI開發(fā)的功能最強(qiáng)的編程語言之一(幾乎可以使用Perl實(shí)現(xiàn)任何功能)。但其擴(kuò)展應(yīng)用,即作為Internet上CGI的開發(fā)工具,使得它經(jīng)常成為web服務(wù)器上的攻擊目標(biāo)。另外,大多數(shù)CGI腳本有著比一般用戶更高的權(quán)限,導(dǎo)致它更容易受攻擊。下面列舉了一些開發(fā)者(特別是CGI程序員)可以使用的主動的預(yù)防性的措施來
31、增強(qiáng)Perl代碼的整體安全性(請注意:這不是web服務(wù)器CGI腳本安全性的指導(dǎo)原則)。9.1.2.1 Taint驗(yàn)證Perl版本5.x包含一個叫做Taint Checking的數(shù)據(jù)驗(yàn)證措施。如果起用該功能,它就不允許通過用戶輸入(任何程序外的輸入)來操縱其他的外部程序(例如通過管道將數(shù)據(jù)導(dǎo)入另一個程序執(zhí)行)。一般而言,程序員不能信任輸入腳本和程序的數(shù)據(jù)(叫做Tainted數(shù)據(jù)),因?yàn)闊o法保證它不會產(chǎn)生危害(有意或者無意的)。Taint驗(yàn)證可以通過在命令行參數(shù)加入“-T”來開啟。例如可以Perl腳本的第一行這樣加入“-T”:#!usr/bin/perl5 -T Tainted數(shù)據(jù)包括命令行參數(shù)、
32、環(huán)境變量和來自文件的數(shù)據(jù)。引用tainted數(shù)據(jù)的變量也成為tainted數(shù)據(jù)。如果腳本試圖通過不安全的方式來使用tainted數(shù)據(jù)會產(chǎn)生一個致命錯誤(對這種情況稱為“不安全的依賴”(Insecure dependency)或者其他的說法)。啟用tainted驗(yàn)證在有些情況下會導(dǎo)致腳本停止運(yùn)行,常常是由于Perl解釋器要求所有腳本引用的外部程序的完全路徑必須在PATH環(huán)境變量中列出,同時PATH中包含的每個目錄除了目錄的所有者及相應(yīng)的所有者用戶組外無法修改。Taint驗(yàn)證對于環(huán)境比較敏感,這就可能會導(dǎo)致大多數(shù)程序員不愿使用它,但是只要可能就應(yīng)使用taint驗(yàn)證,特別是代碼執(zhí)行其他程序功能時(例
33、如在CGI腳本的情況下)。9.1.2.2 安全模塊如果不但輸入數(shù)據(jù)不可信而且實(shí)際的代碼也不可信會產(chǎn)生什么情況?例如用戶從網(wǎng)站上下載了一個ActiveX控件,而它實(shí)際是一個特洛伊木馬(Trojan horse)。這種情況下taint驗(yàn)證就不起作用。安全模塊讓程序員可以在Perl腳本中將不同的代碼模塊與安全對象相聯(lián)系。每個安全對象對于運(yùn)行的每塊代碼建立了一個限制的環(huán)境。這與chroot在一個進(jìn)程中只能在整體目錄結(jié)構(gòu)的一個子目錄中運(yùn)行類似。而saft對象限制perl代碼只能在perl包結(jié)構(gòu)的某些特定包中運(yùn)行。如何使用安全模式超出了本文的范圍,但程序員應(yīng)在任何時候使用這一功能。9.1.2.3 警告參數(shù)
34、(-w)使用-w參數(shù)可以在Perl解釋腳本時顯示所有的警告信息。警告可以對以下情況產(chǎn)生:只使用了一次的變量或者完全沒有使用過的變量,未定義的文件句柄,未關(guān)閉的文件句柄,或?qū)⒎菙?shù)值變量傳遞到數(shù)據(jù)變量。該功能不是針對安全處理的,但是有助于調(diào)試直接或者間接對安全有危害的錯誤。一般推薦總是使用-w參數(shù)。可在taint驗(yàn)證時在第一行這樣使用-w參數(shù):#!usr/bin/perl5 -Tw 9.1.3 Java語言自從1995年發(fā)布以來,Java成為簡單或者復(fù)雜網(wǎng)絡(luò)應(yīng)用的有效編程語言。它在設(shè)計(jì)時充分考慮了安全問題,因此它具有的限制特征有:收集不再使用的內(nèi)存碎片的垃圾收集器,嚴(yán)格的“sandbox”安全模型
35、,以及在特定主機(jī)上限制應(yīng)用程序的活動的安全管理器。以下為使用中的相關(guān)的規(guī)范:9.1.3.1 不應(yīng)在標(biāo)準(zhǔn)輸出上打印消息在實(shí)際的Internet系統(tǒng)中避免使用System.out.println()或者System.err.println()打印日志和錯誤消息,原因是當(dāng)消息打印到標(biāo)準(zhǔn)輸出時,無法立即確定消息發(fā)生的地點(diǎn),且有可能將敏感信息透露給攻擊者。9.1.3.2 封裝Java中,如果沒有使用訪問標(biāo)識符(access modifier(private、protected或public)來聲明類、方法和屬性,那么它的默認(rèn)訪問范圍是包,并且同一包中的所有類都能訪問它。必須記住雖然包有封裝功能,但它只有
36、在每部分加載到包的代碼都由授權(quán)用戶控制時才起作用。惡意的用戶可以加入他們自己的類,從而對于包中的所有類、方法和屬性都有完全的訪問權(quán)限。Java的政策文件支持兩種控制包訪問權(quán)限的前綴。accessClassInPackage defineClassInPackage 所有標(biāo)準(zhǔn)庫中的類都默認(rèn)是可以公共訪問的(除了由“sun”開頭的類)。為了保證一個包的安全性,必須修改$JAVA HOME/jre/lib/security文件夾中的java.security文件。該文件中的重要行是:package.access=sun.雖然該方法有作用,但仍存在問題。例如程序員在java.security文件中定義
37、包的安全時必須十分小心。在package.access中的值是字符型的,“sun.”將保護(hù)“sun.tools”等包,但是不會對“sun”或者“sunshine”等包進(jìn)行保護(hù)。另一個方法是使用JAR密封(sealing) 。JAR(Java ARchive)文件是一些類的打包壓縮格式的文件,與常用的ZIP格式類似。如果從一個密封(sealing)的JAR文件中加載一個類,隨后同一個包的類只能從該JAR文件加載。為了起用密封(sealing),必須在建立JAR文件時這樣設(shè)置密封(seal)參數(shù):Sealed: true 使用密封(sealing)的JAR文件比權(quán)限 (permission) 設(shè)置
38、更好,因?yàn)樗恍枰惭b安全管理器(security manager)。9.1.3.3 政策文件Java內(nèi)建的安全管理器是對應(yīng)用程序進(jìn)行限制的一個方便的工具。很多情況下需要編制一個定制的安全管理器,JDK1.2及以后的版本提供了描述設(shè)置的方法而不是實(shí)施它們。這是通過Java政策文件實(shí)現(xiàn)的。可以用政策文件以相對模塊化的方式控制文件系統(tǒng)和網(wǎng)絡(luò)的訪問。例如可以限制應(yīng)用程序只能修改名字是foo的文件。宜使用Java政策文件和安全管理器而不是重新創(chuàng)建一個類或者系統(tǒng)來限制對主機(jī)和網(wǎng)絡(luò)的訪問。9.1.4 C/C+語言C本質(zhì)上是不安全的編程語言。例如如果不謹(jǐn)慎使用的話,其大多數(shù)標(biāo)準(zhǔn)的字符串庫函數(shù)有可能被用來進(jìn)行
39、緩沖區(qū)攻擊或者格式字符串攻擊。但是,由于其靈活性、快速和相對容易掌握,它是一個廣泛使用的編程語言。下面是針對開發(fā)安全的C語言程序的一些規(guī)范。9.1.4.1 緩沖區(qū)溢出避免使用不執(zhí)行邊界檢查的字符串函數(shù),因?yàn)樗鼈兛赡鼙挥脕磉M(jìn)行緩沖區(qū)溢出攻擊。下面是應(yīng)避免使用的函數(shù)。同時,也列出了每個函數(shù)相應(yīng)的比較安全的替換方式。Ø 不使用strcpy(),使用strncpy()Ø 不使用strcat(),使用strncat()Ø 不使用sprintf(),使用snprintf()Ø 不使用gets(),使用fgets()在上面的前三個中函數(shù)中,每個替代函數(shù)的“n”表示了使
40、用的緩沖區(qū)的大小。最后一個函數(shù)的“f”,表示格式,它允許用戶指定期望的輸入的格式。這些替換方程強(qiáng)制程序員定義使用的緩沖區(qū)的尺寸以及確定輸入的類型。9.1.4.2 格式化字符串攻擊(Format String Attack)該類攻擊往往與緩沖區(qū)溢出相關(guān),因?yàn)樗鼈兺饕昧四承┖瘮?shù)的假設(shè),例如sprintf()和vsprintf()假設(shè)緩沖區(qū)的長度是無限的。然而即使使用snprintf()替換sprintf()也無法完全保護(hù)程序不受格式化字符串的攻擊。這些攻擊通過直接將格式說明符(format specifiers)(%d,%s,%n等)傳遞到輸出函數(shù)接收緩沖區(qū)來進(jìn)行。例如,以下的代碼就是不安
41、全的:snprintf(buffer, sizeof(buffer), string) 這種情況下,可以在字符串中插入格式說明符來操縱內(nèi)存的棧,來寫入攻擊者的數(shù)據(jù)(這些數(shù)據(jù)中包含小的程序代碼,并可由處理器接著執(zhí)行)。 更多關(guān)于這些攻擊的具體內(nèi)容請見資源章節(jié)。對以上的例子建議使用下面的代碼。snprintf(buffer, sizeof(buffer), “%s”, string) 進(jìn)行格式字符串攻擊不太容易。首先攻擊者必須能獲得內(nèi)存棧的內(nèi)容情況(從應(yīng)用導(dǎo)出或者使用調(diào)試器),然后必須知道如何精確訪問特定的內(nèi)存空間來操縱棧中的變量。9.1.4.3 執(zhí)行外部程序推薦使用ex
42、ec()函數(shù)而不是system()函數(shù)來執(zhí)行外部程序。這是因?yàn)閟ystem()接收整個命令行的隨機(jī)的緩沖區(qū)來執(zhí)行程序。snprintf(buffer, sizeof(buffer), "emacs %s", filename); system(buffer);在以上的例子中,可以通過使用分號利用文件名變量在sehll中插入額外的命令(例如文件名可以是/etc/hosts; rm *,這將在顯示/etc/hosts目錄文件的同時,刪除目錄中的所有文件)。而exec()函數(shù)只保證第一個參數(shù)被執(zhí)行:execl("usr/bin/emacs", "us
43、r/bin/emacs", filename, NULL);上面的例子保證文件名僅僅作為一個參數(shù)輸入Emacs工具,同樣它在Emacs命令中使用完全的路徑而不是使用可以被攻擊者利用的PATH環(huán)境變量。9.1.4.4 競爭條件(race condition)進(jìn)程需要訪問資源時(無論是磁盤、內(nèi)存或是文件)通常需要執(zhí)行兩個步驟:(1) 首先測試資源是否空閑可用(2)如果可用,就訪問該資源,否則它等到資源不再使用為止再去訪問它當(dāng)另一個進(jìn)程在步驟1和2之間想要訪問同一個資源時將出現(xiàn)問題,導(dǎo)致不可預(yù)測的結(jié)果。進(jìn)程可能會被鎖定,或者一個進(jìn)程籍此獲得了另一個進(jìn)程的較大的權(quán)限而導(dǎo)
44、致安全問題。攻擊主要集中在有較大權(quán)限的程序上(稱為setuid程序)。競爭條件攻擊通常利用程序執(zhí)行時可以訪問到的資源。另外權(quán)限低的程序也存在安全風(fēng)險,因?yàn)楣粽呖赡軙却休^高權(quán)限的用戶執(zhí)行那個程序(例如root),然后進(jìn)行攻擊。下面的建議有助于緩解競爭條件(race condition)攻擊:在進(jìn)行文件操作時,利用那些使用文件描述符的函數(shù)而不使用那些使用文件路徑的函數(shù)(例如使用fdopen()而不要使用fopen())。文件描述符使得惡意的用戶在文件打開時或是在原始的進(jìn)程對文件進(jìn)行操作前,無法使用文件連接(符號式的或是物理的)來改變文件。在寫文件甚至在讀文件時宜使用fcntl()和flock
45、()函數(shù)來對文件加鎖,這樣它們就不能被其他進(jìn)程訪問。它幾乎可以建立原子級的操作。應(yīng)謹(jǐn)慎操縱臨時文件,因?yàn)樗鶗?dǎo)致競爭條件攻擊。9.1.4.5 檢驗(yàn)有效的返回值 檢驗(yàn)有效的返回值非常重要。一個例子是舊的/bin/login的實(shí)現(xiàn)中不檢驗(yàn)錯誤的返回值,導(dǎo)致當(dāng)它找不到/etc/passwd文件時返回root的訪問權(quán)限。如果該文件損壞了則這種情況是合理的;但如果該文件存在只是無法訪問,那么這就是一個大問題。9.2 系統(tǒng)開發(fā)安全相關(guān)工具管理有許多方法來確保代碼符合一定的安全級別。正如前面指出的,最好的方法之一是讓盡可能多的人來檢查代碼(而不是在QA環(huán)境中實(shí)際進(jìn)行白箱或者黑箱測試)。然而,有時代碼在開
46、始實(shí)際環(huán)境的應(yīng)用前往往沒有足夠的時間,并且即使檢查代碼也會漏掉一些不易發(fā)現(xiàn)的錯誤。這些錯誤可能會對整個系統(tǒng)導(dǎo)致重大的安全問題。因此(以及其他的原因),使用源碼分析工具(Source Code Analysis Tool(SCAT)來自動進(jìn)行某些檢查過程很有幫助。本文介紹了一些這方面的工具。每個工具都用同樣的測試工具來檢驗(yàn),這些測試工具包含C和Java的代碼段,而這些代碼段存在潛在的安全錯誤。我們比較了每個工具的測試結(jié)果,并且仔細(xì)檢查了以下的屬性:a) 靈活性 有多種選項(xiàng)并能掃描多種類型的代碼的工具得分會較高。b) 正確性 主要目標(biāo)是發(fā)現(xiàn)正確的安全問題,并且不會出現(xiàn)大量的誤報(bào)信息,或者更糟的是沒
47、有發(fā)現(xiàn)真正的錯誤信息。c) 容易使用 大多數(shù)情況下,程序員只需將工具指定到特定的代碼上然后選擇“掃描”。除非特別需要,程序員一般只做抽樣檢查,而無需開發(fā)復(fù)雜的測試機(jī)制。d) 報(bào)表 掃描結(jié)果應(yīng)以一種容易理解的格式來顯示,并且最好同時提示修改每個問題的方法,并附加理由。每個工具在解析代碼上的速度可以忽略不計(jì),所以沒有進(jìn)行比較(雖然這并不包括配置掃描的時間,而MOPS在這方面相對于其它工具需要更多的時間)。另外,這些工具都可以免費(fèi)獲得,甚至可以獲得它們的源代碼,所以不需考慮它們的成本。9.2.1 工具一:PScan Pscan是一個有針對性的掃描程序,主要用于發(fā)現(xiàn)C程序中的緩沖區(qū)溢出和格式化字符串攻
48、擊。該程序檢查所有用到標(biāo)準(zhǔn)C程序庫中的printf()函數(shù)。sprintf(buffer, variable); printf(buffer, variable); 關(guān)于這些語句在緩沖區(qū)溢出和格式化字符串攻擊中怎樣被利用可以查閱相關(guān)的C和C+文檔。Pscan的一個不足是不能發(fā)現(xiàn)由于越界檢查不充分而引起的常規(guī)性緩沖區(qū)溢出。但Pscan對于緩沖區(qū)溢出和格式化字符串攻擊的定位還是相當(dāng)精準(zhǔn)和快速的。Pscan程序相對簡單,它只將結(jié)果返回標(biāo)準(zhǔn)輸出,當(dāng)然也可以將其輸出到文件,并且除了說明程序員應(yīng)怎樣修正錯誤以外,不給出語句為什么出錯等類似信息。該工具一個顯著的特點(diǎn)是可以同時掃描多個文件。總體而言Pscan
49、程序相對簡單,易于使用,同時針對性很強(qiáng),但是由于它能夠適用的范圍過于狹窄因此一般不推薦其在大型商業(yè)應(yīng)用中使用,而只是檢查一些相對簡單的程序片斷。 9.2.2 工具二:Flawfinder Flawfinder是一個分析C程序安全隱患的靜態(tài)分析工具。和Pscan類似,該程序可以發(fā)現(xiàn)很多種類型的錯誤,除了printf()和標(biāo)準(zhǔn)的字符串函數(shù),它還可以發(fā)現(xiàn)競爭條件和系統(tǒng)調(diào)用。Flawfinder相比較Pscan,它返回的錯誤信息要豐富很多,并且也更加詳細(xì)。而這對于程序員來說非常重要。Flawfinder甚至可以對程序中的弱點(diǎn)進(jìn)行分類,例如buffer弱點(diǎn)、格式弱點(diǎn)、shell弱點(diǎn)等。 Flawofin
50、der是一個相當(dāng)出色的C程序檢查工具,速度會,界面友好,返回信息豐富,安裝使用相對簡單。該工具是檢查不同規(guī)模的應(yīng)用程序的首選,唯一不足的是它只能用于C程序的檢查。9.3 控制軟件代碼程序庫9.3.1 管理運(yùn)作程序庫我們通常將用于系統(tǒng)開發(fā)的軟件工具和開發(fā)平臺稱之為運(yùn)作程序,因此為了降低計(jì)算機(jī)程序被破壞的可能性,應(yīng)對運(yùn)作程序庫的訪問進(jìn)行嚴(yán)格的控制:a) 嚴(yán)格的管理在開發(fā)設(shè)備上的存放開發(fā)運(yùn)作程序的目錄。如果開發(fā)運(yùn)作程序沒有很好的保護(hù),則系統(tǒng)及其設(shè)置可能遭到未經(jīng)授權(quán)的訪問,并造成系統(tǒng)的安全性可靠性大大下降。b) 只有指定的人員如程序庫管理員經(jīng)過適當(dāng)?shù)墓芾硎跈?quán)后,才可以訪問運(yùn)作程序庫,對運(yùn)作程序庫的訪問
51、必須結(jié)合嚴(yán)格的訪問控制技術(shù)手段和雙重訪問控制機(jī)制。9.3.1.1 嚴(yán)格的訪問控制可以通過以下規(guī)定實(shí)現(xiàn):a) 嚴(yán)格管理開發(fā)部門所在區(qū)域的保安管理,防止未經(jīng)授權(quán)的人進(jìn)入開發(fā)區(qū)域。b) 嚴(yán)格管理開發(fā)用途的計(jì)算機(jī)使用,只有指定的人員才可以訪問開發(fā)用的計(jì)算機(jī)設(shè)備。c) 嚴(yán)格管理開發(fā)運(yùn)作系統(tǒng)的認(rèn)證管理,建立嚴(yán)格的基于人員職責(zé)的授權(quán)等級制度,用口令或其它身份識別技術(shù)確認(rèn)訪問者身份。9.3.1.2 建立雙重訪問控制機(jī)制雙重訪問控制機(jī)制就是對運(yùn)作程序庫的管理需經(jīng)兩個人同時進(jìn)行認(rèn)證后才可通過的方式。比如對運(yùn)作程序庫進(jìn)行更改或刪除需要兩個人進(jìn)行口令認(rèn)證,系統(tǒng)才允許進(jìn)行以上操作。需要進(jìn)行認(rèn)證的兩個人彼此不知道對方的認(rèn)
52、證口令或步驟。因此該認(rèn)證過程必須兩個人同時在場才可進(jìn)行操作。9.3.2 管理源程序庫源程序包含了系統(tǒng)及其控制如何實(shí)現(xiàn)的細(xì)節(jié),為修改系統(tǒng)提供了很好的切入點(diǎn),例如設(shè)置邏輯炸彈。且如果缺少源程序代碼會使得今后應(yīng)用系統(tǒng)的維護(hù)工作十分困難甚至無法完成。因此為了降低計(jì)算機(jī)程序被破壞的可能性,應(yīng)對源程序庫的訪問進(jìn)行嚴(yán)格的控制:a) 嚴(yán)格管理在開發(fā)設(shè)備上的存放源程序的目錄。如果源程序沒有很好的保護(hù),則系統(tǒng)及其設(shè)置可能會遭到未經(jīng)授權(quán)的訪問,并造成系統(tǒng)的安全性可靠性大大下降。b) 只有指定的人員如程序庫管理員經(jīng)過適當(dāng)?shù)墓芾硎跈?quán)后才可以訪問源程序庫,對源程序庫的訪問必須結(jié)合進(jìn)行嚴(yán)格的訪問控制技術(shù)手段和雙重訪問控制機(jī)
53、制。c) 各項(xiàng)應(yīng)用均應(yīng)指定相應(yīng)的管理員。d) 信息技術(shù)支持人員(非開發(fā)人員)不應(yīng)自由訪問源程序庫。e) 源程序庫和運(yùn)作程序庫宜分開存放并且分開管理。f) 源程序庫和運(yùn)行的應(yīng)用系統(tǒng)宜分開存放且分開管理。g) 源程序庫的更新和向程序員發(fā)布的源程序應(yīng)由指定的管理員根據(jù)一定的授權(quán)進(jìn)行,不得私自進(jìn)行更新或發(fā)放。h) 應(yīng)保存所有對源程序庫進(jìn)行訪問讀取或修改的日志記錄,以便日后審核。9.4 在軟件開發(fā)過程變更管理a) 系統(tǒng)容易受到未經(jīng)授權(quán)的變更的影響,即使是完全授權(quán)的更改也可能存在破壞性的影響,存在數(shù)據(jù)完整性的損失、應(yīng)用系統(tǒng)的不可用以及機(jī)密信息的泄漏的風(fēng)險。為了使信息系統(tǒng)的損失降至最小,組織應(yīng)對更改進(jìn)行嚴(yán)格
54、的控制,即在系統(tǒng)開發(fā)的每一個階段(可行性研究、需求分析、設(shè)計(jì)、編碼、測試、培訓(xùn)等)的每一個更改實(shí)施前必須經(jīng)過組織的評審與授權(quán)。b) 對于敏感的應(yīng)用系統(tǒng)的更改應(yīng)由另一人員進(jìn)行檢查,為了有效的進(jìn)行控制,組織應(yīng)建立更改控制審批程序,對更改的申請、評審、測試、批準(zhǔn)、更改的計(jì)劃的提出和實(shí)施提出明確要求并嚴(yán)格的實(shí)施,確保安全性與控制程序不被損害,程序設(shè)計(jì)人員應(yīng)只能訪問他們工作所必需的部分,確保任何的改動都應(yīng)經(jīng)過審批的。c) 更改的程序宜如下:Ø 清晰確認(rèn)所有需要更改的應(yīng)用系統(tǒng)、信息、數(shù)據(jù)庫和相關(guān)的硬件設(shè)備。Ø 清晰確認(rèn)更改的原因(業(yè)務(wù)上的具體流程和具體的需求或開發(fā)上的需求)。Ø
55、; 由授權(quán)的用戶提交更改申請。Ø 保留相關(guān)的授權(quán)登記記錄。Ø 在正式實(shí)施之前,更改的方案必須經(jīng)過評審并通過正式的批準(zhǔn)。Ø 確保授權(quán)的用戶在實(shí)施之前確認(rèn)并接受更改的內(nèi)容。Ø 確保在實(shí)施的過程中,盡量減少對現(xiàn)行的業(yè)務(wù)運(yùn)作系統(tǒng)的影響。Ø 確保建立的文件系統(tǒng)在完成各項(xiàng)更改時得到修改,舊文件被很好的歸檔或處置。Ø 保證所有的應(yīng)用系統(tǒng)升級的版本控制。Ø 確保對所有的更改請求進(jìn)行審核跟蹤。Ø 確保用戶使用手冊作相應(yīng)的必要的更改。Ø 確保更改的實(shí)施選擇了適當(dāng)?shù)臅r機(jī),以確保更改的實(shí)施不會干擾正常的業(yè)務(wù)運(yùn)作。9.5 開發(fā)版本
56、管理9.5.1 控制程序清單源程序相關(guān)信息可以幫助確認(rèn)系統(tǒng)問題的根源,并且一旦掌握了系統(tǒng)源程序相關(guān)信息可以清楚地了解系統(tǒng)的運(yùn)行邏輯和可能的薄弱點(diǎn),對系統(tǒng)的安全有很大的影響。a) 在任何時候?qū)τ诔绦蚯鍐伪仨氝M(jìn)行嚴(yán)格的控制并且及時地進(jìn)行更新。b) 對應(yīng)用系統(tǒng)開發(fā)源程序的打印資料、電子版本或者是相關(guān)的報(bào)告都必須進(jìn)行控制,紙質(zhì)的文件應(yīng)保存在一個安全的環(huán)境下,如保險柜等。電子文檔則應(yīng)進(jìn)行一定的加密。9.5.2 版本升級控制a) 應(yīng)用系統(tǒng)軟件開發(fā)版本升級申請。當(dāng)軟件的版本由于更新、修改等操作需要升級時必須先向相關(guān)負(fù)責(zé)人員提交申請。b) 應(yīng)用系統(tǒng)軟件版本升級測試。對升級的應(yīng)用系統(tǒng)進(jìn)行測試,確認(rèn)系統(tǒng)的各種安全特性。c) 應(yīng)用系統(tǒng)軟件版本審批。對應(yīng)用系統(tǒng)的版本的升級,應(yīng)確認(rèn)當(dāng)前的版本為最新的版本,舊的版本應(yīng)進(jìn)行歸檔,不得隨意丟棄或刪除。d) 應(yīng)用系統(tǒng)軟件版本升級計(jì)劃。制定相關(guān)的升級計(jì)劃,確保將系統(tǒng)升級對業(yè)務(wù)的影響降至最低。e) 應(yīng)用系統(tǒng)軟件版本升級實(shí)施。9.5.3 版本變更控制a) 版本變更應(yīng)提出申請,詳見1.9.4“軟件開發(fā)過程變更管理規(guī)范”。b) 應(yīng)使用軟件加鎖技術(shù)防止不同版本相互覆蓋的情況。c) 當(dāng)版本變更時應(yīng)在更新的版本中記錄變更的詳細(xì)描述。d) 應(yīng)提供版本的合并功能。e) 版本的更改應(yīng)只允許指定的人員進(jìn)行操作。f) 應(yīng)記錄所有的版本變更的日志,其中包括更改日期、更改前版本號、更
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廠房 改造 豪宅合同范本
- 合同范本 付款方式
- 農(nóng)家花椒出售合同范本
- 中外貿(mào)易買方信貸合同范本
- 單位變更合同范例
- 主播獨(dú)家簽約合同范本
- 區(qū)塊鏈技術(shù)合同范本
- 合伙買汽車合同范本
- 2025年人造板類家具合作協(xié)議書
- 廠房用電合同范本
- 《稅收負(fù)擔(dān)對我國制造業(yè)資本金融化的影響研究》
- 中學(xué)美術(shù)《剪紙藝術(shù)》完整課件
- 現(xiàn)代家政導(dǎo)論-課件 5.1.3家庭管家
- 適用的法律法規(guī)和其他要求的符合性評價
- 中國古典園林史復(fù)習(xí)
- 東湖高新區(qū)調(diào)研報(bào)告
- 腎包膜下血腫護(hù)理
- 丁善德藝術(shù)歌曲《愛人送我向日葵》創(chuàng)作特征及演唱技巧研究
- 2024華中區(qū)域電力并網(wǎng)運(yùn)行管理實(shí)施細(xì)則
- 2024《整治形式主義為基層減負(fù)若干規(guī)定》全文課件
- 手機(jī)短視頻拍攝與剪輯(微課版) 課件 第7章 視頻攝像
評論
0/150
提交評論