項(xiàng)目應(yīng)用系統(tǒng)開發(fā)安全管理規(guī)范_第1頁
項(xiàng)目應(yīng)用系統(tǒng)開發(fā)安全管理規(guī)范_第2頁
項(xiàng)目應(yīng)用系統(tǒng)開發(fā)安全管理規(guī)范_第3頁
項(xiàng)目應(yīng)用系統(tǒng)開發(fā)安全管理規(guī)范_第4頁
項(xiàng)目應(yīng)用系統(tǒng)開發(fā)安全管理規(guī)范_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、文檔編號(hào):項(xiàng)目應(yīng)用幵發(fā)等級(jí)保護(hù)規(guī)范 密級(jí):項(xiàng)目?jī)?nèi)部項(xiàng)目應(yīng)用系統(tǒng)開發(fā)安全管理規(guī)范(信息系統(tǒng)等級(jí)保護(hù)三級(jí))二O二O年一月應(yīng)用幵發(fā)等級(jí)保護(hù)規(guī)范項(xiàng)目?jī)?nèi)部項(xiàng)目設(shè)計(jì)階段代號(hào)建設(shè)單位承建單位尖于本文檔証明:類型一創(chuàng)建(C)、修改(U、刪除(D)、增加(A); 目 錄 TOC o 1-5 h z HYPERLINK l bookmark14 o Current Document 第1章概述1 HYPERLINK l bookmark16 o Current Document 1.1目標(biāo)1 HYPERLINK l bookmark18 o Current Document 1.2適用范圍1 HYPERLINK

2、l bookmark20 o Current Document 1.3規(guī)范引用的文件或標(biāo)準(zhǔn)1 HYPERLINK l bookmark22 o Current Document 1.4術(shù)語和定義2 HYPERLINK l bookmark24 o Current Document 1.5應(yīng)用系統(tǒng)開發(fā)總體原則3 HYPERLINK l bookmark26 o Current Document 第2章系統(tǒng)需求收集和分析階段 5 HYPERLINK l bookmark28 o Current Document 2.1可行性研究分析5 HYPERLINK l bookmark30 o Curren

3、t Document 21.1技術(shù)可行性分析5 HYPERLINK l bookmark32 o Current Document 21.2需求可行性分析 5 HYPERLINK l bookmark34 o Current Document 21.3投資可行性分析5 HYPERLINK l bookmark36 o Current Document 2.1.4影響可行性分析 5 HYPERLINK l bookmark38 o Current Document 開發(fā)人員安全管理 6 HYPERLINK l bookmark40 o Current Document 22!系統(tǒng)開發(fā)人員職責(zé)分配

4、 6 HYPERLINK l bookmark42 o Current Document 22.2開發(fā)人員授權(quán)6 HYPERLINK l bookmark44 o Current Document 22.3開發(fā)人員必須訓(xùn)練開發(fā)安全代碼的能力6 HYPERLINK l bookmark46 o Current Document 22.4分離系統(tǒng)開發(fā)和運(yùn)作維護(hù)7 HYPERLINK l bookmark48 o Current Document 2.3建立系統(tǒng)開發(fā)安全需求分析報(bào)告7 HYPERLINK l bookmark50 o Current Document 第3章系統(tǒng)設(shè)計(jì)階段的安全規(guī)范 8

5、 HYPERLINK l bookmark52 o Current Document 3.1單點(diǎn)訪問控制且無后門 8 HYPERLINK l bookmark54 o Current Document 人員職責(zé)和權(quán)限的定義 8 HYPERLINK l bookmark56 o Current Document 3.3確保敏感系統(tǒng)的安全性8 HYPERLINK l bookmark58 o Current Document 確保訪問層的安全性 8 HYPERLINK l bookmark60 o Current Document 確保日志管理機(jī)制健全 8 HYPERLINK l bookmark

6、62 o Current Document 3.6新系統(tǒng)的容量規(guī)劃9 HYPERLINK l bookmark64 o Current Document 第4章 系統(tǒng)開發(fā)階段安全規(guī)范 10 HYPERLINK l bookmark66 o Current Document 4.1系統(tǒng)開發(fā)語言10 HYPERLINK l bookmark68 o Current Document 4.1.1通用規(guī)范10 HYPERLINK l bookmark70 o Current Document Perli吾言 11 HYPERLINK l bookmark72 o Current Document Ja

7、Vai吾言 13 HYPERLINK l bookmark74 o Current Document C/C+語言 14 HYPERLINK l bookmark76 o Current Document 系統(tǒng)開發(fā)安全相尖工具管理17 HYPERLINK l bookmark78 o Current Document 421 工具一 :PSCan 18 HYPERLINK l bookmark80 o Current Document 工具二:FlaWfinder 18 HYPERLINK l bookmark82 o Current Document 控制軟件代碼程序庫(kù)19 HYPERLIN

8、K l bookmark84 o Current Document 43 !管理運(yùn)作程序庫(kù)19 HYPERLINK l bookmark86 o Current Document 4.3.2管理源程序庫(kù)19 HYPERLINK l bookmark88 o Current Document 4.4在軟件開發(fā)過程變更管理20 HYPERLINK l bookmark90 o Current Document 開發(fā)版本管理21 HYPERLINK l bookmark92 o Current Document 4.5.1控制程序清單21 HYPERLINK l bookmark94 o Curre

9、nt Document 4.5.2版本升級(jí)控制21 HYPERLINK l bookmark96 o Current Document 4.5.3版本變更控制22 HYPERLINK l bookmark98 o Current Document 開發(fā)日志審核管理 22 HYPERLINK l bookmark100 o Current Document 461開發(fā)日志定期審計(jì) 22 HYPERLINK l bookmark102 o Current Document 462開發(fā)人員權(quán)限定期審計(jì)22 HYPERLINK l bookmark104 o Current Document 防御后門

10、代碼或隱藏通道22 HYPERLINK l bookmark106 o Current Document 4.7.1后門代碼和隱藏通道介紹22 HYPERLINK l bookmark108 o Current Document 4.7.2防御后門代碼和隱藏通道的相尖辦法23 HYPERLINK l bookmark110 o Current Document 第5章系統(tǒng)測(cè)試階段安全規(guī)范24 HYPERLINK l bookmark112 o Current Document 應(yīng)用系統(tǒng)的安全性檢測(cè) 24 HYPERLINK l bookmark114 o Current Document 5.

11、1.1設(shè)計(jì)詳細(xì)的測(cè)試計(jì)劃、測(cè)試范圍、測(cè)試方法和測(cè)試工具 24 HYPERLINK l bookmark116 o Current Document 5.1.2測(cè)試種類245.1.3在測(cè)試的過程中詳細(xì)描述每個(gè)和測(cè)試方案相尖的測(cè)試步驟和測(cè)試數(shù)據(jù) 26 HYPERLINK l bookmark118 o Current Document 控制測(cè)試環(huán)境26 HYPERLINK l bookmark120 o Current Document 為測(cè)試使用真實(shí)的數(shù)據(jù) 26 HYPERLINK l bookmark122 o Current Document 5.4在軟件轉(zhuǎn)移至生產(chǎn)環(huán)境前進(jìn)行測(cè)試27 HYP

12、ERLINK l bookmark124 o Current Document 5.5應(yīng)用系統(tǒng)安全質(zhì)量鑒定27 HYPERLINK l bookmark126 o Current Document 第6章 系統(tǒng)培訓(xùn)及文檔階段安全規(guī)范 28 HYPERLINK l bookmark128 o Current Document 新系統(tǒng)的培訓(xùn)28 HYPERLINK l bookmark130 o Current Document 6.2撰寫新系統(tǒng)和系統(tǒng)改進(jìn)的文檔28 HYPERLINK l bookmark132 o Current Document 第7章 應(yīng)用系統(tǒng)開發(fā)外包安全控制 29 HYP

13、ERLINK l bookmark134 o Current Document 第8章附錄30 HYPERLINK l bookmark136 o Current Document 參考文獻(xiàn)30 HYPERLINK l bookmark138 o Current Document 本規(guī)范用詞說明32 HYPERLINK l bookmark140 o Current Document 821為便于在執(zhí)行本規(guī)范條文時(shí)區(qū)別對(duì)待,對(duì)要求嚴(yán)格程度不同的用詞說明如下:.32應(yīng)符合的規(guī)定”或應(yīng)822條文中指定應(yīng)按其它有尖標(biāo)準(zhǔn)、規(guī)范執(zhí)行時(shí),應(yīng)符合的規(guī)定”或應(yīng)32要求(或規(guī)定)執(zhí)行”32第1章概述信息系統(tǒng)的許

14、多的安全控制或其他安全性保證是通過系統(tǒng)的開發(fā)設(shè)計(jì)予以實(shí)現(xiàn) 的。因此如果在系統(tǒng)的開發(fā)設(shè)計(jì)階段沒有對(duì)系統(tǒng)的安全性給予充分的考慮,那么系 統(tǒng)本身一定會(huì)存在許多先天不足,系統(tǒng)就會(huì)漏洞百出。為確保應(yīng)用系統(tǒng)的 安全,在 應(yīng)用系統(tǒng)開發(fā)之前就應(yīng)確認(rèn)系統(tǒng)的安全需求,并以此作為開發(fā)設(shè)計(jì)的階段的基礎(chǔ)。本規(guī)范主要規(guī)定了在系統(tǒng)開發(fā)的各個(gè)階段所應(yīng)遵守的各種安全規(guī)范,從需求 分析開始,到設(shè)計(jì),再到開發(fā)和維護(hù)以及最后的文檔等系統(tǒng)開發(fā)的各個(gè)階段分別進(jìn) 行闡述,并將在不同階段中所需要注意的安全問題和相尖的安全規(guī)范進(jìn)行進(jìn)一步的 描述和規(guī)定。1.1目標(biāo)保護(hù)應(yīng)用系統(tǒng)開發(fā)過程的安全。具體地說就是保護(hù)應(yīng)用系統(tǒng)開發(fā)過程免受未 經(jīng) 授權(quán)的訪問

15、和更改,保護(hù)系統(tǒng)開發(fā)中系統(tǒng)軟件和信息的安全,確保開發(fā)項(xiàng)目順利正 確的實(shí)施并對(duì)開發(fā)環(huán)境進(jìn)行嚴(yán)格的控制。同時(shí)確保應(yīng)用系統(tǒng)開發(fā)外包中的各 項(xiàng)安 全。12適用范圍本套規(guī)范適用的范圍包括了整個(gè)應(yīng)用系統(tǒng)開發(fā)過程中的安全。包括了系統(tǒng)開發(fā) 可行性和需求分析階段的安全,系統(tǒng)設(shè)計(jì)階段的安全,系統(tǒng)開發(fā)階段的安全,系統(tǒng) 測(cè)試階段的安全,系統(tǒng)培訓(xùn)和文檔階段的安全以及系統(tǒng)開發(fā)外包的安全規(guī) 范。主要規(guī)定了應(yīng)用系統(tǒng)開發(fā)過程的安全保密,軟件的質(zhì)量的要求,系統(tǒng)和業(yè)務(wù) 需求的符合性,保證敏感信息的安全,系統(tǒng)本身的穩(wěn)定性和兼容性問題。1.3規(guī)范引用的文件或標(biāo)準(zhǔn)下列文件中的條款通過本標(biāo)準(zhǔn)的引用而成為本標(biāo)準(zhǔn)的條款。凡是不注日期的引 用文

16、件,其最新版本適用于本標(biāo)準(zhǔn)。GBl 7859-1999計(jì)算機(jī)信息系統(tǒng)安全保護(hù)等級(jí)劃分準(zhǔn)則GB/T 9387-1995信息處理系統(tǒng)幵放系統(tǒng)互連基本參考模型(ISO7498 :1989)G/4/T 391-2002計(jì)算機(jī)信息系統(tǒng)安全等級(jí)保護(hù)管理要求SOIEC TR 13355信息技術(shù)安全管理指南NIST信息安全系列一一美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)院英國(guó)國(guó)家信息安全標(biāo)準(zhǔn)BS7799信息安全基礎(chǔ)保護(hù) IT BaSeIine PrOteCtiOn ManUal (Germany)Beari ngPoi nt COn SUIt ing內(nèi)部信息安全標(biāo)準(zhǔn)RU SeCUre安全技術(shù)標(biāo)準(zhǔn)信息系統(tǒng)安全專家叢書 CertifiC

