軟件安全開(kāi)發(fā)_V4_第1頁(yè)
軟件安全開(kāi)發(fā)_V4_第2頁(yè)
軟件安全開(kāi)發(fā)_V4_第3頁(yè)
軟件安全開(kāi)發(fā)_V4_第4頁(yè)
軟件安全開(kāi)發(fā)_V4_第5頁(yè)
已閱讀5頁(yè),還剩89頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、軟件安全開(kāi)發(fā)軟件安全開(kāi)發(fā)講師姓名 機(jī)構(gòu)名稱版本:4.0課程內(nèi)容課程內(nèi)容2軟件安全開(kāi)發(fā)軟件安全開(kāi)發(fā)知識(shí)域知識(shí)域知識(shí)子域知識(shí)子域軟件安全開(kāi)發(fā)生命周期軟件安全開(kāi)發(fā)生命周期軟件安全實(shí)現(xiàn)軟件安全實(shí)現(xiàn)軟件安全測(cè)試軟件安全測(cè)試軟件安全需求及設(shè)計(jì)軟件安全需求及設(shè)計(jì)軟件安全開(kāi)發(fā)重要管理過(guò)程軟件安全開(kāi)發(fā)重要管理過(guò)程知識(shí)子域知識(shí)子域:軟件安全:軟件安全開(kāi)發(fā)生命周期開(kāi)發(fā)生命周期v軟件開(kāi)發(fā)概念及特點(diǎn) 了解軟件相關(guān)的基本概念及軟件的特點(diǎn); 理解軟件開(kāi)發(fā)的特點(diǎn);v軟件危機(jī) 解三次軟件危機(jī)產(chǎn)生的原因以及每次軟件危機(jī)的特點(diǎn)和解決之道等;v軟件工程方法學(xué) 了解軟件工程方法學(xué)的概念,要素; 理解傳統(tǒng)方法學(xué)和面向?qū)ο蠓椒▽W(xué)之間的區(qū)別

2、,面向?qū)ο蠓椒▽W(xué)的特點(diǎn);3軟件的概念和特點(diǎn)軟件的概念和特點(diǎn)v軟件的基本概念 軟件是與計(jì)算機(jī)系統(tǒng)操作有關(guān)的計(jì)算機(jī)程序、規(guī)程、規(guī)則,以及可能有的文件、文檔及數(shù)據(jù)。v軟件的特點(diǎn) 軟件是一種邏輯實(shí)體,具有抽象性 軟件是開(kāi)發(fā)出來(lái)的,不是制造出來(lái)的 沒(méi)有硬件那樣的機(jī)械磨損、老化問(wèn)題 對(duì)計(jì)算機(jī)系統(tǒng)存在依賴 大部分軟件產(chǎn)品是定制的 軟件是復(fù)雜的4軟件開(kāi)發(fā)的特點(diǎn)軟件開(kāi)發(fā)的特點(diǎn)v軟件開(kāi)發(fā)具有以下幾個(gè)特點(diǎn): 腦力密集型 實(shí)現(xiàn)不具有唯一性 隱性成本高 細(xì)節(jié)很容易被放大 質(zhì)量評(píng)估很需要專業(yè)的高水平5軟件安全重要性軟件安全重要性 軟件危機(jī)軟件危機(jī)v第一次“軟件危機(jī)”- 20世紀(jì)60年代 根源:日益龐大和復(fù)雜的程序?qū)﹂_(kāi)發(fā)管

3、理的要求越來(lái)越高 解決:軟件工程v第二次“軟件危機(jī)”- 20世紀(jì)80年代 根源:軟件規(guī)模繼續(xù)擴(kuò)大,程序數(shù)百萬(wàn)行,數(shù)百人同時(shí)開(kāi)發(fā),可維護(hù)性難 解決:面向?qū)ο笳Z(yǔ)言-C+/java/c#v第三次“軟件危機(jī)”- 21世紀(jì)頭十年 根源:軟件安全 解決:軟件安全開(kāi)發(fā)生命周期管理6軟件工程方法學(xué)軟件工程方法學(xué)v什么是軟件工程方法學(xué) 軟件工程是技術(shù)和管理緊密結(jié)合所形成的工程學(xué)科,通過(guò)計(jì)劃、組織和控制等一系列的活動(dòng),合理地配置和使用各種資源,以達(dá)到既定目標(biāo)的過(guò)程v軟件工程方法學(xué)三要素v軟件工程方法學(xué)類型 傳統(tǒng)方法學(xué) 面向?qū)ο蟮姆椒▽W(xué)7方法工具過(guò)程軟件工程方法學(xué)軟件工程方法學(xué)v傳統(tǒng)方法學(xué) 傳統(tǒng)方法學(xué)也稱為生命周期

4、方法學(xué)或結(jié)構(gòu)化泛型。它采用結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化實(shí)現(xiàn))來(lái)完成軟件開(kāi)發(fā)的各項(xiàng)任務(wù),并使用適當(dāng)?shù)能浖ぞ呋蜍浖こ汰h(huán)境來(lái)支持結(jié)構(gòu)化技術(shù)的運(yùn)用。v面向?qū)ο蠓椒▽W(xué) 與傳統(tǒng)的方法相反,面向?qū)ο蠓椒ò褦?shù)據(jù)和行為看成是同等重要的,他是以數(shù)據(jù)為主線,把數(shù)據(jù)和對(duì)數(shù)據(jù)的操作緊密地結(jié)合起來(lái)的方法。8面向?qū)ο蠓椒▽W(xué)的特點(diǎn)及優(yōu)點(diǎn)面向?qū)ο蠓椒▽W(xué)的特點(diǎn)及優(yōu)點(diǎn)v特點(diǎn) 軟件構(gòu)件:把對(duì)象作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件 類:把所有對(duì)象都劃分成類 繼承:按照父類與子類的關(guān)系,組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)。下層派生類自動(dòng)擁有上層基類中定義的數(shù)據(jù)和操作 封裝性:對(duì)象彼此間僅能通過(guò)發(fā)送消息相互聯(lián)系v優(yōu)點(diǎn)

