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