17、ate In formation SyStemS SeCUrity PrOfeSSiOnal1.4術(shù)語和定義訪問控制access COntrOl 種安全保證手段,即信息系統(tǒng)的資源只能由被 授權(quán)實(shí)體按授權(quán)方式進(jìn)行訪問,防止對(duì)資源的未授權(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í)訪問和使 用數(shù)據(jù)或資源。緩沖器溢出buffer OVerflOW指通過往程序的緩沖

18、區(qū)寫超出其長(zhǎng)度的內(nèi)容, 造成緩沖區(qū)的溢出,從而破壞程序的堆棧,使程序轉(zhuǎn)而執(zhí)行其它指令,以達(dá)到攻擊 的目的。保密性COnfidentiality數(shù)據(jù)所具有的特性,即表示數(shù)據(jù)所達(dá)到的未提供或 未 泄露給未授權(quán)的個(gè)人、過程或其他實(shí)體的程度。隱藏通道COVert Channel可用來按照違反安全策略的方式傳送!數(shù)據(jù)的傳 輸信道。完整性integrity在防止非授權(quán)用戶修改或使用資源和防止授權(quán)用戶不正確 地修改或使用資源的情況下,信息系統(tǒng)中的數(shù)據(jù)與在原文檔中的相同,并未遭受偶 然或惡意的修改或破壞時(shí)所具的性質(zhì)。敏感信息Se nsitive in formation由權(quán)威機(jī)構(gòu)確定的必須受保護(hù)的信息,因 為

19、該信息的泄露、修改、破壞或丟失都會(huì)對(duì)人或事產(chǎn)生可預(yù)知的損害。系統(tǒng)測(cè)試SyStem testing用于確定系統(tǒng)的安全特征按設(shè)計(jì)要求實(shí)現(xiàn)的過 程。 這一過程包括現(xiàn)場(chǎng)功能測(cè)試、滲透測(cè)試和驗(yàn)證。后門代碼trapdoor通常為測(cè)試或查找故障而設(shè)置的一種隱藏的軟件或硬件 機(jī)制,它能避開計(jì)算機(jī)安全。而且它能在非常規(guī)時(shí)間點(diǎn)或無需常規(guī)檢查的情況下進(jìn) 入程序。特洛伊木馬TrOjan horse 一種表面無害的程序,它包含惡性邏輯程序5導(dǎo) 致未授權(quán)地收集、偽造或破壞數(shù)據(jù),以此破壞計(jì)算機(jī)安全與完整性的進(jìn)程。驗(yàn)證VerifiCatiOn將某一活動(dòng)、處理過程或產(chǎn)品與相應(yīng)的要求或規(guī)范相比 較。例:將某一規(guī)范與安全策略模型相