5、降低軟件產(chǎn)品的復(fù)雜、提高軟件的可理解性、簡(jiǎn)化了軟件的開(kāi)發(fā)和維護(hù)工作、促進(jìn)了軟件可重用性、為開(kāi)發(fā)高內(nèi)聚、低耦合的軟件提供了極大的便利9知識(shí)子域:軟件安全開(kāi)發(fā)生命周期知識(shí)子域:軟件安全開(kāi)發(fā)生命周期v軟件生命周期模型 了解典型的軟件開(kāi)發(fā)生命周期模型的特點(diǎn),包括瀑布模型、迭代模型、增量模型、快速原型模型、螺旋模型、凈室模型;v軟件安全保障 了解軟件安全和軟件安全保障的基本概念; 理解軟件安全開(kāi)發(fā)的必要性; 理解軟件安全問(wèn)題增加的原因; 了解軟件安全問(wèn)題相關(guān)的幾個(gè)術(shù)語(yǔ)的概念。10軟件生命周期模型軟件生命周期模型- -瀑布模型瀑布模型11軟件生命周期軟件生命周期模型模型- -迭代模型迭代模型12軟件生命周

6、期軟件生命周期模型模型- -增量模型增量模型13軟件生命周期軟件生命周期模型模型- -螺旋模型螺旋模型14其他軟件開(kāi)發(fā)方法其他軟件開(kāi)發(fā)方法v快速原型模型 快速原型模型又稱原型模型,它是增量模型的另一種形式;它是在開(kāi)發(fā)真實(shí)系統(tǒng)之前,構(gòu)造一個(gè)原型,在該原型的基礎(chǔ)上,逐漸完成整個(gè)系統(tǒng)的開(kāi)發(fā)工作。 v凈室模型 凈室是一種應(yīng)用數(shù)學(xué)與統(tǒng)計(jì)學(xué)理論以經(jīng)濟(jì)的方式生產(chǎn)高質(zhì)量軟件的工程技術(shù)。力圖通過(guò)嚴(yán)格的工程化的軟件過(guò)程達(dá)到開(kāi)發(fā)中的零缺陷或接近零缺陷。 15軟件缺陷普遍存在軟件缺陷普遍存在v千行代碼缺陷數(shù)量 普通軟件公司:440 高管理軟件公司:24 美國(guó)NASA軟件:0.1v漏洞數(shù)量 國(guó)家漏洞庫(kù)統(tǒng)計(jì)數(shù)據(jù),最近5年

7、最高一年入庫(kù)漏洞7000+國(guó)家漏洞庫(kù)漏洞數(shù)量統(tǒng)計(jì)16軟件安全問(wèn)題產(chǎn)生軟件安全問(wèn)題產(chǎn)生- -內(nèi)因內(nèi)因v內(nèi)因 軟件規(guī)模增大,功能越來(lái)越多,越來(lái)越復(fù)雜 軟件模塊復(fù)用,導(dǎo)致安全漏洞延續(xù) 軟件擴(kuò)展模塊帶來(lái)的安全問(wèn)題Windows操作系統(tǒng)不同版本源代碼數(shù)量17軟件安全問(wèn)題產(chǎn)生軟件安全問(wèn)題產(chǎn)生- -外因外因v互聯(lián)網(wǎng)發(fā)展對(duì)軟件安全的挑戰(zhàn)v開(kāi)發(fā)環(huán)境和開(kāi)發(fā)人員對(duì)軟件安全的挑戰(zhàn) 開(kāi)發(fā)者缺乏安全開(kāi)發(fā)的動(dòng)機(jī) 市場(chǎng)和業(yè)務(wù)要求將交付期和軟件功能做主要因素 用戶方?jīng)]有提供安全方面的壓力 開(kāi)發(fā)者缺乏相關(guān)知識(shí) 軟件復(fù)雜性加大,開(kāi)發(fā)者需要學(xué)習(xí)更多東西 傳統(tǒng)軟件開(kāi)發(fā)不進(jìn)行安全教育 缺乏安全開(kāi)發(fā)工具 缺乏安全開(kāi)發(fā)配套管理、測(cè)試等工具1

8、8軟件安全保障的含義及思路軟件安全保障的含義及思路v軟件安全保障的概念 確保軟件能夠按照開(kāi)發(fā)者預(yù)期、正常地執(zhí)行任務(wù),提供與威脅相適應(yīng)的安全能力,從而避免存在可以被利用的安全漏洞,并且能從被入侵和失敗的狀態(tài)中恢復(fù)。v軟件安全保障的思路 通過(guò)在軟件開(kāi)發(fā)生命周期各階段采取必要的、相適應(yīng)的安全措施來(lái)避免絕大多數(shù)的安全漏洞采取措施只能有效減少,但并不能完全杜絕所有的安全漏洞!19軟件安全保障的目標(biāo)軟件安全保障的目標(biāo)v軟件可以規(guī)避安全漏洞而按照預(yù)期的方式執(zhí)行其功能v在軟件開(kāi)發(fā)生命周期中提升軟件的安全性 可信賴性:無(wú)論是惡意而為還是無(wú)意疏忽,軟件都沒(méi)有可利用的漏洞存在 可預(yù)見(jiàn)性:對(duì)軟件執(zhí)行時(shí)其功能符合開(kāi)發(fā)者

