透視微軟的產(chǎn)品開發(fā)最終安全性檢查
微軟安全開發(fā)生命周期有兩個(gè)目標(biāo):一是縮減與安全性有關(guān)的設(shè)計(jì)缺失與程序碼缺陷錯(cuò)誤,二是降低未完全解決的缺陷錯(cuò)誤的嚴(yán)重程度。在這個(gè)過程中安全檢查員根據(jù)所發(fā)現(xiàn)的結(jié)果來決定軟件是否能發(fā)行上市。
從去年開始,ACE組對(duì)GFS(Global Foundation Services)的MSN產(chǎn)品作最終安全檢查(Final Security Review,簡(jiǎn)稱FSR)。最終安全檢查是以安全開發(fā)生命周期(Security Development Lifecycle,簡(jiǎn)稱 SDL)為基礎(chǔ),對(duì)軟件在出廠前作最終的安全檢查。
安全開發(fā)生命周期有兩個(gè)目標(biāo):一是縮減與安全性有關(guān)的設(shè)計(jì)缺失與程序碼缺陷錯(cuò)誤,二是降低未完全解決的缺陷錯(cuò)誤的嚴(yán)重程度。
最終安全性檢查要求每個(gè)產(chǎn)品開發(fā)組有一位或多位人選負(fù)責(zé)安全和隱私方面的工作。他們的工作包括管理一切安全和隱私的問題,督促開發(fā)組執(zhí)行并滿足公司對(duì)安全和隱私方面的要求,在面臨棘手的安全和隱私?jīng)Q策時(shí)做出理性的決定。
通常產(chǎn)品開發(fā)組在設(shè)計(jì)或 軟件完工前的幾個(gè)月,在內(nèi)部網(wǎng)上登記他們的產(chǎn)品,并完成一份問卷清單,以幫助安全檢測(cè)員了解產(chǎn)品。同時(shí)根據(jù)問卷答案, 決定這軟件需要進(jìn)行哪些安全測(cè)試。
最終安全性檢查要求至少80%的員工一年有一次學(xué)習(xí)安全知識(shí)的機(jī)會(huì), 并予以記錄。Microsoft提供很多線上資源或是由講師指導(dǎo)的課程。
最終安全性檢查期間,安全檢查員和開發(fā)組一起分析產(chǎn)品的威脅分析模型.了解產(chǎn)品究竟要保護(hù)哪些資產(chǎn),認(rèn)識(shí)到產(chǎn)品會(huì)引進(jìn)哪些威脅及漏洞,并知道產(chǎn)品將如何緩和這些威脅。此外,還要考慮到威脅和弱點(diǎn)是來自產(chǎn)品部署的環(huán)境內(nèi),還是源自于與其他產(chǎn)品或端對(duì)端解決方案系統(tǒng)的互動(dòng)。
常用的威脅分析模型有Threat Modeling Tool v3和TAM(http://www.microsoft.com/downloads/details.aspx?familyid=59888078-9DAF-4E96-B7D1-944703479451&displaylang=en)
以下是最終安全性檢查常用的(但不是僅有的)安全檢測(cè)工具:
模糊測(cè)試(Fuzz testing)包括File Fuzzing, RPC Fuzzing, ActiveX Fuzzing
App Verifier:是一個(gè) Runtime 工具,它是在執(zhí)行中的應(yīng)用程式里進(jìn)行作業(yè)。它能揪出 Run Time 時(shí)所發(fā)生與內(nèi)存有關(guān)的問題,其中包括堆積式緩沖區(qū)溢位。
ComChk:檢查COM Control。
XRAY:用來捕捉機(jī)器上的攻擊表面,可以發(fā)現(xiàn)產(chǎn)品的故意或有意無意的攻擊表面。
Binscope:檢查binaries代碼。
CAT.NET:ACE組開發(fā)的用來發(fā)現(xiàn)網(wǎng)頁中的SQL injection, cross-site scripting 和其他的data injection 問題。
通過最終安全性檢查,產(chǎn)品設(shè)計(jì)組可以在安全性開發(fā)生命周期的各個(gè)階段自己用安全檢測(cè)工具對(duì)代碼或系統(tǒng)進(jìn)行檢測(cè)。對(duì)于高風(fēng)險(xiǎn)的產(chǎn)品, 在完成最終安全檢閱的同時(shí), 我們會(huì)建議他們請(qǐng)ACE組或第三方公司再進(jìn)行代碼安全測(cè)試,和b1ackbox測(cè)試。
最后,安全檢查員根據(jù)所發(fā)現(xiàn)的結(jié)果來決定軟件是否能發(fā)行上市,或是還需要返工。
【編輯推薦】