20、比較,或者將目標(biāo)代碼與源代碼相比較。壓力測(cè)試于確定系統(tǒng)的薄弱環(huán)節(jié),確定系統(tǒng)在非正常條件下能夠迅速恢 復(fù) 到正常的運(yùn)行狀態(tài)的能力。15應(yīng)用系統(tǒng)開發(fā)總體原則應(yīng)用系統(tǒng)的開發(fā)應(yīng)遵循一系列的總體原則,以確保開發(fā)過程中的安全。其中 包括:系統(tǒng)開發(fā)應(yīng)從業(yè)務(wù)需求的角度出發(fā),不得盲目追求系統(tǒng)的先進(jìn)性而忽略了 系統(tǒng)的實(shí)用性。系統(tǒng)的開發(fā)是為了更好地滿足業(yè)務(wù)上的需要,而不是技術(shù)上的需要。開發(fā)的方法和管理必須規(guī)范化、合理化、制度化,從而確保開發(fā)的質(zhì)量和 進(jìn)度。應(yīng)保證開發(fā)的進(jìn)度并按時(shí)完成。確保開發(fā)工作及時(shí)、有效且高質(zhì)量的完成。系統(tǒng)開發(fā)必須具有一定的前瞻性,符合主流系統(tǒng)的發(fā)展方向。提高和加強(qiáng)開發(fā)人員的安全意識(shí)。確保機(jī)密信息

21、和尖鍵技術(shù)不會(huì)泄漏,特 別是不可泄漏到競(jìng)爭(zhēng)對(duì)手的手中,否則將會(huì)對(duì)公司的競(jìng)爭(zhēng)力產(chǎn)生極大的影響。應(yīng)充分利用現(xiàn)有的資源。第2章系統(tǒng)需求收集和分析階段2.1可行性研究分析對(duì)于應(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)時(shí)間??尚行匝芯恳藦募夹g(shù)、需求面、投入和影響四個(gè)方面進(jìn)行考慮:2.1.1技術(shù)可行f生分析根據(jù)業(yè)務(wù)上提出的需求,從技術(shù)開發(fā)的角度分析現(xiàn)有的技術(shù)手段和技術(shù)能力是 否能夠?qū)崿F(xiàn)業(yè)務(wù)上所要求的系統(tǒng)功能。通??蓮囊韵氯齻€(gè)方面進(jìn)行分析:人員技術(shù)能力分析,指公司內(nèi)的系統(tǒng)開發(fā)隊(duì)伍

22、或外包的第三方開發(fā)公司是 否具有足夠技術(shù)和管理能力來完成系統(tǒng)開發(fā)的任務(wù)。計(jì)算機(jī)軟件和硬件分析,指公司現(xiàn)有的軟件和硬件的性能是否足夠滿足開 發(fā)相應(yīng)的系統(tǒng)的要求。管理能力分析,指現(xiàn)有的技術(shù)開發(fā)管理制度和管理流程是否成熟且標(biāo)準(zhǔn)化,是否滿足系統(tǒng)開發(fā)的要求。2.1.2需求可行性分析系統(tǒng)的開發(fā)來源于業(yè)務(wù)上的需求,因此需要對(duì)該需求進(jìn)行可行性分析,以判斷 需求是否明確,是否符合實(shí)際,是否在一定的時(shí)間范圍內(nèi)可以實(shí)現(xiàn)。21.3投資可行性分析根據(jù)業(yè)務(wù)需求和技術(shù)手段的分析,確認(rèn)實(shí)現(xiàn)系統(tǒng)開發(fā)所需的投資,并確認(rèn)投 資 的數(shù)額是否在可控制和可承受的范圍內(nèi)。21.4影響可行性分析所謂的影響是指社會(huì)影響,比如系統(tǒng)幵發(fā)是否符合法

23、律法規(guī)上的要求, 是否 和相尖的管理制度或行業(yè)標(biāo)準(zhǔn)相抵觸,是否符合人文或道德上的約束等。2.2開發(fā)人員安全管理221系統(tǒng)開發(fā)人員職責(zé)分配在系統(tǒng)開發(fā)的過程中,應(yīng)明確不同人員的身份和職責(zé)。在系統(tǒng)開發(fā)過程中具 體 可分以下三種角色:項(xiàng)目負(fù)責(zé)人員:確保在整個(gè)系統(tǒng)開發(fā)的各個(gè)階段都實(shí)施了相尖的安全措施,同時(shí)在整個(gè)系統(tǒng)開發(fā)的過程中負(fù)責(zé)整個(gè)項(xiàng)目的開發(fā)安全管理。系統(tǒng)開發(fā)人員:根據(jù)業(yè)務(wù)需求確保開發(fā)的系統(tǒng)能夠滿足業(yè)務(wù)上的需求和相 應(yīng)的安全上的需求,同時(shí)滿足系統(tǒng)質(zhì)量上和進(jìn)度上的要求。系統(tǒng)審核人員:對(duì)整個(gè)開發(fā)的過程進(jìn)行審核和監(jiān)督,確保開發(fā)的質(zhì)量和 開 發(fā)的安全。2.2.2開發(fā)人員授權(quán)應(yīng)根據(jù)該員工在整個(gè)幵發(fā)項(xiàng)目中所負(fù)責(zé)的

24、開發(fā)內(nèi)容授予其相應(yīng)的權(quán)限和所 應(yīng)承擔(dān)的責(zé)任。幵發(fā)人員必須負(fù)責(zé)其開發(fā)內(nèi)容的保密性,不得私自將幵發(fā)的相尖信息泄漏 出去,即使對(duì)家人或開發(fā)團(tuán)隊(duì)中的其他開發(fā)人員也不得泄漏。但開發(fā)人員有責(zé)任將 開發(fā)的相尖信息告訴項(xiàng)目的負(fù)責(zé)人員或開發(fā)小組的負(fù)責(zé)人員。以書面的方式將員工的權(quán)限和相應(yīng)的責(zé)任提交給員工本人。必須嚴(yán)格規(guī) 定 在為企業(yè)工作期間,所有和工作相尖的開發(fā)成果的所屬權(quán)都?xì)w企業(yè)所有。應(yīng)根據(jù)員工權(quán)限和責(zé)任的大小確認(rèn)是否需要簽署相尖的保密協(xié)議。應(yīng)在日常工作中記錄員工與開發(fā)相尖的日志信息。員工一旦離職或調(diào)動(dòng)崗位應(yīng)立即收回或調(diào)整其相應(yīng)的權(quán)限。2.2.3開發(fā)人員必須訓(xùn)練開發(fā)安全代碼的能力在整個(gè)開發(fā)的過程中必須完整持續(xù)地

25、進(jìn)行代碼錯(cuò)誤處理所規(guī)定的流程。錯(cuò)誤問題報(bào)告應(yīng)力求通俗易懂,不應(yīng)在其中包含任何系統(tǒng)細(xì)節(jié)問題。應(yīng)對(duì)重要的敏感信息進(jìn)行加密保護(hù)。應(yīng)使用一些相對(duì)復(fù)雜的加密和密鑰生成機(jī)制。應(yīng)單獨(dú)編寫安全性設(shè)計(jì)說明概要224分離系統(tǒng)開發(fā)和運(yùn)作維護(hù)管理層必須確保應(yīng)用系統(tǒng)的開發(fā)和運(yùn)作管理從組織人事和權(quán)限職責(zé)上分開。信息技術(shù)人員可以現(xiàn)場(chǎng)修復(fù)或更改偶然或惡意的數(shù)據(jù)和軟件問題。測(cè)試代碼中往往包含調(diào)試或者查錯(cuò)代碼,大大增加了主機(jī)系統(tǒng)的性能負(fù) 擔(dān)。開發(fā)人員不應(yīng)具有很高的權(quán)限,否則將在系統(tǒng)運(yùn)行中產(chǎn)生很大的風(fēng)險(xiǎn)。2.3建立系統(tǒng)開發(fā)安全需求分析報(bào)告安全需求計(jì)劃應(yīng)能夠達(dá)到期望的安全水平。其中包括了成本的預(yù)估,完 成 各個(gè)安全相尖流程所需的時(shí)間