9、的意圖的信心。 遵循性:將(軟件開(kāi)發(fā))跨學(xué)科的活動(dòng)計(jì)劃并系統(tǒng)化,以確保軟件過(guò)程和軟件產(chǎn)20軟件安全保障與風(fēng)險(xiǎn)管理軟件安全保障與風(fēng)險(xiǎn)管理v在軟件安全保障中,需要貫徹風(fēng)險(xiǎn)管理的思想 “安全就是風(fēng)險(xiǎn)管理”v軟件安全是以風(fēng)險(xiǎn)管理為基礎(chǔ) 安全不必是完美無(wú)缺的,但風(fēng)險(xiǎn)必須是能夠管理的v最適宜的軟件安全策略就是最優(yōu)的風(fēng)險(xiǎn)管理對(duì)策 這是一個(gè)在有限資源前提下的最優(yōu)選擇問(wèn)題 防范不足會(huì)造成直接的損失;防范過(guò)多又會(huì)造成間接的損失21傳統(tǒng)軟件開(kāi)發(fā)中安全局限性傳統(tǒng)軟件開(kāi)發(fā)中安全局限性v傳統(tǒng)的軟件生命周期的局限性: 軟件生命周期包括需求分析、架構(gòu)設(shè)計(jì)、代碼編寫、測(cè)試和運(yùn)行維護(hù)五個(gè)階段,缺乏安全相關(guān)階段v傳統(tǒng)的軟件開(kāi)發(fā)教育

10、局限性 軟件教育包括軟件工程、數(shù)據(jù)結(jié)構(gòu)、編譯原理、系統(tǒng)結(jié)構(gòu)、程序語(yǔ)言缺乏安全開(kāi)發(fā)教育v開(kāi)發(fā)人員局限性 對(duì)安全問(wèn)題沒(méi)有的足夠理解 不了解安全設(shè)計(jì)的基本原理 不知道安全漏洞的常見(jiàn)類型 不知道如何設(shè)計(jì)針對(duì)安全的測(cè)試數(shù)據(jù)需要安全的軟件開(kāi)發(fā)!22軟件安全開(kāi)發(fā)生命周期軟件安全開(kāi)發(fā)生命周期v軟件安全開(kāi)發(fā)覆蓋軟件整個(gè)生命周期 需求分析階段考慮軟件的安全需求 在設(shè)計(jì)階段設(shè)計(jì)符合安全準(zhǔn)則的功能 編碼階段保證開(kāi)發(fā)的代碼符合安全編碼規(guī)范 安全測(cè)試和運(yùn)行維護(hù)確保安全需求、安全設(shè)計(jì)、安全編碼各個(gè)環(huán)節(jié)得以正確有效的實(shí)施在軟件的各個(gè)階段引入安全措施!23軟件安全問(wèn)題越早解決成本越低軟件安全問(wèn)題越早解決成本越低v在軟件開(kāi)發(fā)生命

11、周期中,后面的階段改正錯(cuò)誤開(kāi)銷比前面的階段要高出數(shù)倍vNIST:在軟件發(fā)布以后進(jìn)行修復(fù)的代價(jià)是在軟件設(shè)計(jì)和編碼階段即進(jìn)行修復(fù)所花代價(jià)的30倍24知識(shí)子域:軟件安全開(kāi)發(fā)生命周期知識(shí)子域:軟件安全開(kāi)發(fā)生命周期v軟件安全開(kāi)發(fā)生命周期模型 理解典型的軟件安全開(kāi)發(fā)生命周期模型的特點(diǎn),包括SDL、CLASP、CMMI、SAMM、BSIMM; 了解這些軟件安全開(kāi)發(fā)生命周期模型的區(qū)別和聯(lián)系。25相關(guān)模型和研究相關(guān)模型和研究v安全軟件開(kāi)發(fā)生命周期 安全設(shè)計(jì)原則 安全開(kāi)發(fā)方法 最佳實(shí)踐 安全專家經(jīng)驗(yàn)v多種模型被提出和研究 可信計(jì)算安全開(kāi)發(fā)生命周期(微軟) CLASP(OWASP)綜合的輕量應(yīng)用安全過(guò)程 BSI系列

12、模型(Gary McGraw等) SAMM(OWASP)軟件保證成熟度模型26SDLSDLv什么是SDL SDL(Security Development Lifecycle,安全開(kāi)發(fā)生命周期)vSDL發(fā)展27SDLSDL的階段和安全活動(dòng)的階段和安全活動(dòng)v軟件安全開(kāi)發(fā)生命階段 5+2個(gè)階段 16項(xiàng)必需的安全活動(dòng)28v正式發(fā)布軟件后12個(gè)月內(nèi)的漏洞對(duì)比 IE :漏洞總數(shù)下降35%,高危漏洞數(shù)下降63% 操作系統(tǒng):漏洞總數(shù)降低45%SDLSDL實(shí)施效果實(shí)施效果29CLASPCLASP30v什么是 CLSAP 綜合的輕量應(yīng)用安全過(guò)程(Comprehensive, Lightweight Applic

13、ation Security Process ,CLASP) 用于構(gòu)建安全軟件的輕量級(jí)過(guò)程 包括由30個(gè)特定的活動(dòng)(activities)和和輔助資源構(gòu)成的集合 針對(duì)這些活動(dòng)給出了相應(yīng)的指南、導(dǎo)則和檢查列表v特點(diǎn) 基于角色的安排CMMICMMIv什么是CMMI 軟件能力成熟度集成模型(Capability Maturity Model Integration)v五級(jí)v過(guò)程區(qū)域31SAMMSAMMv什么是SAMM 軟件保證成熟度模型(Software Assurance Maturity Mode,SAMM) 提供了一個(gè)開(kāi)放的框架,用以幫助軟件公司制定并實(shí)施所面臨來(lái)自軟件安全的特定風(fēng)險(xiǎn)的策略,3

