




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、中國石油信息安全標(biāo)準(zhǔn)1編號(hào):中國石油天然氣股份有限公司應(yīng)用系統(tǒng)開發(fā)安全管理通則中國石油天然股份有限公司隨著中國石油天然氣股份有限公司(以下簡(jiǎn)稱“中國石油”)信息化建設(shè)的穩(wěn)步 推進(jìn),信息安全日益受到中國石油的廣泛關(guān)注,本規(guī)范是依據(jù)中國石油信息安全的現(xiàn)狀,參照國際、國內(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ù)安全總體框架如下:通用安全管 理標(biāo)準(zhǔn)信息安全技術(shù)標(biāo)準(zhǔn)*授權(quán)管理通用標(biāo)準(zhǔn)認(rèn)證管理通用標(biāo)準(zhǔn)網(wǎng)絡(luò)安全管理概述y數(shù)據(jù)和文檔安全 管理規(guī)范少
2、操作系統(tǒng)安全管1 nt壬J書i硬件設(shè)備管理規(guī) 范.纟機(jī)房安全管理規(guī)通用網(wǎng)絡(luò)安全管理規(guī)范y商業(yè)軟件購買管 理標(biāo)準(zhǔn)y電子商務(wù)安全規(guī) 范歡咱系統(tǒng)安全管 理規(guī)范電子郵件安全管理規(guī)范少型理y管-內(nèi)S網(wǎng)絡(luò)安全管理規(guī)范y應(yīng)用系統(tǒng)使用安 全管理標(biāo)準(zhǔn)通則y應(yīng)用系統(tǒng)開發(fā)安 全管理標(biāo)準(zhǔn)通則y防御惡意代碼和計(jì)算機(jī)犯罪管理規(guī)通用安全管理標(biāo)準(zhǔn)概述加固管理通用標(biāo)準(zhǔn)T加密管理通用標(biāo)準(zhǔn)伸日志管理通用標(biāo)準(zhǔn)陸管塢- 標(biāo)準(zhǔn) -2)1)整體信息技術(shù)安全架構(gòu)從邏輯上共分為 7個(gè)部分,分別為:物理環(huán)境、硬件設(shè)備、網(wǎng)絡(luò)、操作系統(tǒng)、數(shù)據(jù)和文檔、應(yīng)用系統(tǒng)和通用安全管理標(biāo)準(zhǔn)。圖中帶陰影的方框中帶書名號(hào)的為單獨(dú)成冊(cè)的部分,共有13本規(guī)范和1本通用標(biāo)
3、準(zhǔn)。對(duì)于13個(gè)規(guī)范中具有一定共性的內(nèi)容我們整理出了7個(gè)標(biāo)準(zhǔn)橫向貫穿整個(gè)架構(gòu),這7個(gè)標(biāo)準(zhǔn)的組合也依據(jù)了信息安全生命周期的理論模型。每個(gè)標(biāo)準(zhǔn)都會(huì)對(duì)所有的規(guī)范中相關(guān)涉及到的內(nèi)容產(chǎn)生指導(dǎo)作用,但每個(gè)標(biāo)準(zhǔn)應(yīng)用在不同的規(guī)范中又會(huì)有相應(yīng)不同的具體的內(nèi)容。我們?cè)谛形纳蠈⑦@7個(gè)標(biāo)準(zhǔn)組合成一本通用安全管理標(biāo)準(zhǔn)單獨(dú)成冊(cè)。3) 全文以信息安全生命周期的方法論作為基本指導(dǎo),規(guī)范和標(biāo)準(zhǔn)的內(nèi)容基本都根據(jù)預(yù)防保護(hù)檢測(cè)跟蹤響應(yīng)恢復(fù)的理論基礎(chǔ)行文。本通則討論了在企業(yè)內(nèi)部自行開發(fā)一套應(yīng)用系統(tǒng)或外包開發(fā)所必須考慮到的幾個(gè)步驟,開發(fā)應(yīng)用系統(tǒng)的安全性考慮就好像建設(shè)樓房一樣,擁有越堅(jiān)固的地基樓房越是穩(wěn)定,因此應(yīng)用系統(tǒng)在開發(fā)階段打好堅(jiān)實(shí)的安
4、全基礎(chǔ),那么以后的日常維護(hù)工作就會(huì)很輕松。以下我們主要從系統(tǒng)開發(fā)的各個(gè)階段入手,考慮在標(biāo)準(zhǔn)的開發(fā)流程的各個(gè)階段中要注意的安全方面的考慮。本規(guī)范由中國石油天然氣股份有限公司發(fā)布。本規(guī)范由中國石油天然氣股份有限公司科技與信息管理部歸口管理解釋。起草部門:中國石油制定信息安全政策與標(biāo)準(zhǔn)項(xiàng)目組。說明在中國石油信息安全標(biāo)準(zhǔn)中涉及以下概念:組織機(jī)構(gòu)中國石油( PetroChina ) 指中國石油天然氣股份有限公司有時(shí)也稱“股份公 司”。集團(tuán)公司( CNPC) 指中國石油天然氣集團(tuán)公司有時(shí)也稱“存續(xù)公司” 。為區(qū)分 中國石油的地區(qū)公司和集團(tuán)公司下屬單位,擔(dān)提及“存續(xù)部分”時(shí)指集團(tuán)公司下屬 的單位。如:遼河油
5、田分公司存續(xù)部分指集團(tuán)公司下屬的遼河石油管理局。計(jì)算機(jī)網(wǎng)絡(luò)中國石油信息網(wǎng)( PetroChinaNet ) 指中國石油范圍內(nèi)的計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)。中 國石油信息網(wǎng)是在中國石油天然氣集團(tuán)公司網(wǎng)絡(luò)的基礎(chǔ)上,進(jìn)行擴(kuò)充與提高所形成 的連接中國石油所屬各個(gè)單位計(jì)算機(jī)局域網(wǎng)和園區(qū)網(wǎng)。集團(tuán)公司網(wǎng)絡(luò)( CNPCNe)t 指集團(tuán)公司所屬范圍內(nèi)的網(wǎng)絡(luò)。中國石油的一些地區(qū)公司是和集團(tuán)公司下屬的單位共用一個(gè)計(jì)算機(jī)網(wǎng)絡(luò),當(dāng)提及 “存續(xù)公司網(wǎng)絡(luò)” 時(shí),指存續(xù)公司使用的網(wǎng)絡(luò)部分。主干網(wǎng) 是從中國石油總部連接到各個(gè)下屬各地區(qū)公司的網(wǎng)絡(luò)部分,包括中國 石油總部局域網(wǎng)、各個(gè)二級(jí)局域網(wǎng)(或園區(qū)網(wǎng))和連接這些網(wǎng)絡(luò)的專線遠(yuǎn)程信道。有些單位
6、通過撥號(hào)線路連接到中國石油總部,不是利用專線,這樣的單位和所使用 的遠(yuǎn)程信道不屬于中國石油專用網(wǎng)主干網(wǎng)組成部分。地區(qū)網(wǎng) 地區(qū)公司網(wǎng)絡(luò)和所屬單位網(wǎng)絡(luò)的總和。這些局域網(wǎng)或園區(qū)網(wǎng)互相連接 所使用的遠(yuǎn)程信道可以是專線,也可以是撥號(hào)線路。局域網(wǎng)與園區(qū)網(wǎng) 局域網(wǎng)通常指,在一座建筑中利用局域網(wǎng)技術(shù)和設(shè)備建設(shè)的 高速網(wǎng)絡(luò)。園區(qū)網(wǎng)是在一個(gè)園區(qū)(例如大學(xué)校園、管理局基地等)內(nèi)多座建筑內(nèi)的 多個(gè)局域網(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è)備、
7、 運(yùn)行的協(xié)議、傳送速率都與局域網(wǎng)和園區(qū)網(wǎng)不同。傳輸信息的信道通常都是電信部 門建設(shè)的。二級(jí)單位網(wǎng)絡(luò) 指地區(qū)公司下屬單位的網(wǎng)絡(luò)的總和,可能是局域網(wǎng),也可能是 園區(qū)網(wǎng)。專線與撥號(hào)線路 從連通性劃分的兩大類網(wǎng)絡(luò)遠(yuǎn)程信道。專線,指數(shù)字電路、 幀中繼、DDN和ATM等經(jīng)常保持連通狀態(tài)的信道;撥號(hào)線路,指只在傳送信息時(shí)才 建立連接的信道,如電話撥號(hào)線路或 ISDN 撥號(hào)線路。這些遠(yuǎn)程信道可能用來連接 不同地區(qū)的局域網(wǎng)或園區(qū)網(wǎng),也可能用于連接單臺(tái)計(jì)算機(jī)。石油專網(wǎng)與公網(wǎng) 石油專業(yè)電信網(wǎng)和公共電信網(wǎng)的簡(jiǎn)稱。最后一公里問題 建設(shè)廣域網(wǎng)時(shí),用戶局域網(wǎng)或園區(qū)網(wǎng)連接附近電信部門信道 的最后一段距離的連接問題。 這段距離
8、通常小于一公里, 但也有大于一公里的情況。為簡(jiǎn)便,同稱為最后一公里問題。涉及計(jì)算機(jī)網(wǎng)絡(luò)的術(shù)語和定義請(qǐng)參見中國石油局域網(wǎng)標(biāo)準(zhǔn)目標(biāo).規(guī)范的使用范圍.規(guī)范引用的文件或標(biāo)準(zhǔn).術(shù)語和定義.應(yīng)用系統(tǒng)幵發(fā)總體原則.系統(tǒng)需求收集和分析階段安全規(guī)范可行性研究分析幵發(fā)人員安全管理機(jī)制10建立系統(tǒng)幵發(fā)安全需求分析報(bào)告11系統(tǒng)設(shè)計(jì)階段的安全規(guī)范.12單點(diǎn)訪問控制,無后門。12人員職責(zé)和權(quán)限的定義12確保敏感系統(tǒng)的安全性12確保訪問層的安全性12確保日志管理機(jī)制健全12新系統(tǒng)的容量規(guī)劃13系統(tǒng)幵發(fā)階段安全規(guī)范.14系統(tǒng)幵發(fā)語言安全規(guī)范14系統(tǒng)開發(fā)安全相關(guān)工具管理規(guī)范19控制軟件代碼程序庫21在軟件幵發(fā)過程變更管理規(guī)范2
9、32425防御后門代碼或隱藏通道相關(guān)規(guī)范 ?25系統(tǒng)測(cè)試階段安全規(guī)范.27應(yīng)用系統(tǒng)的安全性檢測(cè)規(guī)范27控制測(cè)試環(huán)境29為測(cè)試使用真實(shí)的數(shù)據(jù)29在軟件轉(zhuǎn)移至生產(chǎn)環(huán)境前進(jìn)行測(cè)試29應(yīng)用系統(tǒng)安全質(zhì)量鑒定30系統(tǒng)培訓(xùn)及文檔階段安全規(guī)范31新系統(tǒng)的培訓(xùn)31撰寫新系統(tǒng)和系統(tǒng)改進(jìn)的文檔31應(yīng)用系統(tǒng)幵發(fā)外包安全控制32附錄1 參考文獻(xiàn)33幵發(fā)版本管理規(guī)范 幵發(fā)日志審核管理規(guī)范應(yīng)用系統(tǒng)開發(fā)安全管理通則1.1概述信息系統(tǒng)的許多的安全控制或者是安全性是通過系統(tǒng)的開發(fā)設(shè)計(jì)予以實(shí) 現(xiàn)的。因此如果在系統(tǒng)的開發(fā)設(shè)計(jì)階段沒有對(duì)系統(tǒng)的安全性給予充分的考 慮,那么系統(tǒng)本身一定會(huì)存在許多先天不足,系統(tǒng)就會(huì)漏洞百出。為了確 保應(yīng)用系
10、統(tǒng)的安全, 在應(yīng)用系統(tǒng)開發(fā)之前就應(yīng)當(dāng)對(duì)系統(tǒng)的安全要求有所確 認(rèn),并作為開發(fā)設(shè)計(jì)的階段的基礎(chǔ)予以落實(shí)。本規(guī)范主要規(guī)定了在系統(tǒng)開發(fā)的各個(gè)階段需要的各種安全規(guī)范, 從可行性 分析需求分析階段開始, 到設(shè)計(jì)階段, 再到開發(fā)階段和維護(hù)階段以及最后 的文檔階段的系統(tǒng)開發(fā)的各個(gè)階段進(jìn)行闡述。 將不同階段下需要注意的安 全問題和相關(guān)的安全規(guī)范進(jìn)一步進(jìn)行描述和規(guī)定1.2目標(biāo)本規(guī)范的目標(biāo)為:同時(shí)確保應(yīng)保護(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í)施并對(duì)開發(fā)環(huán)境進(jìn)行嚴(yán)格的控制。 用系統(tǒng)開發(fā)外包中的各項(xiàng)
11、安全。從而進(jìn)一步保障中國石油業(yè)務(wù)的持續(xù)運(yùn)營,保護(hù)中國石油信息資產(chǎn)安全, 即保護(hù)軟件及信息的完整性, 維護(hù)信息處理設(shè)備及通訊服務(wù)的完整性及可 用性,確保設(shè)備中的信息及相關(guān)基礎(chǔ)建設(shè)的安全, 確保正確、安全操作信 息處理設(shè)備,降低系統(tǒng)故障風(fēng)險(xiǎn)。總而言之, 要防止對(duì)中國石油經(jīng)營環(huán)境及信息的未經(jīng)授權(quán)存取、 破壞或干 擾;防止中國信息資產(chǎn)受損及企業(yè)運(yùn)營受影響; 防止信息及信息處理設(shè)備 泄露及被偷竊1.3規(guī)范的使用范圍該套規(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ā)
12、 外包的安全規(guī)范。主要規(guī)定了應(yīng)用系統(tǒng)幵發(fā)過程的安全保密,軟件的質(zhì)量的要求,系統(tǒng)和業(yè)務(wù)需求的符合性,保證敏感信息的安全,系統(tǒng)本身的穩(wěn)定性和兼容性問題。1.4 規(guī)范引用的文件或標(biāo)準(zhǔn)列文件中的條款通過本標(biāo)準(zhǔn)的引用而成為本標(biāo)準(zhǔn)的條款。凡是不注日期的引用文件,其最新版本適用于本標(biāo)準(zhǔn)。1.建筑設(shè)計(jì)防火規(guī)范 (GBJ16-87)2.高層民用建筑設(shè)計(jì)防火規(guī)范 ( GB50045-97)3.建筑內(nèi)部裝修設(shè)計(jì)防火規(guī)范 ( GB50222_95)1.5 術(shù)語和定義1.6 應(yīng)用系統(tǒng)開發(fā)總體原則應(yīng)用系統(tǒng)的開發(fā)應(yīng)當(dāng)遵循一系列的總體原則,以確保開發(fā)過程中的安全。 其中包括:a) 系統(tǒng)開發(fā)需得到公司領(lǐng)導(dǎo)層的重視和參與。需要領(lǐng)
13、導(dǎo)層組織開發(fā)力 量,協(xié)調(diào)各方關(guān)系并在開發(fā)的過程中提供決策性的意見和建議。b) 系統(tǒng)開發(fā)應(yīng)當(dāng)從業(yè)務(wù)需求得角度出發(fā),不得盲目追求系統(tǒng)先進(jìn)性而忽 略了系統(tǒng)的實(shí)用性。系統(tǒng)的開發(fā)是為了更高的滿足業(yè)務(wù)上的需要,而 不是技術(shù)上的需要。c) 開發(fā)的方法和管理必須規(guī)范化、合理化、制度化。只有采用了規(guī)范化 合理化制度化的開發(fā)管理方法,才能確保開發(fā)的質(zhì)量和進(jìn)度。d) 保證開發(fā)的進(jìn)度和按時(shí)完成。確保開發(fā)工作及時(shí)、有效且高質(zhì)量的完 成。e) 系統(tǒng)開發(fā)必須具有一定的前瞻性,符合主流系統(tǒng)的發(fā)展方向。f) 開發(fā)人員安全意識(shí)的提高和加強(qiáng)。確保機(jī)密信息和關(guān)鍵技術(shù)不會(huì)泄 漏,特別是泄漏到競(jìng)爭(zhēng)對(duì)手的手中,將會(huì)對(duì)公司的競(jìng)爭(zhēng)力產(chǎn)生極大的
14、 影響。g) 充分利用現(xiàn)有的資源。1.7 系統(tǒng)需求收集和分析階段安全規(guī)范1.7.1可行性研究分析對(duì)于應(yīng)用系統(tǒng)開發(fā)項(xiàng)目需要進(jìn)行一定的可行性分析, 確認(rèn)在開發(fā)工作 具備了的相當(dāng)資源和條件, 并且有能力滿足業(yè)務(wù)上的需求的情況下才 能開展,切忌盲目開發(fā)。既浪費(fèi)了資源,又浪費(fèi)了時(shí)間??尚行匝芯靠梢詮募夹g(shù)方面, 需求方面, 投入方面和影響方面進(jìn)行考 慮:1.7.1.1技術(shù)可行性分析根據(jù)業(yè)務(wù)上提出的需求, 從技術(shù)開發(fā)的角度分析是否現(xiàn)有的技術(shù)手 段和技術(shù)能力是否可以達(dá)到業(yè)務(wù)上要求的系統(tǒng)功能。 通??梢詮娜?個(gè)方面進(jìn)行分析:a) 人員技術(shù)能力分析,指公司內(nèi)的系統(tǒng)開發(fā)隊(duì)伍是否有足夠的軟 件開發(fā)的技術(shù)能力來完成系統(tǒng)
15、開發(fā)的任務(wù),或第三方外包的開 發(fā)公司是否具有開發(fā)應(yīng)用系統(tǒng)的技術(shù)能力。b) 計(jì)算機(jī)軟件和硬件分析,指公司現(xiàn)有的軟件和硬件的性能是否 足夠滿足開發(fā)相應(yīng)的系統(tǒng)的要求。c) 管理能力分析,指現(xiàn)有的技術(shù)開發(fā)管理制度和管理流程是否成 熟且標(biāo)準(zhǔn)化,是否足夠系統(tǒng)開發(fā)的要求。1.7.1.2需求可行性分析系統(tǒng)的開發(fā)來源于業(yè)務(wù)上的需求, 因此需要對(duì)該需求進(jìn)行可行性分 析,以判斷需求是否明確, 是否符合實(shí)際而不是天馬行空式的空談, 是否是在一定的時(shí)間范圍內(nèi)可實(shí)現(xiàn)的。1.7.1.3投資可行性分析根據(jù)業(yè)務(wù)需求和技術(shù)手段的分析, 確認(rèn)根據(jù)業(yè)務(wù)需求和技術(shù)手段需 要多少的投資才可以實(shí)現(xiàn), 確認(rèn)投資的數(shù)額是不是在可控制和可承 受
16、的范圍內(nèi)。1.7.1.4 影響可行性分析所謂的影響是指社會(huì)影響, 比如系統(tǒng)開發(fā)是否符合法律法規(guī)上的要 求,是否和相關(guān)的管理制度或行業(yè)標(biāo)準(zhǔn)相抵觸,是否不符合人文或 道德上的約束等等。1.7.2幵發(fā)人員安全管理機(jī)制1.7.2.1系統(tǒng)幵發(fā)人員職責(zé)分配管理規(guī)范在系統(tǒng)幵發(fā)的過程中,應(yīng)當(dāng)明確不同的人員的身份、職責(zé)。我們建 議在系統(tǒng)幵發(fā)過程中具體分以下的三種角色:項(xiàng)目負(fù)責(zé)人員:確保在整個(gè)系統(tǒng)幵發(fā)的各個(gè)階段都實(shí)施了相關(guān) 的安全措施,同時(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)
17、審核人員:對(duì)整個(gè)幵發(fā)的過程進(jìn)行審核和監(jiān)督,確保幵發(fā) 的質(zhì)量和幵發(fā)的安全。1.7.2.2幵發(fā)人員授權(quán)管理規(guī)范a)根據(jù)該員工在整個(gè)幵發(fā)項(xiàng)目中所負(fù)責(zé)的幵發(fā)內(nèi)容授予其相應(yīng)的 權(quán)限和承擔(dān)的責(zé)任。b)幵發(fā)人員必須負(fù)責(zé)其幵發(fā)內(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)根據(jù)員工權(quán)限和責(zé)任的大小確認(rèn)是否需要簽署相關(guān)的保密協(xié) 議。e)在日常工作中記
18、錄員工的幵發(fā)相關(guān)的日志信息。f)員工一旦離職或調(diào)動(dòng)崗位應(yīng)立即收回或調(diào)整其相應(yīng)的權(quán)限。1.7.2.3幵發(fā)人員必須訓(xùn)練幵發(fā)安全代碼的能力a)幵發(fā)人員應(yīng)該有能力防止幵發(fā)過程中的緩沖器溢出錯(cuò)誤“bufferover flow attacks ”。b) 在整個(gè)開發(fā)的過程中必須完整的持續(xù)的進(jìn)行代碼錯(cuò)誤處理所規(guī)定 的流程。c) 錯(cuò)誤問題報(bào)告應(yīng)該越通俗越好,不應(yīng)該在其中包含任何系統(tǒng)細(xì)節(jié) 問題。d) 應(yīng)該對(duì)重要的敏感信息進(jìn)行加密的保護(hù)。e) 應(yīng)該使用一些相對(duì)復(fù)雜的加密和密鑰生成機(jī)制。f) 應(yīng)該單獨(dú)編寫安全性設(shè)計(jì)說明概要1.7.2.4 分離系統(tǒng)開發(fā)和運(yùn)作維護(hù)管理層必須要確保應(yīng)用系統(tǒng)開發(fā)和應(yīng)用系統(tǒng)運(yùn)作管理從組織人事
19、 和權(quán)限職責(zé)上必須分開。 盡管只有大型企業(yè)才有獨(dú)立的系統(tǒng)運(yùn)行和 系統(tǒng)開發(fā)部門,但是把這些功能分開毫無疑問是非常必要的。職責(zé) 的分開對(duì)于大多數(shù)信息安全保護(hù)來說至關(guān)重要。a) IT 人員可以現(xiàn)場(chǎng)修復(fù)或者更改偶然的或者是惡意的數(shù)據(jù)和軟 件的問題。b) 測(cè)試代碼中往往包含調(diào)試或者查錯(cuò)代碼,大大加大了主機(jī)系統(tǒng) 的性能負(fù)擔(dān)。c) 開發(fā)人員常常具有很高的權(quán)限,這在運(yùn)行系統(tǒng)中會(huì)產(chǎn)生很大的 風(fēng)險(xiǎn),所以是不可接收的。1.7.3 建立系統(tǒng)開發(fā)安全需求分析報(bào)告a) 安全需求計(jì)劃應(yīng)該能夠達(dá)到期望的安全安全水平。其中包括了成 本的預(yù)估,完成各個(gè)安全相關(guān)流程所需的時(shí)間。b) 所有的有關(guān)應(yīng)用系統(tǒng)的更新或改進(jìn)都必須是基于業(yè)務(wù)需
20、求的,并 且是有業(yè)務(wù)事件支持的。這里的業(yè)務(wù)需求不僅僅包括了系統(tǒng)的功 能、性能、開發(fā)費(fèi)用、開發(fā)周期等內(nèi)容,還要明確系統(tǒng)的安全要 求。應(yīng)用系統(tǒng)的任何一次改進(jìn)或更新都和該業(yè)務(wù)系統(tǒng)的所有者密 切相關(guān)。c) 一個(gè)安全開發(fā)需求分析計(jì)劃應(yīng)該由開發(fā)項(xiàng)目經(jīng)理和公司內(nèi)部安全 小組共同商議決定。d) 確保每一個(gè)應(yīng)用系統(tǒng)的用戶都意識(shí)到系統(tǒng)的更新或改進(jìn)都和他們 本身密切相關(guān),所有的更新或改動(dòng)的建議都必須是由業(yè)務(wù)需求出 發(fā)的而不是從所謂的“信息技術(shù)的要求”。e) 系統(tǒng)的每一次更新或改進(jìn)都必須認(rèn)真的對(duì)待,必須進(jìn)行詳細(xì)的需 求定義、需求分析以及測(cè)試評(píng)估以保證不會(huì)對(duì)業(yè)務(wù)造成任何的影 響。f) 業(yè)務(wù)需求是系統(tǒng)更新和改動(dòng)的基礎(chǔ),因
21、此必須清晰明確的定義業(yè) 務(wù)的需求,絕對(duì)不允許在業(yè)務(wù)需求未經(jīng)過業(yè)務(wù)部門領(lǐng)導(dǎo)和主要負(fù) 責(zé)人員的認(rèn)可的情況下,盲目的進(jìn)行開發(fā)工作。1.8 系統(tǒng)設(shè)計(jì)階段的安全規(guī)范1.8.1單點(diǎn)訪問控制,無后門。任何用戶如果希望訪問應(yīng)用系統(tǒng)中的某一個(gè)部分, 則必須通過統(tǒng)一的 且唯一的認(rèn)證授權(quán)方式以及流程1.8.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)部分。 同樣的, 也要確保每 個(gè)用戶無法訪問其權(quán)限范圍以外的應(yīng)用系統(tǒng)部分。1.8.3確保敏感系統(tǒng)的安全性通過將應(yīng)用系統(tǒng)中敏感的信息保存
22、在服務(wù)器端以進(jìn)行集中的加密的安全管理,確??蛻舳讼到y(tǒng)本身并不能存儲(chǔ)任何信息敏感的數(shù)據(jù)。1.8.4確保訪問層的安全性應(yīng)用系統(tǒng)不僅僅要確保系統(tǒng)模塊本身的安全性, 同時(shí)也要考慮模塊與 模塊之間的通訊的安全性。 這種模塊與模塊之間的安全性不僅僅包括 了應(yīng)用系統(tǒng)內(nèi)部模塊之間的安全, 也包括了應(yīng)用系統(tǒng)內(nèi)部模塊和外部 模塊之間的安全性, 如主機(jī)和客戶端之間通訊的安全性。 服務(wù)器和服 務(wù)器間通訊的安全性,本地系統(tǒng)和異地系統(tǒng)之間通訊的安全性1.8.5確保日志管理機(jī)制健全要求建立可以根據(jù)情況自由設(shè)置的日志管理機(jī)制,也就是說日志紀(jì)錄的范圍和詳細(xì)程度可以根據(jù)需求自行定制,且可以實(shí)現(xiàn)在應(yīng)用系統(tǒng)使用過程中進(jìn)行日志的定制和
23、記錄。保留所有系統(tǒng)開發(fā)相關(guān)的程 序庫的更新審核紀(jì)錄。1.8.6 新系統(tǒng)的容量規(guī)劃容量規(guī)劃是指確定系統(tǒng)的總體規(guī)模, 性能和系統(tǒng)彈性。 容量規(guī)劃的具體內(nèi)容可能有所不同,但一般需要考慮以下方面:a) 系統(tǒng)的預(yù)期存儲(chǔ)容量和在給定的周期里面獲取生成和存儲(chǔ)的數(shù) 據(jù)量。c) d) e) f)b) 在線進(jìn)程的數(shù)量和估計(jì)可能的占用資料對(duì)于系統(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í)候關(guān)于系統(tǒng)使用的信息了解得越多越好。 近來,由于互 聯(lián)
24、網(wǎng)站得使用以指數(shù)形式增長(zhǎng), 容量規(guī)劃變動(dòng)效果不是非常顯著, 有 時(shí)甚至毫無用處。 原因在于很難估計(jì)實(shí)際的負(fù)載。 在容量估計(jì)的時(shí)候 需要盡量將情況設(shè)想得復(fù)雜一些。1.9 系統(tǒng)開發(fā)階段安全規(guī)范1.9.1 系統(tǒng)開發(fā)語言安全規(guī)范程序員可以使用很多指導(dǎo)規(guī)范來防止應(yīng)用程序中的普通的安全問題。 其中許多可以應(yīng)用于任何一個(gè)編程語言,但某些是針對(duì)特定的語言 的。特定語言的指導(dǎo)規(guī)范主要集中在Perl , Java和C/C+語言。大多數(shù)情況下, 一般的錯(cuò)誤可以通過下功夫或者對(duì)基本的問題有很好的 理解來避免。 這些本可以避免的錯(cuò)誤常常會(huì)導(dǎo)致很多安全漏洞, 從而 威脅信息的保密性、完整性和可用性。1.9.1.1 通用規(guī)
25、范1.9.1.1.1輸入驗(yàn)證在客戶機(jī) / 服務(wù)器環(huán)境下, 進(jìn)行服務(wù)端的驗(yàn)證而不是客戶端的驗(yàn) 證(例如基于 Javascript 的驗(yàn)證)。通過在客戶端和服務(wù)器之 間放置一個(gè)代理服務(wù)器,可以很容易繞過客戶端驗(yàn)證。有了代 理服務(wù)器, 攻擊者可以在數(shù)據(jù)被客戶端 “驗(yàn)證”后修改數(shù)據(jù) (與 “ man-in-the-middle ”攻擊類似)。在實(shí)際的校驗(yàn)中,輸入校驗(yàn)首先定義一個(gè)有效(可接受)的字 符集,然后檢查每個(gè)數(shù)據(jù)的字符是否在有效范圍內(nèi)。如果輸入 中包含無效的字符,應(yīng)用程序應(yīng)該返回錯(cuò)誤頁面并說明輸入中 包含無效字符。這樣進(jìn)行驗(yàn)證的原因是定義無效的字符集比較 困難,并且一些不應(yīng)該有效的字符通常不會(huì)被
26、指出另外,邊界檢查(例如字符串的最大長(zhǎng)度)應(yīng)該在字符有效性檢查以前進(jìn)行。邊界分析可以防止大多數(shù)緩沖區(qū)溢出漏洞必須提到的是從環(huán)境變量獲得的數(shù)據(jù)也需要進(jìn)行驗(yàn)證。同時(shí)避 免在環(huán)境變量中存放敏感數(shù)據(jù) (例如密碼) 。某些 Unix 系統(tǒng)(例 如FreeBSD包含ps命令,可以讓用戶看到任何當(dāng)前進(jìn)程的環(huán) 境變量,這常常會(huì)暴露保密性信息1.9.1.1.2SQL語句如果應(yīng)用程序需要連接后端數(shù)據(jù)庫,使用存儲(chǔ)過程而不要在代 碼中使用SQL語句。使用程序以外的嵌入在代碼中的SQL語句調(diào)用特別危險(xiǎn)。難以防止攻擊者使用輸入域或者配置文件(由 應(yīng)用程序載入)來執(zhí)行嵌入式的 SQL攻擊。當(dāng)然,輸入驗(yàn)證有 助于緩解這種風(fēng)險(xiǎn)
27、1.9.1.1.3注釋代碼(comme nted code)當(dāng)應(yīng)用程序在實(shí)際環(huán)境中開始應(yīng)用時(shí),應(yīng)該刪除所有的注釋代碼。注釋代碼是用來調(diào)試或者測(cè)試的,它們不是最終應(yīng)用程序1.9.1.1.4的一部分。無論如何應(yīng)該在實(shí)際的環(huán)境中刪除它們來避免意外 的執(zhí)行(一般注釋標(biāo)識(shí)被刪除后就無法激活休眠的代碼,但還 是存在可能性的,所以強(qiáng)烈建議執(zhí)行這項(xiàng)工作)。錯(cuò)誤消息所有為用戶顯示的錯(cuò)誤信息都不應(yīng)該暴露任何關(guān)于系統(tǒng)、網(wǎng)絡(luò) 或應(yīng)用程序的敏感信息。如果可能的話,最好使用包含編號(hào)的般的錯(cuò)誤信息,這種信息只有開發(fā)者和 / 或支持小組才能理解。一般的錯(cuò)誤信息的例子是“發(fā)生了錯(cuò)誤(代碼1234),請(qǐng)您與系統(tǒng)維護(hù)部門聯(lián)系。 ”
28、1.9.1.1.5URL內(nèi)容對(duì)于web應(yīng)用,不要在URL上暴露任何重要信息,例如密碼、服務(wù)器名稱、 IP 地址或者文件系統(tǒng)路徑(暴露了web服務(wù)器的目錄結(jié)構(gòu))。這些信息可以在攻擊時(shí)使用。 例如下面就是一個(gè)不安全的 URL:PASSWORD&file=/home/USER/1.9.1.1.6設(shè)置PATH變量設(shè)置PATH為一個(gè)已知的值,而不是僅僅使用啟動(dòng)時(shí)的缺省值。攻擊者可以在攻擊應(yīng)用程序時(shí)使用PATH變量,例如試圖執(zhí)行個(gè)任意的程序。這些也可以應(yīng)用于大多數(shù)其他的語言。1.9.1.2 Perl 語言安全規(guī)范多年以來, Perl 已經(jīng)成為用于系統(tǒng)管理和 WebCGI 開發(fā)的功能最強(qiáng) 的編程語言之一(幾
29、乎可以使用 Perl 做任何功能的程序)。但其 擴(kuò)展應(yīng)用,即作為In ternet上CGI的幵發(fā)工具,使得它經(jīng)常成為 web服務(wù)器上的攻擊目標(biāo)。另外,大多數(shù)CGI腳本有著比一般用戶更高的權(quán)限,導(dǎo)致它更容易受攻擊。下面列舉了一些開發(fā)者(特別 是CGI程序員)可以使用的主動(dòng)的預(yù)防性的措施來增強(qiáng)Perl代碼的整體安全性(請(qǐng)注意:這不是 web服務(wù)器CGI腳本安全性的指導(dǎo) 原則)。1.9.1.2.1Taint 驗(yàn)證Perl 版本包含一個(gè)叫做 Taint Checking 的數(shù)據(jù)驗(yàn)證措施。如 果起用該功能, 它就不允許通過用戶輸入 (任何程序外的輸入) 來操縱其他的外部程序(例如通過管道將數(shù)據(jù)導(dǎo)入另一個(gè)
30、程序 執(zhí)行)。一般而言,程序員不能信任輸入腳本和程序的數(shù)據(jù) (叫做 Tainted 數(shù)據(jù)),因?yàn)闊o法保證它不會(huì)產(chǎn)生危害(有意 或者無意的)。 Taint 驗(yàn)證可以通過在命令行參數(shù)加入“ -T ” 來開啟。例如你可以在 Perl 腳本的第一行這樣加入“ -T ”:#!usr/bin/perl5 -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) 或者其他的說法)。啟
31、用 tainted 驗(yàn)證在有些情況下會(huì)導(dǎo)致腳 本停止運(yùn)行, 常常是由于 Perl 解釋器要求所有腳本引用的外部 程序的完全路徑必須在 PATH環(huán)境變量中列出,同時(shí) PATH中包 含的每個(gè)目錄除了目錄的所有者及相應(yīng)的所有者用戶組外無法 修改。 Taint 驗(yàn)證對(duì)于環(huán)境比較敏感,這就可能會(huì)導(dǎo)致大多數(shù) 程序員不愿使用它, 但是只要可能的話, 應(yīng)該使用 taint 驗(yàn)證, 特別是代碼執(zhí)行其他程序功能時(shí)(例如在CGI腳本的情況下)。1.9.1.2.21.9.1.2.3安全模塊 如果不但輸入數(shù)據(jù)不可信而且實(shí)際的代碼也不可信會(huì)產(chǎn)生什么 情況例如用戶從網(wǎng)站上下載了一個(gè) ActiveX 控件,而它實(shí)際是 一個(gè)特
32、洛伊木馬 (Trojan 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)行類似。而 saft 對(duì)象限制 perl 代碼只能 在 perl 包結(jié)構(gòu)的某些特定包中運(yùn)行。 如何使用安全模式超出了 本文的范圍,但是程序員應(yīng)該在任何時(shí)候盡量使用這一功能。警告參數(shù) (-w)使用-w參數(shù)可以在Perl解釋腳本時(shí)顯示所有的警告信息。警 告可以對(duì)以下情況產(chǎn)生:只使用了一次的變量或者完全沒有使 用過得變量
33、,未定義的文件句柄,未關(guān)閉的文件句柄,或者將 非數(shù)值變量傳遞到數(shù)據(jù)變量。該功能不是針對(duì)安全處理的,但 是可以有助于調(diào)試直接或者間接對(duì)安全有危害的錯(cuò)誤。一般推 薦總是使用 -w 參數(shù)。可以在 taint 驗(yàn)證時(shí)在第一行這樣使用 -w 參數(shù):#!usr/bin/perl5 -Tw1.9.1.3 Java?語言安全規(guī)范自從 1995 年發(fā)布以來, Java 成為簡(jiǎn)單或者復(fù)雜網(wǎng)絡(luò)應(yīng)用的有效編 程語言。它在設(shè)計(jì)時(shí)充分考慮了安全問題,因此它具有的限制特征 有:收集不再使用的內(nèi)存碎片的垃圾收集器,嚴(yán)格的“sandbox”安全模型,以及在特定主機(jī)上限制應(yīng)用程序的活動(dòng)的安全管理器。 下面的使用中相關(guān)的規(guī)范:1.
34、9.1.3.1 不要在標(biāo)準(zhǔn)輸出上打印消息在實(shí)際的 Internet 系統(tǒng)中避免使用或者打印日志和錯(cuò)誤消息, 原因是當(dāng)消息打印到標(biāo)準(zhǔn)輸出時(shí),無法立即確定消息發(fā)生的地 點(diǎn)。而且它有可能將敏感信息透露給攻擊者。1.9.1.3.2 封裝從而對(duì)Java 中,如果沒有使用訪問標(biāo)識(shí)符 (access modifier(private protected 或者 public) 來聲明類、 方法和屬性, 那么它的默認(rèn) 訪問范圍是包, 并且同一包中的所有類都能訪問它。 必須記住雖 然包有封裝功能, 但它只有在每部分加載到包的代碼都由授權(quán)用 戶控制時(shí)才起作用。 惡意的用戶可以加入他們自己的類, 于包中的所有類、方法
35、和屬性都有完全的訪問權(quán)限。Java 的政策文件支持兩種控制包訪問權(quán)限的前綴。accessClassInPackagesun” 幵defineClassInPackage所有標(biāo)準(zhǔn)庫中的類都默認(rèn)是可以公共訪問的(除了由“ 頭的類)。為了保證一個(gè)包的安全性,必須修改 $JAVA HOME/jre/lib/security 文件夾中的文件。該文件中的重要行 是:=sun.雖然該方法有作用, 但是也有問題。 例如程序員在文件中定義包 的安全時(shí)必須十分小心。在中的值是字符型的,“sun. ”將保護(hù)“” 等包,但是不會(huì)對(duì)“ sun” 或者“ sunshine ”等包進(jìn)行保護(hù)。另一個(gè)方法是使用 JAR密封(s
36、ealing)。JARQava ARchive)文件是一些類的打包壓縮格式的文件, 與常用的 ZIP 格式類似。 如 果從一個(gè)密封(sealing)的JAR文件中加載一個(gè)類時(shí),隨后同一 個(gè)包的類只能從該JAR文件加載。為了起用密封(seali ng),必 須在建立JAR文件時(shí)這樣設(shè)置密封(seal)參數(shù):Sealed: true使用密封(sealing) 的JAR文件比權(quán)限(permission) 設(shè)置更 好,因?yàn)樗恍枰惭b安全管理器 (security manager)1.9.1.3.3 政策文件及以后的版本Java內(nèi)建的安全管理器是對(duì)應(yīng)用程序進(jìn)行限制的一個(gè)方便的工 具。很多情況下需要編制
37、一個(gè)定制的安全管理器,提供了描述設(shè)置的方法而不是 實(shí)施它們。這是通過Java政策文件實(shí)現(xiàn)的。可以用政策文件以相對(duì)模塊化的方式控制文件系統(tǒng)和 網(wǎng)絡(luò)的訪問。例如可以限制應(yīng)用程序只能修改名字是foo的文件推薦使用Java政策文件和安全管理器而不是重新創(chuàng)建一個(gè)類或 者系統(tǒng)來限制對(duì)主機(jī)和網(wǎng)絡(luò)的訪問。1.9.1.4C/C+?語言安全規(guī)范C本質(zhì)上是不安全的編程語言。例如如果不謹(jǐn)慎使用的話,其大多 數(shù)標(biāo)準(zhǔn)的字符串庫函數(shù)有可能被用來進(jìn)行緩沖區(qū)攻擊或者格式字 符串攻擊。但是,由于其靈活性、快速和相對(duì)容易掌握,它是一個(gè) 廣泛使用的編程語言。下面是針對(duì)幵發(fā)安全的 C語言程序的一些規(guī) 范1.9.141緩沖區(qū)溢出避免使用
38、不執(zhí)行邊界檢查的字符串函數(shù),因?yàn)樗鼈兛赡鼙挥脕?進(jìn)行緩沖區(qū)溢出攻擊。下面是應(yīng)該避免使用的函數(shù)。同時(shí),也 列出了每個(gè)函數(shù)相應(yīng)的比較安全的替換方式。不使用strc py(),使用 strncpy()不使用strcat(),使用 strncat()不使用sprintfO,使用 snprintf()不使用gets(),使用 fgets()在上面的前三個(gè)中函數(shù)中,每個(gè)替代函數(shù)的“n”表示了使用的緩沖區(qū)的大小。最后一個(gè)函數(shù)的“ f”,表示格式,它允許用戶 指定期望的輸入的格式。這些替換方程強(qiáng)制程序員定義使用的 緩沖區(qū)的尺寸以及確定輸入的類型。1.9.1.4.2格式化字符串攻擊(Format String
39、Attack )該類攻擊往往與緩沖區(qū)溢出相關(guān),因?yàn)樗鼈兺饕昧四?些函數(shù)的假設(shè),例如 sprintf() 和vsprintf()假設(shè)緩沖區(qū)的長(zhǎng)度是無限的。然而即使使用 snprintf() 替換sprintf()也無法完全保護(hù)程序不受格式化字符串的攻擊。這些攻擊通過直接將 格式說明符(format specifiers )(%d, %s %門等)傳遞到輸 出函數(shù)接收緩沖區(qū)來進(jìn)行。例如,以下的代碼就是不安全的:snprin tf(buffer, sizeof(buffer), stri ng)這種情況下,可以在字符串中插入格式說明符來操縱內(nèi)存的棧, 來寫入攻擊者的數(shù)據(jù)(這些數(shù)據(jù)中包含小的程
40、序代碼,并可由處理器接著執(zhí)行)。 ? 更多關(guān)于這些攻擊的具體內(nèi)容請(qǐng)見資源 章節(jié)。對(duì)以上的例子建議使用下面的代碼。%s”, string) ?snprintf(buffer, sizeof(buffer),進(jìn)行格式字符串攻擊不太容易。首先攻擊者必須能獲得內(nèi)存棧 的內(nèi)容情況(或者從應(yīng)用導(dǎo)出或者使用調(diào)試器),然好必須知 道如何精確訪問特定的內(nèi)存空間來操縱棧中的變量。1.9.1.4.3 執(zhí)行外部程序推薦使用 exec() 函數(shù)而不是 system() 函數(shù)來執(zhí)行外部程序。這 是因?yàn)?system() 接收整個(gè)命令行的隨機(jī)的緩沖區(qū)來執(zhí)行程序。snprintf(buffer, sizeof(buffer)
41、, emacs %s, filename);system(buffer);在以上的例子中,可以通過使用分號(hào)利用文件名變量在 sehll 中插入額外的命令(例如文件名可以是 /etc/hosts; rm *,這將 在顯示 /etc/hosts 目錄文件的同時(shí), 刪除目錄中的所有文件。 )。而 exec() 函數(shù)只保證第一個(gè)參數(shù)被執(zhí)行:execl(usr/bin/emacs, usr/bin/emacs, filename, NULL);上面的例子保證文件名僅僅作為一個(gè)參數(shù)輸入Emacs工具,。同樣它在Emacs命令中使用完全的路徑而不是使用可以被攻擊者 利用的PATH環(huán)境變量。1.9.1.4.4
42、 競(jìng)爭(zhēng)條件( race condition ) 進(jìn)程需要訪問資源時(shí)(無論是磁盤、內(nèi)存或是文件)通常需要 執(zhí)行兩個(gè)步驟:(1)? 首先測(cè)試資源是否空閑可用(2)? 如果可用, 就訪問該資源, 否則它等到資源不再使用為止 再去訪問它當(dāng)另一個(gè)進(jìn)程在步驟 1和 2之間想要訪問同一個(gè)資源時(shí)就出現(xiàn) 問題了。這會(huì)導(dǎo)致不可預(yù)測(cè)的結(jié)果。進(jìn)程可能會(huì)被鎖定,或者 一個(gè)進(jìn)程籍此獲得了另一個(gè)進(jìn)程的較大的權(quán)限而導(dǎo)致安全問 題。攻擊主要集中在有較大權(quán)限的程序上 (稱為 setuid 程序) 競(jìng)爭(zhēng)條件攻擊通常利用程序執(zhí)行時(shí)可以訪問到的資源。另外權(quán) 限低的程序也存在安全風(fēng)險(xiǎn),因?yàn)楣粽呖赡軙?huì)等待有較高權(quán) 限的用戶執(zhí)行那個(gè)程序
43、( 例如 root) ,然后進(jìn)行攻擊。面的建議有助于緩解競(jìng)爭(zhēng)條件 (race condition) 攻擊:在進(jìn)行文件操作時(shí),利用那些使用文件描述符的函數(shù)而不要使 用那些使用文件路徑的函數(shù)(例如使用 fdopen() 而不要使用 fopen() )。文件描述符使得惡意的用戶在文件打開時(shí)或是在原 始的進(jìn)程對(duì)文件進(jìn)行操作前,無法使用文件連接(符號(hào)式的或 是物理的)來改變文件。在寫文件甚至在讀文件時(shí)使用 fcntl() 和 flock() 函數(shù)來對(duì)文 件加鎖,這樣它們就不能被其他進(jìn)程訪問。它幾乎可以建立原 子級(jí)的操作。謹(jǐn)慎操縱零時(shí)文件,因?yàn)樗鶗?huì)導(dǎo)致競(jìng)爭(zhēng)條件。1.9.1.4.5 檢驗(yàn)有效的返回值 檢
44、驗(yàn)有效的返回值非常重要。一個(gè)例子是舊的 /bin/login 的實(shí) 現(xiàn)中不檢驗(yàn)錯(cuò)誤的返回值,導(dǎo)致當(dāng)它找不到 /etc/passwd 文件 時(shí)返回 root 的訪問權(quán)限。 如果該文件損壞了, 那么這種情況是 合理的,但如果該文件存在只是無法訪問,那么這就是一個(gè)大 問題。1.9.2 系統(tǒng)開發(fā)安全相關(guān)工具管理規(guī)范有許多方法來確保代碼符合一定的安全級(jí)別。 正如前面指出的, 最好 的方法之一是讓盡可能多的人來檢查代碼(而不是在QA環(huán)境中實(shí)際進(jìn)行白箱或者黑箱測(cè)試) 。然而,有時(shí)代碼在開始實(shí)際環(huán)境的應(yīng)用前 往往沒有足夠的時(shí)間, 并且即使檢查代碼也會(huì)漏掉一些不容易發(fā)現(xiàn)的 錯(cuò)誤。這些錯(cuò)誤可能會(huì)對(duì)整個(gè)系統(tǒng)導(dǎo)致重大
45、的安全問題。因此(以及 其他的原因) ,使用源碼分析工具 (Source Code Analysis Tool(SCAT) 來自動(dòng)進(jìn)行某些檢查過程很有幫助。本文介紹了一些這方面的工具。每個(gè)工具都用同樣的測(cè)試工具來檢驗(yàn),這些測(cè)試工具包含C和Java的代碼段, 而這些代碼段存在潛在的安全錯(cuò)誤。 我們比較了每個(gè)工具 的測(cè)試結(jié)果,并且仔細(xì)檢查了以下的屬性:a) 靈活性 有多種選項(xiàng)并能掃描多種類型的代碼的工具得分會(huì) 較高b) 正確性 主要目標(biāo)是發(fā)現(xiàn)正確的安全問題,并且不會(huì)出現(xiàn)大 量的誤報(bào)信息,或者更糟的是沒有發(fā)現(xiàn)真正的錯(cuò)誤信息。c) 容易使用 大多數(shù)情況下,程序員只需要將工具指定到特定 的代碼上然后選擇
46、“掃描”。除非特別需要,程序員一般只做 抽樣檢查,而無需開發(fā)復(fù)雜的測(cè)試機(jī)制。d) 報(bào)表 掃描結(jié)果應(yīng)該以一種容易理解的格式來顯示,并且最 好同時(shí)提示修改每個(gè)問題的方法,并附加理由。每個(gè)工具在解析代碼上的速度可以忽略不計(jì),所以沒有進(jìn)行比較 (雖然這并不包括配置掃描的時(shí)間,而MOP在這方面相對(duì)于其他工具需要更多的時(shí)間)。另外,這些工具都可以免費(fèi)獲得,甚至 可以獲得它們的源代碼,所以不需考慮它們的成本。1.9.2.1 工具一: PScanPscan是一個(gè)有針對(duì)性的掃描程序,主要用于發(fā)現(xiàn)C程序中的緩沖區(qū)溢出和格式化字符串攻擊。 該程序檢查所有用到標(biāo)準(zhǔn) C程序庫中 的 printf() 函數(shù)。sprint
47、f(buffer, variable);printf(buffer, variable);關(guān)于這些語句在緩沖區(qū)溢出和格式化字符串攻擊中怎樣被利用可 以查閱相關(guān)的C和C+文檔。Pscan的一個(gè)不足是不能發(fā)現(xiàn)由于越 界檢查不充分而引起的常規(guī)性緩沖區(qū)溢出。不過Pscan對(duì)于緩沖區(qū)溢出和格式化字符串攻擊的定位還是相當(dāng)精準(zhǔn)和快速的。P scan程序相對(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),但是 由于它
48、能夠適用的范圍過于狹窄因此一般不推薦其在大型商業(yè)應(yīng) 用中使用,而只是檢查一些相對(duì)簡(jiǎn)單的程序片斷。1.9.2.2 工具二: Flawfinder甚至可以對(duì)程序中的弱點(diǎn)進(jìn) shell 弱點(diǎn)等。Flawfinder是一個(gè)分析C程序安全隱患的靜態(tài)分析工具。和Pscan 類似,該程序可以發(fā)現(xiàn)很多種類型的錯(cuò)誤, 除了 printf() 和標(biāo)準(zhǔn)的 字符串函數(shù), 它還可以發(fā)現(xiàn)競(jìng)爭(zhēng)條件和系統(tǒng)調(diào)用。 Flawfinder 相比 較Pscan,它返回的錯(cuò)誤信息要豐富很多,并且也更加詳細(xì)。而這 對(duì)于程序員來說非常重要。 Flawfinder 行分類,例如 buffer 弱點(diǎn)、格式弱點(diǎn)、C程序檢查工具,速度會(huì),總之,
49、Flawofinder 是一個(gè)相當(dāng)出色的 界面友好,返回信息豐富,安裝使用相對(duì)簡(jiǎn)單。該工具是檢查不同 規(guī)模的應(yīng)用程序的首選,唯一不足的是它只能用于C程序的檢查。1.9.3 控制軟件代碼程序庫1.9.3.1 管理運(yùn)作程序庫我們通常將用于系統(tǒng)開發(fā)的開發(fā)軟件工具和開發(fā)平臺(tái)稱之為運(yùn)作 程序,因此為了降低計(jì)算機(jī)程序被破壞的可能性,應(yīng)對(duì)運(yùn)作程序庫 的訪問進(jìn)行嚴(yán)格的控制:a) 嚴(yán)格的管理在開發(fā)設(shè)備上的存放開發(fā)運(yùn)作程序的目錄。如果開 發(fā)運(yùn)作程序沒有很好的保護(hù),會(huì)造成系統(tǒng)及其設(shè)置會(huì)遭到未經(jīng) 授權(quán)的訪問并造成系統(tǒng)的安全性可靠性大大下降。b) 只有指定的人員如程序庫管理員經(jīng)過適當(dāng)?shù)墓芾硎跈?quán)后才可以 訪問運(yùn)作程序庫,
50、對(duì)運(yùn)作程序庫的訪問必須結(jié)合進(jìn)行嚴(yán)格的訪 問控制技術(shù)手段和雙重訪問控制機(jī)制。1.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)等級(jí)制度, 用口令或其他身份識(shí)別技術(shù)確認(rèn)訪問者身份。1.9.3.1.2 建立雙重訪問控制機(jī)制 雙重訪問控制機(jī)制就是對(duì)運(yùn)作程序庫的管理需要兩個(gè)人同時(shí)進(jìn) 行認(rèn)證才可以通過的方式。 比如對(duì)運(yùn)作程序庫進(jìn)行更改或刪除需 要兩個(gè)人進(jìn)行口令認(rèn)證系統(tǒng)才允許進(jìn)
51、行以上操作。 其總需要進(jìn)行 認(rèn)證的兩個(gè)人彼此不知道對(duì)方的認(rèn)證口令或步驟。 因此該認(rèn)證過 程必須兩個(gè)人同時(shí)在場(chǎng)進(jìn)行操作才可以。1.9.3.2 管理源程序庫我們通常將直接由程序設(shè)計(jì)語言編制而成的程序稱之為源程序。 源 程序的語言需要通過相應(yīng)的語言處理程序翻譯成機(jī)器語言程序后 才可以在計(jì)算機(jī)上運(yùn)行。 因此源程序包含了系統(tǒng)及其控制如何實(shí)現(xiàn) 的細(xì)節(jié),為未授修改系統(tǒng)提供了很好的切入點(diǎn), 例如設(shè)置邏輯炸彈。 且如果缺少源程序代碼會(huì)使得今后應(yīng)用系統(tǒng)的維護(hù)工作十分困難 甚至無法完成。因此為了降低計(jì)算機(jī)程序被破壞的可能性,應(yīng)對(duì)源 程序庫的訪問進(jìn)行嚴(yán)格的控制:a) 嚴(yán)格的管理在開發(fā)設(shè)備上的存放源程序的目錄。如果源程
52、序沒 有很好的保護(hù),會(huì)造成系統(tǒng)及其設(shè)置會(huì)遭到未經(jīng)授權(quán)的訪問并 造成系統(tǒng)的安全性可靠性大大下降。b) 只有指定的人員如程序庫管理員經(jīng)過適當(dāng)?shù)墓芾硎跈?quán)后才可以 訪問源程序庫,對(duì)源程序庫的訪問必須結(jié)合進(jìn)行嚴(yán)格的訪問控 制技術(shù)手段和雙重訪問控制機(jī)制。c) 各項(xiàng)應(yīng)用均應(yīng)當(dāng)指定相應(yīng)的管理員。d) 信息技術(shù)支持人員 ( 非開發(fā)人員 ) 不應(yīng)當(dāng)自由的訪問源程序庫。e) 源程序庫和運(yùn)作程序庫盡量分開存放并且分開管理。f) 源程序庫和運(yùn)行的應(yīng)用系統(tǒng)盡量分開存放且分開管理。g) 源程序庫的更新和向程序員發(fā)布的源程序應(yīng)當(dāng)由指定的管理員 根據(jù)一定的授權(quán)進(jìn)行,不得私自自行更新或發(fā)放。h) 應(yīng)當(dāng)保存所有對(duì)源程序庫進(jìn)行訪問讀
53、取或修改的日志紀(jì)錄,以 便于日后審核。1.9.4在軟件幵發(fā)過程變更管理規(guī)范a)系統(tǒng)容易受到更改的攻擊,即使是完全授權(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)由另一人員進(jìn)行檢查,為了有效的 進(jìn)行控制,組織應(yīng)當(dāng)建立更改控制審批程序,對(duì)更改的申請(qǐng)、評(píng) 審、測(cè)試、批準(zhǔn)、更改的計(jì)劃的提出和實(shí)施提出明確要求并嚴(yán)格 的實(shí)施,確保安全性與控制程序
54、不被損害,程序設(shè)計(jì)人員只能訪 問他們工作所必需的部分,確保任何的改動(dòng)都是經(jīng)過審批的。C)更改的程序建議如下:清晰確認(rèn)所有的需要更改的應(yīng)用系統(tǒng)、信息、數(shù)據(jù)庫和相關(guān)的硬件設(shè)備。清晰的確認(rèn)更改的原因(業(yè)務(wù)上的具體流程和具體的需求或 幵發(fā)上的需求) 由授權(quán)的用戶提交更改的申請(qǐng)。保留相關(guān)的授權(quán)登記記錄。在正式的實(shí)施之前,更改的方案必須經(jīng)過評(píng)審并通過正式的 批準(zhǔn)。評(píng)審的確保授權(quán)的用戶在實(shí)施之前確認(rèn)并接受更改的內(nèi)容。確保在實(shí)施的過程中,盡量的減少對(duì)現(xiàn)行的商務(wù)運(yùn)作系統(tǒng)的 影響。確保建立的文件系統(tǒng)在完成各項(xiàng)更改時(shí)得到修改,舊文件被很好的歸檔或處置。保證所有的應(yīng)用系統(tǒng)升級(jí)的版本的控制。確保所有的更改情求的審核跟蹤。確保用戶使用手冊(cè)作相應(yīng)的必要的更改。確保更改的實(shí)施選擇了適當(dāng)?shù)臅r(shí)機(jī)以確保更改的實(shí)施不會(huì) 干擾正常的商務(wù)運(yùn)作。1.9.5開發(fā)版本管理規(guī)范1.9.5.1控制程序清單a) 在任何時(shí)候?qū)τ诔绦蚯鍐伪仨氝M(jìn)行嚴(yán)格的控制并且及時(shí)地進(jìn)行 更新。b) 對(duì)應(yīng)用系統(tǒng)開發(fā)源程序的打印的資料、電子版本或者是相關(guān)的 報(bào)告都必須進(jìn)行控制,紙質(zhì)的文件應(yīng)當(dāng)保存在一個(gè)安全的環(huán)境 下,如保險(xiǎn)柜等。電子文檔則應(yīng)當(dāng)進(jìn)行一定的加密。c) 源程序相關(guān)信息可以幫助我們確認(rèn)系統(tǒng)問題的根源,并且一旦 掌握了系統(tǒng)源程序相關(guān)信息可以清楚地了解系
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年河南省招聘教師考試筆試試題【答案】
- 2025年常州市金壇區(qū)衛(wèi)生健康系統(tǒng)招聘農(nóng)村定向醫(yī)學(xué)畢業(yè)生考試試題【答案】
- 廣告宣傳推廣服務(wù)合同書
- 網(wǎng)絡(luò)廣告投放投放合同
- 人工造林項(xiàng)目實(shí)施方案(參考范文)
- 湖南邵陽市小考數(shù)學(xué)試卷
- 廣西初中生中考數(shù)學(xué)試卷
- 貴陽市高中一模數(shù)學(xué)試卷
- 精神病人福利院建設(shè)項(xiàng)目投標(biāo)書
- 光伏項(xiàng)目實(shí)施方案(范文參考)
- 譯林版一年級(jí)下冊(cè)全冊(cè)英語知識(shí)點(diǎn)梳理
- 案場(chǎng)物業(yè)制度管理制度
- CJ/T 316-2009城鎮(zhèn)供水服務(wù)
- 2025年無人機(jī)駕駛員職業(yè)技能考核試卷:無人機(jī)飛行操作與維護(hù)培訓(xùn)試題
- 泵車股權(quán)協(xié)議書
- 媒體轉(zhuǎn)型新篇章
- 鄰里建房糾紛協(xié)議書模板
- 中國獸藥典三部 2020年版
- 《思想道德與法治》課件-第三章 繼承優(yōu)良傳統(tǒng) 弘揚(yáng)中國精神
- 2024年河北省香河縣事業(yè)單位公開招聘教師崗筆試題帶答案
- 人教版(2024)七年級(jí)下冊(cè)英語全冊(cè)教案(8個(gè)單元整體教學(xué)設(shè)計(jì))
評(píng)論
0/150
提交評(píng)論