26、。所有尖于應(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) 的 所有者密切相尖。開發(fā)安全需求分析計(jì)劃應(yīng)由開發(fā)項(xiàng)目經(jīng)理和公司內(nèi)部的安全小組共同商 議 決定。應(yīng)確保每一個(gè)應(yīng)用系統(tǒng)的用戶都意識(shí)到系統(tǒng)的更新或改進(jìn)都與其自身密切 相尖,所有的更新或改動(dòng)建議都必須基于業(yè)務(wù)需求, 而不是基于所謂的“信息 技術(shù)的要求”。系統(tǒng)的每一次更新或改進(jìn)都必須認(rèn)真對(duì)待,必須進(jìn)行詳細(xì)的需求定義、需 求分析以及測(cè)試評(píng)估,以保證不會(huì)對(duì)業(yè)務(wù)造成任何不良影響。業(yè)務(wù)需求是系統(tǒng)更新和改動(dòng)

27、的基礎(chǔ),因此必須清晰明確地定義業(yè)務(wù)的需求,禁止在業(yè)務(wù)需求未經(jīng)業(yè)務(wù)部門領(lǐng)導(dǎo)和主要負(fù)責(zé)人員認(rèn)可的情況下, 盲目地進(jìn) 行開發(fā)工作。第3章系統(tǒng)設(shè)計(jì)階段的安全規(guī)范3.1單點(diǎn)訪問控制且無后門任何用戶如果希望訪問應(yīng)用系統(tǒng)中的某一部分,則必須通過統(tǒng)一且唯一的認(rèn) 證 授權(quán)方式及流程。3.2人員職責(zé)和權(quán)限的定義由于不是所有的人員對(duì)于某一個(gè)應(yīng)用系統(tǒng)都具有同樣的訪問或使用權(quán)限,因 此系統(tǒng)必須具有基于人員職責(zé)的用戶授權(quán)管理,以確保每個(gè)用戶可以訪問到其權(quán) 限 范圍內(nèi)的應(yīng)用系統(tǒng)部分。同時(shí)應(yīng)確保每個(gè)用戶無法訪問其權(quán)限范圍以外的應(yīng)用系統(tǒng) 部分。3.3確保敏感系統(tǒng)的安全,性將應(yīng)用系統(tǒng)中敏感的信息保存在服務(wù)器端以進(jìn)行集中的加密的安

28、全管理,確??蛻舳讼到y(tǒng)本身并不能存儲(chǔ)任何敏感的數(shù)據(jù)。3.4確保訪問層的安全性應(yīng)用系統(tǒng)不僅僅要確保系統(tǒng)模塊本身的安全性,同時(shí)還應(yīng)考慮模塊與模塊之 間通訊的安全性。這種模塊與模塊之間通訊的安全性不僅僅包括了應(yīng)用系統(tǒng)內(nèi)部 模 塊之間通訊的安全,也包括了應(yīng)用系統(tǒng)內(nèi)部模塊和外部模塊之間的通訊安全 性,如 主機(jī)和客戶端之間通訊的安全性、服務(wù)器和服務(wù)器間通訊的安全性,以及 本地系 統(tǒng)和異地系統(tǒng)之間通訊的安全性。3.5確保日志管理機(jī)制健全應(yīng)建立可根據(jù)情況自由設(shè)置的日志管理機(jī)制,也就是說日志記錄的范圍和詳 細(xì) 程度可以根據(jù)需求自行定制,且可以實(shí)現(xiàn)在應(yīng)用系統(tǒng)的使用過程中進(jìn)行日志的定制 和記錄。保留所有與系統(tǒng)開發(fā)相

29、矣的程序庫(kù)的更新審核記錄。3.6新系統(tǒng)的容量規(guī)劃容量規(guī)劃是指確定系統(tǒng)的總體規(guī)模、性能和系統(tǒng)彈性。容量規(guī)劃的具體內(nèi)容可 能有所不同,但一般應(yīng)考慮以下方面:系統(tǒng)的預(yù)期存儲(chǔ)容量和在給定的周期中獲取生成和存儲(chǔ)的數(shù)據(jù)量。在線進(jìn)程的數(shù)量和估計(jì)可能的占用資料系統(tǒng)和網(wǎng)絡(luò)的響應(yīng)時(shí)間和性能,即端對(duì)端系統(tǒng)系統(tǒng)彈性要求和設(shè)計(jì)使用率(峰值,槽值和平均值等)安全措施如加密解密數(shù)據(jù)對(duì)系統(tǒng)的影響。24x7運(yùn)作要求和可接受的系統(tǒng)宕機(jī)次數(shù)(維護(hù)或者設(shè)備更新導(dǎo)致的必須性 宕機(jī))規(guī)劃容量的時(shí)候尖于系統(tǒng)使用的信息了解的越多越好。近來,由于互聯(lián)網(wǎng)站 的 使用以指數(shù)形式增長(zhǎng),容量規(guī)劃的變動(dòng)效果不是非常顯著,有時(shí)甚至毫無用處。原 因在于很難

30、估計(jì)實(shí)際的負(fù)載。在容量估計(jì)的時(shí)候應(yīng)盡量將情況設(shè)想得復(fù)雜一些。第4章系統(tǒng)開發(fā)階段安全規(guī)范4.1系統(tǒng)開發(fā)語言程序員可使用很多指導(dǎo)規(guī)范來防止應(yīng)用程序中的普通安全問題。其中許多可以應(yīng)用于任何一種編程語言,但某些是針對(duì)特定的語言的。特定語言的指導(dǎo)規(guī)范 主要 集中在Perl,Java和CC+語言。大多數(shù)情況下,一般的錯(cuò)誤可以避免。而這些本 可以避免的錯(cuò)誤常常會(huì)導(dǎo)致很多安全漏洞,從而威脅信息的保密性、完整性和可用性。4.1.1通用規(guī)范輸入驗(yàn)證在客戶機(jī)/服務(wù)器環(huán)境下,進(jìn)行服務(wù)端的驗(yàn)證而不是客戶端的驗(yàn)證(例如基于 JaVaSCriPt的驗(yàn)證)。通過在客戶端和服務(wù)器之間放置一個(gè)代理服務(wù)器,可以很容易 繞過客戶端驗(yàn)