14、2BSIBSI系列模型系列模型vBSI(Building Security IN) 使安全成為軟件開(kāi)發(fā)必須的部分 強(qiáng)調(diào)應(yīng)該使用工程化的方法來(lái)保證軟件安全v軟件安全的三根支柱 風(fēng)險(xiǎn)管理:策略性方法 接觸點(diǎn):一套輕量級(jí)最優(yōu)工程化方法,攻擊與防御綜合考慮 安全知識(shí):強(qiáng)調(diào)對(duì)安全經(jīng)驗(yàn)和專業(yè)技術(shù)進(jìn)行收集匯總,對(duì)軟件開(kāi)發(fā)人員進(jìn)行培訓(xùn),并通過(guò)安全接觸點(diǎn)實(shí)際運(yùn)用33BSIMMBSIMMvBSI成熟度模型 對(duì)真實(shí)的軟件安全項(xiàng)目所開(kāi)展的活動(dòng)進(jìn)行量化 構(gòu)建和不斷發(fā)展軟件安全行動(dòng)的指南34各模型比較各模型比較SDL文檔豐富,維護(hù)更新及時(shí)較多工具支持適合大型企業(yè)BSI接觸點(diǎn)強(qiáng)調(diào)開(kāi)發(fā)安全重點(diǎn)注重實(shí)用方法上手容易BSIMM最

15、佳實(shí)踐參考他山之玉不強(qiáng)制實(shí)踐CLASP 輕量級(jí)過(guò)程;以角色及其職責(zé)為核心適合小型企業(yè)SAMM開(kāi)放框架安全知識(shí)要求較低和BSIMM的安全活動(dòng)能對(duì)應(yīng)CMMI自動(dòng)的、可擴(kuò)展的框架集成化框架,消除了各個(gè)模型的不一致性持續(xù)改進(jìn),就可克服軟件開(kāi)發(fā)中困難35知識(shí)子域:軟件安全需求及設(shè)計(jì)知識(shí)子域:軟件安全需求及設(shè)計(jì)v軟件安全需求分析 理解安全需求在軟件安全開(kāi)發(fā)過(guò)程中的重要性; 理解安全需求的分類及分析的方法和過(guò)程;v軟件安全設(shè)計(jì) 理解軟件安全設(shè)計(jì)的重要性; 理解軟件安全設(shè)計(jì)的內(nèi)容、主要活動(dòng); 理解安全設(shè)計(jì)的重要原則; 理解安全設(shè)計(jì)的方法-威脅建模,掌握威脅建模的方法和過(guò)程。36軟件安全需求及安全設(shè)計(jì)的重要性軟

16、件安全需求及安全設(shè)計(jì)的重要性v軟件安全需求和設(shè)計(jì)是開(kāi)發(fā)安全軟件的基礎(chǔ)v軟件安全需求分析 以風(fēng)險(xiǎn)管理為基礎(chǔ),建立“威脅”分析計(jì)劃 建立軟件安全需求定義,確保軟件安全需求定義正確 安全需求應(yīng)文檔化v軟件安全設(shè)計(jì) 軟件系統(tǒng)的每一項(xiàng)需求,都應(yīng)該在軟件安全設(shè)計(jì)階段認(rèn)真考慮37安全需求分析安全需求分析v安全需求分類 安全功能需求 安全保障需求v需求分析的要點(diǎn) 安全需求進(jìn)行有效定義 不僅考慮系統(tǒng)功能,還要考慮系統(tǒng)不應(yīng)該做什么 功能需求、安全需求、安全目標(biāo)要達(dá)到平衡38需求工程師不要僅僅從用戶的角度出發(fā)考慮系統(tǒng)的功能,還應(yīng)從攻擊者的角度出發(fā)考慮系統(tǒng)的漏洞。需求分析過(guò)程需求分析過(guò)程v系統(tǒng)調(diào)查v定性分析系統(tǒng)的脆弱

17、點(diǎn)和可能遭受的安全威脅v脆弱點(diǎn)和安全威脅的定量分析v需求的確定39建立在風(fēng)險(xiǎn)分析的基礎(chǔ)上!安全設(shè)計(jì)的重要性安全設(shè)計(jì)的重要性v安全編碼?安全測(cè)試? 傳統(tǒng)方法:軟件發(fā)布后測(cè)試、等待修復(fù)Bug Gary McGraw :50%的安全問(wèn)題由設(shè)計(jì)瑕疵引起 安全提前介入,效益高,成本低40v設(shè)計(jì)缺陷舉例 Microsoft Bob 明文存儲(chǔ)口令,甚至將口令拿到客戶端對(duì)比驗(yàn)證軟件安全設(shè)計(jì)軟件安全設(shè)計(jì)v安全概要設(shè)計(jì)階段 包括但不限于:安全體系結(jié)構(gòu)設(shè)計(jì)、各功能塊間的處理流程、與其他功能的關(guān)系、安全協(xié)議設(shè)計(jì)、安全接口設(shè)計(jì)等。v安全詳細(xì)設(shè)計(jì)階段 詳細(xì)設(shè)計(jì)階段作為安全功能的程序設(shè)計(jì)階段,應(yīng)當(dāng)直接指導(dǎo)安全功能的編碼工作

18、。包括但不限于:模塊設(shè)計(jì)、內(nèi)部處理流程、數(shù)據(jù)結(jié)構(gòu)、輸入/輸出項(xiàng)、算法、邏輯流程圖等41根據(jù)安全需求方案確定的安全目標(biāo),對(duì)初步風(fēng)險(xiǎn)評(píng)估確定的控制措施的具體技術(shù)實(shí)現(xiàn)而進(jìn)行安全設(shè)計(jì)安全設(shè)計(jì)的主要活動(dòng)安全設(shè)計(jì)的主要活動(dòng)42v詳細(xì)風(fēng)險(xiǎn)評(píng)估v控制措施選擇v安全技術(shù)實(shí)現(xiàn)v安全設(shè)計(jì)評(píng)審安全設(shè)計(jì)原則安全設(shè)計(jì)原則43v最小特權(quán)原則v權(quán)限分離原則v最少共享機(jī)制原則v完全中立原則v心理可接受度原則v默認(rèn)故障處理保護(hù)原則v經(jīng)濟(jì)機(jī)制原則v不信任原則v縱深防御原則v保護(hù)最薄弱環(huán)節(jié)原則v公開(kāi)設(shè)計(jì)原則v隱私保護(hù)原則v攻擊面最小化原則降低攻擊面降低攻擊面v作用 攻擊面越小,安全風(fēng)險(xiǎn)越小v實(shí)現(xiàn) 取消不需要的功能 增加對(duì)功能的安全防

