透視微軟的產品開發最終安全性檢查
微軟安全開發生命周期有兩個目標:一是縮減與安全性有關的設計缺失與程序碼缺陷錯誤,二是降低未完全解決的缺陷錯誤的嚴重程度。在這個過程中安全檢查員根據所發現的結果來決定軟件是否能發行上市。
從去年開始,ACE組對GFS(Global Foundation Services)的MSN產品作最終安全檢查(Final Security Review,簡稱FSR)。最終安全檢查是以安全開發生命周期(Security Development Lifecycle,簡稱 SDL)為基礎,對軟件在出廠前作最終的安全檢查。
安全開發生命周期有兩個目標:一是縮減與安全性有關的設計缺失與程序碼缺陷錯誤,二是降低未完全解決的缺陷錯誤的嚴重程度。
最終安全性檢查要求每個產品開發組有一位或多位人選負責安全和隱私方面的工作。他們的工作包括管理一切安全和隱私的問題,督促開發組執行并滿足公司對安全和隱私方面的要求,在面臨棘手的安全和隱私決策時做出理性的決定。
通常產品開發組在設計或 軟件完工前的幾個月,在內部網上登記他們的產品,并完成一份問卷清單,以幫助安全檢測員了解產品。同時根據問卷答案, 決定這軟件需要進行哪些安全測試。
最終安全性檢查要求至少80%的員工一年有一次學習安全知識的機會, 并予以記錄。Microsoft提供很多線上資源或是由講師指導的課程。
最終安全性檢查期間,安全檢查員和開發組一起分析產品的威脅分析模型.了解產品究竟要保護哪些資產,認識到產品會引進哪些威脅及漏洞,并知道產品將如何緩和這些威脅。此外,還要考慮到威脅和弱點是來自產品部署的環境內,還是源自于與其他產品或端對端解決方案系統的互動。
常用的威脅分析模型有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 工具,它是在執行中的應用程式里進行作業。它能揪出 Run Time 時所發生與內存有關的問題,其中包括堆積式緩沖區溢位。
ComChk:檢查COM Control。
XRAY:用來捕捉機器上的攻擊表面,可以發現產品的故意或有意無意的攻擊表面。
Binscope:檢查binaries代碼。
CAT.NET:ACE組開發的用來發現網頁中的SQL injection, cross-site scripting 和其他的data injection 問題。
通過最終安全性檢查,產品設計組可以在安全性開發生命周期的各個階段自己用安全檢測工具對代碼或系統進行檢測。對于高風險的產品, 在完成最終安全檢閱的同時, 我們會建議他們請ACE組或第三方公司再進行代碼安全測試,和b1ackbox測試。
最后,安全檢查員根據所發現的結果來決定軟件是否能發行上市,或是還需要返工。
【編輯推薦】