31、證。有了代理服務(wù)器,攻擊者可以在數(shù)據(jù)被客戶端“驗(yàn)證”后修改數(shù)據(jù) (與“ manJrvthamiddle攻擊類似)。在實(shí)際的校驗(yàn)中,輸入校驗(yàn)首先定義一個(gè)有效(可接受)的字符集,然后檢查每 個(gè)數(shù)據(jù)的字符是否在有效范圍內(nèi)。如果輸入中包含無效的字符,應(yīng)用程序應(yīng) 返回錯(cuò)誤 頁面并說明輸入中包含無效字符。這樣進(jìn)行驗(yàn)證的原因是定義無效的字 符集比較困 難,并且一些不應(yīng)有效的字符通常不會(huì)被指出。邊界檢查(例如字符串的最大長(zhǎng)度)應(yīng)在字符有效性檢查以前進(jìn)行。邊界分 析 可以防止大多數(shù)緩沖區(qū)溢出漏洞。從環(huán)境變量獲得的數(shù)據(jù)也需要進(jìn)行驗(yàn)證。同時(shí)避免在環(huán)境變量中存放敏感數(shù) 據(jù) (例如密碼)。某些UniX系統(tǒng)(例如Free

32、BSD包含PS命令,可以讓用戶看至J任何 當(dāng)前進(jìn)程的環(huán)境變量,這常常會(huì)暴露保密性信息。SQL 語句如果應(yīng)用程序需要連接后端數(shù)據(jù)庫(kù),不得在代碼中使用SQL語句。使用程序以 外的嵌入在代碼中的SQL語句調(diào)用特別危險(xiǎn),難以防止攻擊者使用輸入域或者配置文 件(由應(yīng)用程序載入)來執(zhí)行嵌入式的SQL攻擊。而輸入驗(yàn)證有助于緩解 這種風(fēng)險(xiǎn)。 注釋代碼(Con)men ted COde)當(dāng)應(yīng)用程序在實(shí)際環(huán)境中開始應(yīng)用時(shí),應(yīng)刪除所有的注釋代碼。注釋代碼是 用來調(diào)試或者測(cè)試的,它們不是最終應(yīng)用程序的一部分。無論如何應(yīng)在實(shí)際的環(huán)境中 刪除它們來避免意外的執(zhí)行(一般注釋標(biāo)識(shí)被刪除后就無法激活休眠的代碼,但還是 存在可能

33、性的,所以應(yīng)執(zhí)行這項(xiàng)工作)。4.bl.4錯(cuò)誤消息所有對(duì)用戶顯示的錯(cuò)誤信息都不應(yīng)暴露任何尖于系統(tǒng)、網(wǎng)絡(luò)或應(yīng)用程序的敏感信 息。如果可能的話,應(yīng)使用包含編號(hào)的一般的錯(cuò)誤信息,這種信息只有開發(fā)者和/或支 持小組才能理解。一般的錯(cuò)誤信息的例子是“發(fā)生了錯(cuò)誤(代碼1234),請(qǐng)您與系統(tǒng) 維護(hù)部門聯(lián)系。n統(tǒng)一資源定位(URL內(nèi)容對(duì)于Web應(yīng)用,不要在URL上暴露任何重要信息,例如密碼、服務(wù)器名稱、IP 地址或者文件系統(tǒng)路徑(暴露了 Web服務(wù)器的目錄結(jié)構(gòu))。這些信息可以在 攻擊時(shí) 使用。例如下面就是一個(gè)不安全的URL HYPERLINK http:/www.xyzcompany.eom/i http:/w

34、ww.xyzcompany.eom/i ndex.cgi?USername=IJSER&password= PASSWORD &file=/home/USERexpe nses.txt設(shè)置PATH變量設(shè)置PATH為一個(gè)已知的值,而不僅僅是使用啟動(dòng)時(shí)的缺省值。攻擊者可以在攻 擊應(yīng)用程序時(shí)使用PATH變量,例如試圖執(zhí)行一個(gè)任意的程序。這些也可以應(yīng)用于大 多數(shù)其他的語言。Perl 語言多年以來,Perl已經(jīng)成為用于系統(tǒng)管理和Web CGl開發(fā)的功能最強(qiáng)的編程語言 之一(幾乎可以使用Perl實(shí)現(xiàn)任何功能)。但其擴(kuò)展應(yīng)用,即作為In ternet上CGl的 開發(fā)工具,使得它經(jīng)常成為Web服務(wù)器上的攻擊目

35、標(biāo)。另外,大多數(shù)CGl腳本有著比一般用戶更高的權(quán)限,導(dǎo)致它更容易受攻擊。下面列舉了一些開發(fā)者(特別是CGl程序員)可以使用的主動(dòng)的預(yù)防性的措施來增強(qiáng)Perl代碼的整體安全性(請(qǐng)注意:這不是Web服務(wù)器CGI腳本安全性的指導(dǎo)原則)。4.1.2.ITaint 驗(yàn)證Perl版本5.x包含一個(gè)叫做Tai nt CheCki ng的數(shù)據(jù)驗(yàn)證措施。如果起用該功能, 它就不允許通過用戶輸入(任何程序外的輸入)來操縱其他的外部程序(例如通過管 道將數(shù)據(jù)導(dǎo)入另一個(gè)程序執(zhí)行)。一般而言,程序員不能信任輸入腳本和程序的數(shù) 據(jù)(叫做Tainteel數(shù)據(jù)),因?yàn)闊o法保證它不會(huì)產(chǎn)生危害(有意或者無 意的)。TairIt

36、驗(yàn)證可以通過在命令行參數(shù)加入“來開啟。例如可以Perl腳本的第一行這樣加 入“ T :#!usr/bi nperl5 TTainted數(shù)據(jù)包括命令行參數(shù)、環(huán)境變量和來自文件的數(shù)據(jù)。引用 tainted數(shù)據(jù)的變量也成為tainted數(shù)據(jù)。如果腳本試圖通過不安全的方式來使用tainted數(shù) 據(jù)會(huì) 產(chǎn)生一個(gè)致命錯(cuò)誤(對(duì)這種情況稱為“不安全的依賴”(InSeCUre dependency)或者其他的說法)。啟用tainted驗(yàn)證在有些情況下會(huì)導(dǎo)致腳本停止運(yùn)行,常常是由于 Perl解釋器要求所有腳本引用的外部程序的完全路徑必須在PATH環(huán)境變量中列出,同時(shí)PATH中包含的每個(gè)目錄除了目錄的所有者及相應(yīng)的

37、所有者用戶 組外 無法修改。Tai nt驗(yàn)證對(duì)于環(huán)境比較敏感,這就可能會(huì)導(dǎo)致大多數(shù)程序員不愿使用 它,但是只要可能就應(yīng)使用tai nt驗(yàn)證,特別是代碼執(zhí)行其他程序功能時(shí)(例如在CGl腳本的情況下)。安全模塊如果不但輸入數(shù)據(jù)不可信而且實(shí)際的代碼也不可信會(huì)產(chǎn)生什么情況?例如用戶從 網(wǎng)站上下載了一個(gè)ACtiVeX控件,而它實(shí)際是一個(gè)特洛伊木馬(TrOja n horse)。這種 情況下taint驗(yàn)證就不起作用。安全模塊讓程序員可以在Perl腳本中將不同的代碼模 塊與安全對(duì)象相聯(lián)系。每個(gè)安全對(duì)象對(duì)于運(yùn)行的每塊代碼建立了 一個(gè)限制的環(huán)境。這 與ChrOOt在一個(gè)進(jìn)程中只能在整體目錄結(jié)構(gòu)的一個(gè)子目錄中運(yùn)行

38、類似。而Saft對(duì)象限 制Perl代碼只能在Perl包結(jié)構(gòu)的某些特定包中運(yùn)行。如何使用安全模式超出了本文的 范圍,但程序員應(yīng)在任何時(shí)候使用這一功能。警告參數(shù)(-w)使用-W參數(shù)可以在Perl解釋腳本時(shí)顯示所有的警告信息。警告可以對(duì)以下情況產(chǎn)生:只使用了一次的變量或者完全沒有使用過的變量,未定義的文件句柄,未尖閉的文件句柄,或?qū)⒎菙?shù)值變量傳遞到數(shù)據(jù)變量。該功能不是針對(duì)安全處理的, 但是有助于調(diào)試直接或者間接對(duì)安全有危害的錯(cuò)誤。一般推薦總是使用-W參數(shù)??稍趖aint驗(yàn)證時(shí)在第一行這樣使用w參數(shù):#!usr/binperl5 TwJaVa 語言自從1995年發(fā)布以來,Java成為簡(jiǎn)單或者復(fù)雜網(wǎng)絡(luò)應(yīng)