19、護(hù)v示例 SQL Server2005默認(rèn)關(guān)閉xp_cmdshell存儲(chǔ)過(guò)程44分析軟件攻擊面分析軟件攻擊面v分析產(chǎn)品功能的重要性(是否必須)v分析從哪里訪問(wèn)這些功能(本地&遠(yuǎn)程)v分析訪問(wèn)權(quán)限(匿名&經(jīng)過(guò)認(rèn)證)受攻擊面增加遠(yuǎn)程訪問(wèn)受限訪問(wèn)本地訪問(wèn)僅管理員訪問(wèn)用戶訪問(wèn)匿名訪問(wèn)45降低攻擊面策略降低攻擊面策略v重要等級(jí)為低的功能:攻擊面大,取消該功能v重要等級(jí)為中的功能:攻擊面大,設(shè)置為非默認(rèn)開(kāi)啟,需要用戶配置后才予以開(kāi)啟v重要等級(jí)為高的功能:攻擊面大,關(guān)閉或限制一些接口方式,增加一些安全的保證措施或技術(shù)降低受攻擊面對(duì)于提高軟件源代碼安全性至關(guān)重要!46降低軟件攻擊面通常做法降低

20、軟件攻擊面通常做法較高受攻擊面較高受攻擊面較低受攻擊面較低受攻擊面默認(rèn)執(zhí)行默認(rèn)關(guān)閉打開(kāi)網(wǎng)絡(luò)連接關(guān)閉網(wǎng)絡(luò)連接同時(shí)偵聽(tīng)UDP和TCP流量?jī)H偵聽(tīng)TCP流量匿名訪問(wèn)鑒別用戶訪問(wèn)弱ACLs強(qiáng)ACLs管理員訪問(wèn)普通用戶訪問(wèn)因特網(wǎng)訪問(wèn)本地子網(wǎng)訪問(wèn)代碼以管理員或root權(quán)限運(yùn)行代碼以Network Services、Local Services或自定義的低權(quán)限賬戶運(yùn)行統(tǒng)一缺省配置用戶可選的配置ActiveX控件.NET代碼標(biāo)記有腳本安全的ActiveX控件未標(biāo)記有腳本安全的ActiveX控件非SiteLocked ActiveX控件SiteLocked ActiveX控件47威脅建模威脅建模v什么是威脅建模

21、威脅建模是了解系統(tǒng)面臨的安全威脅,確定威脅風(fēng)險(xiǎn)并通過(guò)適當(dāng)?shù)木徑獯胧┮越档惋L(fēng)險(xiǎn),提高系統(tǒng)安全性的過(guò)程。v為什么要威脅建模 幫助在設(shè)計(jì)階段充分了解各種安全威脅,并指導(dǎo)選擇適當(dāng)?shù)膽?yīng)對(duì)措施 對(duì)可能的風(fēng)險(xiǎn)進(jìn)行管理 可以重新驗(yàn)證其架構(gòu)和設(shè)計(jì) 有助于軟件的受攻擊面降低48威脅建模流程威脅建模流程v確定對(duì)象v識(shí)別威脅v評(píng)估威脅v消減威脅49威脅建模威脅建模- -確定對(duì)象確定對(duì)象v確定要保護(hù)和評(píng)估的目標(biāo)(資產(chǎn))v在使用實(shí)例和應(yīng)用場(chǎng)景中分析 明確應(yīng)用或系統(tǒng)的關(guān)鍵威脅場(chǎng)景 部署方式、配置信息、用戶使用方式等 典型場(chǎng)景 移動(dòng)或小型設(shè)備物理失竊場(chǎng)景 Web應(yīng)用匿名用戶場(chǎng)景50威脅建模威脅建模- -識(shí)別威脅識(shí)別威脅v識(shí)別

22、每一個(gè)可能面臨的威脅 理解軟件可能面臨的威脅是安全開(kāi)發(fā)的前提 威脅不等于漏洞 威脅永遠(yuǎn)存在SSpoolfing Identity假冒身份/欺騙標(biāo)識(shí)TTampering with data篡改數(shù)據(jù)RRepudiation抵賴IInformation Disclosure信息泄漏DDenial of Service拒絕服務(wù)EElevation of Privilege權(quán)限提升51理解理解STRIDE六類威脅六類威脅52威脅安全屬性定義舉例Spoofing(哄騙)可鑒別性模仿其他人或?qū)嶓w偽裝成或ntdll.dll。Tampering(篡改)完整性修改數(shù)據(jù)或代碼修改硬盤、DVD或網(wǎng)絡(luò)數(shù)據(jù)包中的DLLR

23、epudiation(抵賴) 不可抵賴性 聲稱沒(méi)有執(zhí)行某個(gè)動(dòng)作“我沒(méi)有發(fā)送過(guò)那封電子郵件”,“我沒(méi)有修改過(guò)那個(gè)文件”,“親愛(ài)的,我確實(shí)沒(méi)有訪問(wèn)過(guò)那個(gè)網(wǎng)站!”Information Disclosure(信息泄露)機(jī)密性把信息披露給那些無(wú)權(quán)知道的人允許某人閱讀Windows源代碼;公布某個(gè)Web網(wǎng)站的用戶清單。Denial of Service(拒絕服務(wù))可用性拒絕為用戶提供服務(wù)使得Windows或Web網(wǎng)站崩潰,發(fā)送數(shù)據(jù)包并耗盡CPU時(shí)間,將數(shù)據(jù)包路由到某黑洞中。Elevation of Privilege(權(quán)限提升)授權(quán)獲得非授權(quán)訪問(wèn)權(quán)允許遠(yuǎn)程因特網(wǎng)用戶執(zhí)行命令,讓受限用戶獲得管理員權(quán)限。威