39、用的有效編程語言。它在 設(shè)計(jì)時(shí)充分考慮了安全問題,因此它具有的限制特征有:收集不再使用的內(nèi)存碎片的 垃圾收集器,嚴(yán)格的“ sandbox”安全模型,以及在特定主機(jī)上限制應(yīng)用程序的活動(dòng) 的安全管理器。以下為使用中的相尖的規(guī)范:不應(yīng)在標(biāo)準(zhǔn)輸出上打印消息在實(shí)際的In ternet系統(tǒng)中避免使用SyStem.out.pri ntl n()或者SyStem.err.pri ntl n()打印日志和錯(cuò)誤消息,原因是當(dāng)消息打印到標(biāo)準(zhǔn)輸出時(shí),無法立即確定消息發(fā)生的地點(diǎn),且有可能將敏感信息透露給攻擊者。封裝JaVa中,如果沒有使用訪問標(biāo)識(shí)符(access modifier(private、PrOteCted或P

40、UbIiC)來聲明類、方法和屬性,那么它的默認(rèn)訪問范圍是包,并且同一包中的所有 類都能訪問它。必須記住雖然包有封裝功能,但它只有在每部分加載到包的代碼都由授權(quán)用戶控制時(shí)才起作用。惡意的用戶可以加入他們自己 的類,從而對(duì)于包中的所有類、方法和屬性都有完全的訪問權(quán)限。JaVa的政策文件支持兩種控制包訪問權(quán)限的前綴。accessClass In PaCkagedefi neClass In PaCkage所有標(biāo)準(zhǔn)庫(kù)中的類都默認(rèn)是可以公共訪問的(除了由“suF開頭的類)。為了保證一個(gè)包的安全性,必須修改$JAVA HOMEjrelibSeCUrity文件夾中 的java.security文件。該文件中

41、的重要行是:PaCkage.access=s UrL雖然該方法有作用,但仍存在問題。例如程序員在java.security文件中定義 包的安全時(shí)必須十分小心。在PaCkage.access中的值是字符型的,“sun.,將保護(hù)“ SUn .tools 等包,但是不會(huì)對(duì)“ SUrr或者“ SUn Shi ne ,等包進(jìn)行保護(hù)。另一個(gè)方法是使用JAR密封(Sealing)。JAR(JaVa ARChiVe)文件是一些類的打包壓縮格式的文件,與常用的ZlP格式類似。如果從一個(gè)密封(SeaIirlg)的JAR 文件中加載一個(gè)類,隨后同一個(gè)包的類只能從該JAR文件加載。為了起用 密圭寸 (Sealing)

42、,必須在建立JAR文件時(shí)這樣設(shè)置密圭寸(Seal)參數(shù):Sealed: true使用密圭寸(Sealing)的JAR文件比權(quán)限(PermiSSion)設(shè)置更好,因?yàn)樗恍枰惭b安全管理器(SeCUrity manager) o政策文件JaVa內(nèi)建的安全管理器是對(duì)應(yīng)用程序進(jìn)行限制的一個(gè)方便的工具。很多情況 下需要編制一個(gè)定制的安全管理器,JDK1.2及以后的版本提供了描述設(shè)置的方法而不 是實(shí)施它們。這是通過JaVa政策文件實(shí)現(xiàn)的。可以用政策文件以相對(duì)模塊化的方式 控制文件系統(tǒng)和網(wǎng)絡(luò)的訪問。例如可以限制應(yīng)用程序只能修改名字是foo的文件。宜使用JaVa政策文件和安全管理器而不是重新創(chuàng)建一個(gè)類或者系

43、統(tǒng)來限制對(duì)主 機(jī)和網(wǎng)絡(luò)的訪問。C/C+ 語言C本質(zhì)上是不安全的編程語言。例如如果不謹(jǐn)慎使用的話,其大多數(shù)標(biāo)準(zhǔn)的字符串庫(kù)函數(shù)有可能被用來進(jìn)行緩沖區(qū)攻擊或者格式字符串攻擊。但是,由于其靈活性、快速和相對(duì)容易掌握,它是一個(gè)廣泛使用的編程語言。下面是針對(duì)開發(fā) 安全的C語言程序的一些規(guī)范。緩沖區(qū)溢出避免使用不執(zhí)行邊界檢查的字符串函數(shù),因?yàn)樗鼈兛赡鼙挥脕磉M(jìn)行緩沖區(qū)溢出攻擊。下面是應(yīng)避免使用的函數(shù)。同時(shí),也列出了每個(gè)函數(shù)相應(yīng)的比較安全的替換方 式。不使用 StrCPyO ,使用 StrnCPyO不使用StrCatO 使用StrnCato不使用SPrintfO 使用SnPrintfO不使用 gts()、使用

44、fgets()在上面的前三個(gè)中函數(shù)中,每個(gè)替代函數(shù)的“ rf表示了使用的緩沖區(qū)的大 小。最后一個(gè)函數(shù)的“ f,表示格式,它允許用戶指定期望的輸入的格式。這 些替 換方程強(qiáng)制程序員定義使用的緩沖區(qū)的尺寸以及確定輸入的類型。格式化字符串攻擊(FOrmat String AttaCk該類攻擊往往與緩沖區(qū)溢出相尖,因?yàn)樗鼈兺饕昧四承┖瘮?shù)的假設(shè),例如SPrintfO和VSPrintfo假設(shè)緩沖區(qū)的長(zhǎng)度是無限的。然而即使使用SnPrintfO 替換SPrintfO也無法完全保護(hù)程序不受格式化字符串的攻擊。這些攻擊通過直接 將格式說明符(format SPeCifierS)(%d, %s, %n等)

45、傳遞到輸出函數(shù)接收緩沖區(qū) 來進(jìn) 行。例如,以下的代碼就是不安全的:SnPrin tf(buffer, SiZeOf(buffer), Stri ng)這種情況下,可以在字符串中插入格式說明符來操縱內(nèi)存的棧,來寫入攻擊者的數(shù)據(jù) (這些數(shù)據(jù)中包含小的程序代碼,并可由處理器接著執(zhí)行)。更多尖于這些攻擊的具體內(nèi)容請(qǐng)見資源章節(jié)。對(duì)以上的例子建議使用下面的代碼。SnPrintf(buffer, SiZeOf(buffer),“ %si , String)進(jìn)行格式字符串攻擊不太容易。首先攻擊者必須能獲得內(nèi)存棧的內(nèi)容情況(從應(yīng)用導(dǎo)出或者使用調(diào)試器),然后必須知道如何精確訪問特定的內(nèi)存空間來 操縱 棧中的變量。

46、執(zhí)行外部程序推薦使用exec()函數(shù)而不是SyStem()數(shù)來執(zhí)行外部程序。這是因?yàn)镾yStemO接 收整個(gè)命令行的隨機(jī)的緩沖區(qū)來執(zhí)行程序。SnPrin tf(buffer, SiZeOf(buffer), emacs %s, file name);SyStem(buffer);在以上的例子中,可以通過使用分號(hào)利用文件名變量在SehIl中插入額外的命令 (例如文件名可以是etchosts; rm *,這將在顯示etchosts目錄文件的同時(shí),刪除目 錄中的所有文件)。而exec()函數(shù)只保證第一個(gè)參數(shù)被執(zhí)行:execl(,usrbi nemacs, ,usrbi n/emacs, file n

47、ame, NULL);上面的例子保證文件名僅僅作為一個(gè)參數(shù)輸入EmaCS工具,同樣它在EmaCS命令中使用完全的路徑而不是使用可以被攻擊者利用的PATH環(huán)境變量。 競(jìng)爭(zhēng)條件(race COnditian進(jìn)程需要訪問資源時(shí)(無論是磁盤、內(nèi)存或是文件)通常需要執(zhí)行兩個(gè)步驟:首先 測(cè)試資源是否空閑可用如果可用,就訪問該資源,否則它等到資源不再使用為止再去訪問它當(dāng)另一個(gè)進(jìn)程在步驟1和2之間想要訪問同一個(gè)資源時(shí)將出現(xiàn)問題,導(dǎo)致不可預(yù) 測(cè)的結(jié)果。進(jìn)程可能會(huì)被鎖定,或者一個(gè)進(jìn)程籍此獲得了另一個(gè)進(jìn)程的較大的權(quán)限而 導(dǎo)致安全問題。攻擊主要集中在有較大權(quán)限的程序上(稱為SetUiel程序)。競(jìng)爭(zhēng)條件攻擊通常利用程

48、序執(zhí)行時(shí)可以訪問到的資源。另外權(quán)限低的程序也存在安全風(fēng)險(xiǎn),因?yàn)楣粽呖赡軙?huì)等待有較高權(quán)限的用戶執(zhí)行那個(gè)程序(例如 root),然后進(jìn)行攻擊。下面的建議有助于緩解競(jìng)爭(zhēng)條件(race COn CIitiO n)攻擊:在進(jìn)行文件操作時(shí),利用那些使用文件描述符的函數(shù)而不使用那些使用文件路徑 的函數(shù)(例如使用fdopen()而不要使用fopen()。文件描述符使得惡意的用戶在文件打 開時(shí)或是在原始的進(jìn)程對(duì)文件進(jìn)行操作前,無法使用文件連接(符號(hào)式的或是物理的)來改變文件。在寫文件甚至在讀文件時(shí)宜使用fentl()和flock()函數(shù)來對(duì)文件加鎖,這 樣它們就 不能被其他進(jìn)程訪問。它幾乎可以建立原子級(jí)的操作

49、。應(yīng)謹(jǐn)慎操縱臨時(shí)文件,因?yàn)樗鶗?huì)導(dǎo)致競(jìng)爭(zhēng)條件攻擊。檢驗(yàn)有效的返回值檢驗(yàn)有效的返回值非常重要。一個(gè)例子是舊的binlogin的實(shí)現(xiàn)中不檢驗(yàn)錯(cuò)誤的返 回值,導(dǎo)致當(dāng)它找不到etcpasswd文件時(shí)返回root的訪問權(quán)限。如果該文件損壞了 則這種情況是合理的;但如果該文件存在只是無法訪問,那么這就是一個(gè)大問題。4.2系統(tǒng)開發(fā)安全相尖工具管理有許多方法來確保代碼符合一定的安全級(jí)別。正如前面指出的,最好的方法 之一是讓盡可能多的人來檢查代碼(而不是在QA環(huán)境中實(shí)際進(jìn)行白箱或者黑箱測(cè) 試)。然而,有時(shí)代碼在開始實(shí)際環(huán)境的應(yīng)用前往往沒有足夠的時(shí)間,并且即使檢查 代碼也會(huì)漏掉一些不易發(fā)現(xiàn)的錯(cuò)誤。這些錯(cuò)誤可能會(huì)