24、脅建模威脅建模- -評(píng)估威脅評(píng)估威脅v評(píng)估威脅風(fēng)險(xiǎn)值v評(píng)估被利用和攻擊發(fā)生的概率v評(píng)估攻擊后資產(chǎn)的受損后果,并計(jì)算風(fēng)險(xiǎn)參考風(fēng)險(xiǎn)管理、安全工程中相關(guān)內(nèi)容!53威脅建模威脅建模- -消減威脅消減威脅v重新設(shè)計(jì)并排除這個(gè)威脅v使用標(biāo)準(zhǔn)的威脅消減技術(shù)v發(fā)明新的消減方法v根據(jù)安全Bug標(biāo)準(zhǔn)來(lái)確定是否可接受風(fēng)險(xiǎn)v把威脅作為漏洞記錄下來(lái),以后再想辦法消減要想辦法消減每要想辦法消減每個(gè)威脅!個(gè)威脅!54知識(shí)子域:軟件安全實(shí)現(xiàn)知識(shí)子域:軟件安全實(shí)現(xiàn)v安全編碼原則 了解驗(yàn)證輸入、避免緩沖區(qū)溢出、程序內(nèi)部安全、安全調(diào)用組件、禁用有風(fēng)險(xiǎn)的函數(shù)等通用安全編程準(zhǔn)則; 了解相關(guān)的安全編碼標(biāo)準(zhǔn)及建議; 理解常見(jiàn)的代碼安全問(wèn)題

25、及處置辦法;v代碼安全編譯 了解代碼編譯需要關(guān)注的安全因素;v代碼安全審核 理解代碼審查的目的; 了解常見(jiàn)源代碼靜態(tài)分析工具及方法55通用安全編碼原則通用安全編碼原則- -驗(yàn)證輸入驗(yàn)證輸入v對(duì)所有輸入數(shù)據(jù)進(jìn)行檢查、驗(yàn)證及過(guò)濾 應(yīng)用軟件的“數(shù)據(jù)防火墻”,避免惡意數(shù)據(jù)進(jìn)入v什么時(shí)候驗(yàn)證 最初接收數(shù)據(jù)時(shí) (第一次)使用數(shù)據(jù)時(shí)56驗(yàn)證驗(yàn)證輸入輸入- -常見(jiàn)常見(jiàn)輸入源輸入源v命令行 參數(shù)數(shù)量、數(shù)據(jù)格式、內(nèi)容v環(huán)境變量 環(huán)境變量可能超出期望 有的環(huán)境變量存儲(chǔ)格式存在危險(xiǎn)v文件 不信任可以被不可信用戶控制的文件內(nèi)容 不信任臨時(shí)文件v網(wǎng)絡(luò) 來(lái)自網(wǎng)絡(luò)的數(shù)據(jù)是“高度不可信的”v其他來(lái)源57通用安全編碼原則通用安全

26、編碼原則- -避免避免緩沖區(qū)溢出緩沖區(qū)溢出v緩沖區(qū)溢出 緩沖區(qū):包含相同數(shù)據(jù)類型的實(shí)例的一個(gè)連續(xù)計(jì)算機(jī)內(nèi)存塊 溢出:數(shù)據(jù)被添加到分配給該緩沖區(qū)的內(nèi)存塊之外v外部數(shù)據(jù)比目標(biāo)空間大v是一個(gè)非常普遍而且嚴(yán)重的問(wèn)題58通用編碼原則通用編碼原則- -避免避免緩沖區(qū)溢出緩沖區(qū)溢出v溢出后果 攻擊者可以使遠(yuǎn)程服務(wù)程序或者本地程序崩潰 攻擊者可以設(shè)計(jì)溢出后執(zhí)行的代碼vC/C+語(yǔ)言 語(yǔ)言特性決定 大量的庫(kù)函數(shù)存在溢出 strcpy、strcat、gets等v其他語(yǔ)言 調(diào)用C語(yǔ)言庫(kù) C#允許設(shè)置“不安全”例程59通用編碼原則通用編碼原則- -避免避免緩沖區(qū)緩沖區(qū)溢出溢出v解決辦法 填充數(shù)據(jù)時(shí)計(jì)算邊界 動(dòng)態(tài)分配內(nèi)存

27、 控制輸入 使用沒(méi)有緩沖區(qū)溢出問(wèn)題的函數(shù) strncpy、strncat、C+中std:string 使用替代庫(kù) Libmib、libsafe 基于探測(cè)方法的防御 StackGuard、ProPolice、/GS 將一個(gè)“探測(cè)”值插入到返回地址的前面 非執(zhí)行的堆棧防御 不可在堆棧上執(zhí)行代碼60通用編碼原則通用編碼原則- -程序內(nèi)部安全程序內(nèi)部安全v程序內(nèi)部接口安全 程序內(nèi)部接口數(shù)據(jù)的檢查v異常的安全處理 檢測(cè)異常,安全處理各種可能運(yùn)行路徑 檢測(cè)到某些錯(cuò)誤行為/數(shù)據(jù),必須以合適的方式處理,保證程序運(yùn)行安全 必要時(shí)立即拒絕服務(wù),甚至不回送詳細(xì)的錯(cuò)誤代碼61通用編碼原則通用編碼原則- -程序程序內(nèi)部