50、對(duì)整個(gè)系統(tǒng)導(dǎo)致重大 的安全問 題。因此(以及其他的原因),使用源碼分析工具(SoUrCe COde An alysis TOOl (SCAT來自動(dòng)進(jìn)行某些檢查過程很有幫助。本文介紹了一些這方面的工具。每個(gè)工 具都用同樣的測(cè)試工具來檢驗(yàn),這些測(cè)試工具包含C和JaVa的代碼段,而這些代碼段存在潛在的安全錯(cuò)誤。我們比較了每個(gè)工具的測(cè)試結(jié)果,并且仔細(xì)檢查 了以下的屬性:靈活性有多種選項(xiàng)并能掃描多種類型的代碼的工具得分會(huì)較高。正確性主要目標(biāo)是發(fā)現(xiàn)正確的安全問題,并且不會(huì)出現(xiàn)大量的誤報(bào)信息,或 者更糟的是沒有發(fā)現(xiàn)真正的錯(cuò)誤信息。容易使用-大多數(shù)情況下,程序員只需將工具指定到特定的代碼上然后選擇 “掃描”。

51、除非特別需要,程序員一般只做抽樣檢查,而無需開發(fā)復(fù)雜的測(cè)試機(jī)制。報(bào)表掃描結(jié)果應(yīng)以一種容易理解的格式來顯示,并且最好同時(shí)提示 修改每個(gè) 問題的方法,并附加理由。每個(gè)工具在解析代碼上的速度可以忽略不計(jì),所以沒有進(jìn)行比較(雖然這并 不包括配置掃描的時(shí)間,而MOP在這方面相對(duì)于其它工具需要更多的時(shí)間)。另 外,這些工具都可以免費(fèi)獲得,甚至可以獲得它們的源代碼,所以不需考慮它們的成 本。421 工具一 :PSCanPSCan是一個(gè)有針對(duì)性的掃描程序,主要用于發(fā)現(xiàn) C程序中的緩沖區(qū)溢出和 格式化字符串攻擊。該程序檢查所有用到標(biāo)準(zhǔn) C程序庫(kù)中的PrintfO函數(shù)。SPri ntf(bufer, Variab

52、Ie);Prin tf(buffer, VariabIe);尖于這些語句在緩沖區(qū)溢出和格式化字符串攻擊中怎樣被利用可以查閱相尖的C和C+文檔。PSCan的一個(gè)不足是不能發(fā)現(xiàn)由于越界檢查不充分而引起的常規(guī) 性緩沖區(qū)溢出。但PSCan對(duì)于緩沖區(qū)溢出和格式化字符串攻擊的定位還是相當(dāng)精準(zhǔn)和 快速的。PSCarl程序相對(duì)簡(jiǎn)單,它只將結(jié)果返回標(biāo)準(zhǔn)輸出,當(dāng)然也可以將其輸出到文 件,并且除了說明程序員應(yīng)怎樣修正錯(cuò)誤以外,不給出語句為什么出錯(cuò)等類似信息。該工具一個(gè)顯著的特點(diǎn)是可以同時(shí)掃描多個(gè)文件??傮w而言PSCan程序相對(duì)簡(jiǎn)單,易于使用,同時(shí)針對(duì)性很強(qiáng),但是由于它能 夠適 用的范圍過于狹窄因此一般不推薦其在大型

53、商業(yè)應(yīng)用中使用,而只是檢查一些相對(duì)簡(jiǎn)單的程序片斷。4.2.2 工具二:FlaWfinderFIaWfinder是一個(gè)分析C程序安全隱患的靜態(tài)分析工具。和 PSCan類似,該 程序可以發(fā)現(xiàn)很多種類型的錯(cuò)誤,除了 PrintfO和標(biāo)準(zhǔn)的字符串函數(shù),它還可以 發(fā)現(xiàn)競(jìng)爭(zhēng)條件和系統(tǒng)調(diào)用。FIaWfinder相比較PSCarl,它返回的錯(cuò)誤信息要豐富 很多, 并且也更加詳細(xì)。而這對(duì)于程序員來說非常重要。FlaWfi nder甚至可以對(duì)程序中的弱點(diǎn)進(jìn)行分類,例如buffer弱點(diǎn)、格式弱點(diǎn)、SheIl弱點(diǎn)等。FlaWOfinder是一個(gè)相當(dāng)出色的C程序檢查工具,速度會(huì),界面友好,返回信息 豐富,安裝使用相對(duì)簡(jiǎn)

54、單。該工具是檢查不同規(guī)模的應(yīng)用程序的首選,唯一不足的是它只能用于C程序的檢查。4.3控制軟件代碼程序庫(kù)431管理運(yùn)作程序庫(kù)我們通常將用于系統(tǒng)開發(fā)的軟件工具和開發(fā)平臺(tái)稱之為運(yùn)作程序,因此為了降低計(jì)算機(jī)程序被破壞的可能性,應(yīng)對(duì)運(yùn)作程序庫(kù)的訪問進(jìn)行嚴(yán)格的控制:嚴(yán)格的管理在開發(fā)設(shè)備上的存放開發(fā)運(yùn)作程序的目錄。如果開發(fā)運(yùn)作程 序沒 有很好的保護(hù),則系統(tǒng)及其設(shè)置可能遭到未經(jīng)授權(quán)的訪問,并造成系統(tǒng)的安全性可靠 性大大下降。只有指定的人員如程序庫(kù)管理員經(jīng)過適當(dāng)?shù)墓芾硎跈?quán)后,才可以訪問運(yùn) 作程序庫(kù),對(duì)運(yùn)作程序庫(kù)的訪問必須結(jié)合嚴(yán)格的訪問控制技術(shù)手段和雙重訪問控 制機(jī)制。嚴(yán)格的訪問控制可以通過以下規(guī)定實(shí)現(xiàn)嚴(yán)格管理開

55、發(fā)部門所在區(qū)域的保安管理,防止未經(jīng)授權(quán)的人進(jìn)入開發(fā)區(qū)域。嚴(yán)格管理開發(fā)用途的計(jì)算機(jī)使用,只有指定的人員才可以訪問開發(fā)用的計(jì)算 機(jī)設(shè)備。嚴(yán)格管理開發(fā)運(yùn)作系統(tǒng)的認(rèn)證管理,建立嚴(yán)格的基于人員職責(zé)的授權(quán)等 級(jí)制度,用口令或其它身份識(shí)別技術(shù)確認(rèn)訪問者身份。4312建立雙重訪問控制機(jī)制雙重訪問控制機(jī)制就是對(duì)運(yùn)作程序庫(kù)的管理需經(jīng)兩個(gè)人同時(shí)進(jìn)行認(rèn)證后才可通過的方式。比如對(duì)運(yùn)作程序庫(kù)進(jìn)行更改或刪除需要兩個(gè)人進(jìn)行口令認(rèn)證, 系統(tǒng)才允許進(jìn)行以上操作。需要進(jìn)行認(rèn)證的兩個(gè)人彼此不知道對(duì)方的認(rèn)證口令或步驟。 因此該認(rèn)證過程必須兩個(gè)人同時(shí)在場(chǎng)才可進(jìn)行操作。4.3.2管理源程序庫(kù)源程序包含了系統(tǒng)及其控制如何實(shí)現(xiàn)的細(xì)節(jié),為修改系

56、統(tǒng)提供了很好的切入點(diǎn), 例如設(shè)置邏輯炸彈。且如果缺少源程序代碼會(huì)使得今后應(yīng)用系統(tǒng)的維護(hù)工作十分困難甚至無法完成。因此為了降低計(jì)算機(jī)程序被破壞的可能性,應(yīng)對(duì)源程序 庫(kù)的 訪問進(jìn)行嚴(yán)格的控制:嚴(yán)格管理在開發(fā)設(shè)備上的存放源程序的目錄。如果源程序沒有很好的保 護(hù),則系統(tǒng)及其設(shè)置可能會(huì)遭到未經(jīng)授權(quán)的訪問,并造成系統(tǒng)的安全性可靠性大大下降。只有指定的人員如程序庫(kù)管理員經(jīng)過適當(dāng)?shù)墓芾硎跈?quán)后才可以訪問源程 序庫(kù),對(duì)源程序庫(kù)的訪問必須結(jié)合進(jìn)行嚴(yán)格的訪問控制技術(shù)手段和雙重訪問控制 機(jī)制。各項(xiàng)應(yīng)用均應(yīng)指定相應(yīng)的管理員。信息技術(shù)支持人員(非開發(fā)人員)不應(yīng)自由訪問源程序庫(kù)。源程序庫(kù)和運(yùn)作程序庫(kù)宜分開存放并且分開管理。源

57、程序庫(kù)和運(yùn)行的應(yīng)用系統(tǒng)宜分開存放且分開管理。源程序庫(kù)的更新和向程序員發(fā)布的源程序應(yīng)由指定的管理員根據(jù)一定的授權(quán) 進(jìn)行,不得私自進(jìn)行更新或發(fā)放。應(yīng)保存所有對(duì)源程序庫(kù)進(jìn)行訪問讀取或修改的日志記錄,以便日后審核。4.4在軟件開發(fā)過程變更管理a)系統(tǒng)容易受到未經(jīng)授權(quán)的變更的影響,即使是完全授權(quán)的更改也可能存在破 壞性的影響,存在數(shù)據(jù)完整性的損失、應(yīng)用系統(tǒng)的不可用以及機(jī)密信息的泄漏的風(fēng)險(xiǎn)。為了使信息系統(tǒng)的損失降至最小,組織應(yīng)對(duì)更改進(jìn)行嚴(yán)格的控制,即在系統(tǒng)開發(fā) 的每一個(gè)階段(可行性研究、需求分析、設(shè)計(jì)、編碼、測(cè)試、培訓(xùn)等)的每一個(gè)更改 實(shí)施前必須經(jīng)過組織的評(píng)審與授權(quán)。b)對(duì)于敏感的應(yīng)用系統(tǒng)的更改應(yīng)由另一人

58、員進(jìn)行檢查,為了有效的進(jìn)行控 制, 組織應(yīng)建立更改控制審批程序,對(duì)更改的申請(qǐng)、評(píng)審、測(cè)試、批準(zhǔn)、更改的計(jì)劃的提 出和實(shí)施提出明確要求并嚴(yán)格的實(shí)施,確保安全性與控制程序不被損害,程序設(shè)計(jì)人員應(yīng)只能訪問他們工作所必需的部分,確保任何的改動(dòng)都應(yīng)經(jīng)過 審批的。C)更改的程序宜如下:清晰確認(rèn)所有需要更改的應(yīng)用系統(tǒng)、信息、數(shù)據(jù)庫(kù)和相尖的硬件設(shè)備。清晰確認(rèn)更改的原因(業(yè)務(wù)上的具體流程和具體的需求或開發(fā)上的需求)。 由授權(quán)的用戶提交更改申請(qǐng)。保留相尖的授權(quán)登記記錄。在正式實(shí)施之前,更改的方案必須經(jīng)過評(píng)審并通過正式的批準(zhǔn)。確保授權(quán)的 用戶在實(shí)施之前確認(rèn)并接受更改的內(nèi)容。確保在實(shí)施的過程中,盡量減少對(duì)現(xiàn)行的業(yè)務(wù)運(yùn)

59、作系統(tǒng)的影響。確保建立的文件系統(tǒng)在完成各項(xiàng)更改時(shí)得到修改,舊文件被很好的歸檔或處 置。保證所有的應(yīng)用系統(tǒng)升級(jí)的版本控制。確保對(duì)所有的更改請(qǐng)求進(jìn)行審核跟蹤。確保用戶使用手冊(cè)作相應(yīng)的必要的更改。確保更改的實(shí)施選擇了適當(dāng)?shù)臅r(shí)機(jī),以確保更改的實(shí)施不會(huì)干擾正常的業(yè)務(wù)運(yùn)作。4.5開發(fā)版本管理4.5.1控制程序清單源程序相尖信息可以幫助確認(rèn)系統(tǒng)問題的根源,并且一旦掌握了系統(tǒng)源程序 相尖 信息可以清楚地了解系統(tǒng)的運(yùn)行邏輯和可能的薄弱點(diǎn),對(duì)系統(tǒng)的安全有很大 的影響。在任何時(shí)候?qū)τ诔绦蚯鍐伪仨氝M(jìn)行嚴(yán)格的控制并且及時(shí)地進(jìn)行更新。對(duì)應(yīng)用系統(tǒng)開發(fā)源程序的打印資料、電子版本或者是相尖的報(bào)告都必須進(jìn)行 控制,紙質(zhì)的文件應(yīng)保

60、存在一個(gè)安全的環(huán)境下,如保險(xiǎn)柜等。電子文檔則應(yīng) 進(jìn)行一定 的加密。4.5.2版本升級(jí)控制應(yīng)用系統(tǒng)軟件開發(fā)版本升級(jí)申請(qǐng)。當(dāng)軟件的版本由于更新、修改等操作 需要 升級(jí)時(shí)必須先向相尖負(fù)責(zé)人員提交申請(qǐng)。應(yīng)用系統(tǒng)軟件版本升級(jí)測(cè)試。對(duì)升級(jí)的應(yīng)用系統(tǒng)進(jìn)行測(cè)試,確認(rèn)系統(tǒng)的 各種安全特性。應(yīng)用系統(tǒng)軟件版本審批。對(duì)應(yīng)用系統(tǒng)的版本的升級(jí),應(yīng)確認(rèn)當(dāng)前的版本為最 新的版本,舊的版本應(yīng)進(jìn)行歸檔,不得隨意丟棄或刪除。應(yīng)用系統(tǒng)軟件版本升級(jí)計(jì)劃。制定相尖的升級(jí)計(jì)劃,確保將系統(tǒng)升級(jí)對(duì) 業(yè)務(wù)的影響降至最低。應(yīng)用系統(tǒng)軟件版本升級(jí)實(shí)施。4.5.3版本變更控制版本變更應(yīng)提出申請(qǐng),詳見4.4 “軟件開發(fā)過程變更管理規(guī)范”。應(yīng)使用軟件加鎖技

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論