28、內(nèi)部安全安全v最小化反饋 避免給予不可靠用戶過(guò)多的信息 成功或失敗 作為跟蹤檢查的日志可以記錄較為詳細(xì)的信息 認(rèn)證程序在認(rèn)證前盡量少給信息 如果程序接受了密碼,不要返回它v避免競(jìng)爭(zhēng)條件 訪問(wèn)共享資源時(shí)(文件/變量)沒(méi)有被適當(dāng)?shù)乜刂?使用原子操作 使用鎖操作避免死鎖v安全使用臨時(shí)文件62通用編碼原則通用編碼原則- -安全調(diào)用組件安全調(diào)用組件v應(yīng)用程序?qū)嶋H上幾乎都不會(huì)是自包含的,它們通常都會(huì)調(diào)用其他組件 底層的操作系統(tǒng) 數(shù)據(jù)庫(kù) 可重用的庫(kù) 網(wǎng)絡(luò)服務(wù)(WEB、DNS)63通用編碼原則通用編碼原則- -安全調(diào)用組件安全調(diào)用組件v使用安全組件,并且只采用安全的方式 檢查組件文檔,搜索相關(guān)說(shuō)明 gets

29、隨機(jī)數(shù) 使用經(jīng)過(guò)認(rèn)可的組件 盡可能不調(diào)用外部命令,如果不得已要調(diào)用,必須嚴(yán)格檢查參數(shù) system、open、exec、64通用編碼原則通用編碼原則- -安全調(diào)用組件安全調(diào)用組件v正確處理返回值 一定要檢查返回值,調(diào)用是否成功 成功時(shí)檢查 返回值,是否按照期望值處理 數(shù)據(jù)中可能含有 NUL 字符、無(wú)效字符或其他可能產(chǎn)生問(wèn)題的東西 錯(cuò)誤時(shí)檢查 錯(cuò)誤碼v保護(hù)應(yīng)用程序和組件之間傳遞的數(shù)據(jù) 視安全需求和安全環(huán)境 考慮傳輸加密,包括密碼算法和安全協(xié)議65通用編碼原則通用編碼原則- -禁用不安全函數(shù)禁用不安全函數(shù)v編碼中禁止使用的危險(xiǎn)函數(shù)舉例66禁止使用禁止使用strcpy, wcscpy, trcpy,

30、 strcpy, _tcscpy, _ftcscpy,_mbscpystrcat, wcscat, trcat, strcat, _tcscat, _ftcscat,_mbscatvsprintf, vswprintf, wvsprintf, wvnsprintf, _vstprintfsprintf, swprintf, wsprintf, wnsprintf, _stprintfgets, _getws, _getts軟件安全編譯軟件安全編譯v確保編譯環(huán)境的安全 使用最新版本編譯器與支持工具 可靠的編譯工具 使用編譯器內(nèi)置防御特性v確保運(yùn)行環(huán)境的安全 將軟件運(yùn)行環(huán)境基于較新版本的系統(tǒng)67源

31、代碼審核源代碼審核 統(tǒng)計(jì)證明,在整個(gè)軟件統(tǒng)計(jì)證明,在整個(gè)軟件開(kāi)發(fā)生命周期中,開(kāi)發(fā)生命周期中,30%至至70%的代碼邏輯設(shè)計(jì)和編的代碼邏輯設(shè)計(jì)和編碼缺陷是可以通過(guò)源代碼碼缺陷是可以通過(guò)源代碼審核來(lái)發(fā)現(xiàn)的。審核來(lái)發(fā)現(xiàn)的。68v什么是源代碼審核 通過(guò)分析或檢查源程序的語(yǔ)法、結(jié)構(gòu)、過(guò)程、接口等來(lái)檢查程序的正確性,報(bào)告源代碼中可能隱藏的錯(cuò)誤和缺陷v源代碼審核方式 人工審核 費(fèi)時(shí)費(fèi)力 容易遺漏 工具審核 速度快,自動(dòng) 可升級(jí)知識(shí)庫(kù)“好好”的源代碼分析工具的源代碼分析工具v安全性 安全審核,不要以功能為主v多層性 軟件的多層架構(gòu)、多層平臺(tái)、多種語(yǔ)言v可擴(kuò)展性 擴(kuò)展規(guī)則、擴(kuò)展技術(shù)v知識(shí)性 主用于分析,開(kāi)發(fā)者也

32、能“學(xué)到” 安全編程知識(shí)v集成性 支持與IDE集成,支持make、ant等工具69知識(shí)子域:軟件安全測(cè)試知識(shí)子域:軟件安全測(cè)試v軟件測(cè)試 了解軟件測(cè)試的基本概念; 了解常見(jiàn)的軟件測(cè)試方法及不同測(cè)試方法之間的區(qū)別和優(yōu)缺點(diǎn);v軟件安全測(cè)試 了解軟件安全測(cè)試的基本概念; 理解模糊測(cè)試、滲透測(cè)試等軟件安全測(cè)試方法的的原理、相互的區(qū)別以及各自的優(yōu)勢(shì); 掌握安全測(cè)試的思路和方法。70軟件測(cè)試軟件測(cè)試v什么是軟件測(cè)試 使用人工和自動(dòng)化的手段來(lái)運(yùn)行或測(cè)試某個(gè)系統(tǒng)的過(guò)程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或是弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差異v基本概念 測(cè)試用例 測(cè)試覆蓋率度量指標(biāo)71軟件測(cè)試的基本概念軟件測(cè)試的

33、基本概念v測(cè)試的信條 預(yù)期測(cè)試的測(cè)試結(jié)果是預(yù)先確定的 好的測(cè)試用例發(fā)現(xiàn)錯(cuò)誤的概率高 成功的測(cè)試就是發(fā)現(xiàn)了錯(cuò)誤的測(cè)試 測(cè)試獨(dú)立于編碼 需要具備應(yīng)用(用戶)及軟件(編程)兩方面的專業(yè)知識(shí) 測(cè)試人員使用不同于開(kāi)發(fā)人員的工具 只檢查常見(jiàn)的測(cè)試用例是不夠的 測(cè)試文檔要能夠再利用72軟件測(cè)試方法軟件測(cè)試方法v單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試v黑盒測(cè)試、白盒測(cè)試、灰盒測(cè)試v靜態(tài)測(cè)試、動(dòng)態(tài)測(cè)試 代碼走查、代碼審查、代碼評(píng)審v回歸測(cè)試v驗(yàn)收測(cè)試73軟件安全測(cè)試軟件安全測(cè)試v什么是軟件安全測(cè)試 確定軟件的安全特性實(shí)現(xiàn)是否與預(yù)期設(shè)計(jì)一致的過(guò)程 有關(guān)驗(yàn)證軟件安全等級(jí)和識(shí)別潛在安全缺陷的過(guò)程 查找軟件自身程序設(shè)計(jì)中存在的安

34、全隱患,并檢查應(yīng)用程序?qū)Ψ欠ㄇ秩氲姆婪赌芰為什么需要軟件安全測(cè)試 傳統(tǒng)測(cè)試僅考慮軟件出錯(cuò)時(shí)的處理,沒(méi)有考慮對(duì)軟件的故意攻擊74軟件安全測(cè)試方法軟件安全測(cè)試方法v在應(yīng)用投產(chǎn)前,應(yīng)由獨(dú)立的安全團(tuán)隊(duì)對(duì)應(yīng)用的安全性進(jìn)行綜合評(píng)估 功能性安全測(cè)試 對(duì)抗性安全測(cè)試v安全測(cè)試方法 模糊測(cè)試 滲透測(cè)試 靜態(tài)源代碼審核75模糊測(cè)試(模糊測(cè)試(FuzzFuzz)v什么是模糊測(cè)試 也稱Fuzz測(cè)試,一種通過(guò)提供非預(yù)期的輸入并監(jiān)視異常結(jié)果來(lái)發(fā)現(xiàn)軟件故障的方法 黑盒測(cè)試,不關(guān)心被測(cè)試目標(biāo)的內(nèi)部實(shí)現(xiàn),而是利用構(gòu)造畸形的輸入數(shù)據(jù)引發(fā)被測(cè)試目標(biāo)產(chǎn)生異常,從而發(fā)現(xiàn)相應(yīng)的安全漏洞 非常有效的漏洞挖掘技術(shù),已知漏洞大部分都是通過(guò)這

35、種技術(shù)發(fā)現(xiàn)的。 76模糊測(cè)試模糊測(cè)試v強(qiáng)制軟件程序使用惡意/破壞性的數(shù)據(jù)并進(jìn)行觀察結(jié)果的一種測(cè)試方法 不夠強(qiáng)壯的程序會(huì)崩潰 編碼良好的程序正常運(yùn)行v特性 方法學(xué) 隨機(jī)值 大量測(cè)試用例 查找漏洞或可靠性錯(cuò)誤77模糊測(cè)試模糊測(cè)試v模糊測(cè)試過(guò)程 生成大量的畸形數(shù)據(jù)作為測(cè)試用例; 將這些測(cè)試用例作為輸入應(yīng)用于被測(cè)對(duì)象; 監(jiān)測(cè)和記錄由輸入導(dǎo)致的任何崩潰或異?,F(xiàn)象; 查看測(cè)試日志,深入分析產(chǎn)生崩潰或異常的原因78影響模糊測(cè)試效果的關(guān)鍵因素影響模糊測(cè)試效果的關(guān)鍵因素v測(cè)試點(diǎn) 數(shù)據(jù)通道入口、可信邊界點(diǎn)v樣本選擇 選擇覆蓋面廣、便于測(cè)試的多個(gè)樣本v數(shù)據(jù)關(guān)聯(lián)性 智能模糊測(cè)試v自動(dòng)化框架v異常監(jiān)控與異?;謴?fù)v分析評(píng)

36、估79滲透測(cè)試滲透測(cè)試v滲透測(cè)試 通過(guò)模擬惡意攻擊者進(jìn)行攻擊,來(lái)評(píng)估系統(tǒng)安全的一種評(píng)估方法 從攻擊的角度測(cè)試軟件系統(tǒng)是否安全 使用自動(dòng)化工具或者人工的方法模擬攻擊者的輸入,找出運(yùn)行時(shí)刻目標(biāo)系統(tǒng)所存在的安全漏洞v優(yōu)點(diǎn) 找出來(lái)的問(wèn)題都是真實(shí)的,也是較為嚴(yán)重的v缺點(diǎn) 只能到達(dá)有限的測(cè)試點(diǎn),覆蓋率較低80滲透測(cè)試流程滲透測(cè)試流程81滲透滲透測(cè)試要點(diǎn)測(cè)試要點(diǎn)v測(cè)試目的 是進(jìn)行安全性的評(píng)估,不是摧毀或破壞v測(cè)試人員 技術(shù)、知識(shí)和經(jīng)驗(yàn)很重要 像“壞人”一樣思考問(wèn)題v安全問(wèn)題 系統(tǒng)備份和恢復(fù)措施 風(fēng)險(xiǎn)規(guī)避82* * 如果如果測(cè)試測(cè)試參數(shù)由哪些參數(shù)由哪些不想發(fā)現(xiàn)安全問(wèn)題的人所確定,不想發(fā)現(xiàn)安全問(wèn)題的人所確定,那么,滲透測(cè)試就很可能變成一種毫無(wú)用處的自我那么,滲透測(cè)試就很可能變成一種毫無(wú)用處的自我滿滿足練習(xí)足練習(xí)!靈活安排自己的靈活安排自己的“組合組合”v代碼審核 + 體系結(jié)構(gòu)風(fēng)險(xiǎn)評(píng)估v基于風(fēng)險(xiǎn)的安全測(cè)試 + 滲透測(cè)試v安全需求分析 + 濫用案例開(kāi)發(fā)v代碼審核 + 滲透測(cè)試v體系結(jié)構(gòu)風(fēng)險(xiǎn)分析 + 基于風(fēng)險(xiǎn)的測(cè)試v83軟件安全測(cè)試思路軟件安全測(cè)試思路

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論