探索 SDL 安全性工具自動化

已完成

為了支援我們的開發人員在程式碼開發期間和發行後執行安全性需求,Microsoft 提供了一套安全開發工具,可自動檢查原始程式碼中的安全性瑕疵和弱點。 Microsoft 定義並發布一份核准的工具清單,供我們的開發人員使用,例如編譯器與開發環境,以及其內建的安全性檢查。 我們的開發人員使用最新版的核准工具,以利用新的安全性功能。

除了提供安全的開發工具之外,Microsoft 還使用自動化安全性工具來實施和執行 SDL 程式碼分析需求。 這些工具有許多已內建到認可管線中,並且會在簽入及編譯和測試新組建時自動分析程式碼的安全性問題。 自動化安全性工具發現的問題必須先修正,新版組建才能通過安全性審查並核准發行。

我們的自動化安全性工具分成數個廣泛類別,用於測試不同開發階段中的程式碼,從時間代碼確認到在生產環境中發行作業時。 下表摘要說明我們在 Microsoft 用於 SDL 程式碼分析的工具類型。

安全性工具。 描述
靜態程式碼分析 分析原始程式碼中潛在的安全性問題,包括程式碼中的認證是否存在。
二進位分析 評估二進位程式碼層級的弱點,以確認程式碼已生產就緒。
加密掃描 驗證原始程式碼和程式碼執行的最佳加密做法。
組態驗證 根據安全性標準和最佳做法分析生產系統的組態配置。

靜態程式碼分析和二進位分析

在編譯之前先分析原始程式碼,可提供高度可調整的安全性程式碼檢閱,並有助於確保遵循安全編碼原則。 我們的靜態程式代碼分析工具、掃描原始程式碼中的常見弱點、不安全函式等安全性缺陷,以及內嵌在原始程式碼中的認證和其他秘密。 這些工具發現的問題會標幟為錯誤,供我們的開發人員修正。

我們大部分的靜態程式碼分析工具已整合至認可管線,以識別每次組建軟體時的弱點,並防止將不安全的程式碼簽入。 我們也將靜態程式碼分析工具整合到開發人員環境中,以發現某些瑕疵 ,例如不安全函數的存在,並且以更安全的替代方案取代不安全的程式碼,同時開發人員正在積極進行編碼。

除了原始碼的靜態分析之外,我們還會使用自動化工具來掃描已編譯的程式代碼,以取得二進位層級的安全性缺陷,例如編譯程式/鏈接器設定和其他安全性相關二進位特性。 我們的二進位分析工具會在每個組建上執行,以偵測二進位安全性問題,並標幟出它們以在發行組建之前進行補救。

加密掃描

Microsoft 會負責確保所有資料 (包括安全性敏感性資訊和管理及控制資料) 在使用強式加密傳輸或儲存時受到保護,避免意外洩漏或變更。 SDL 將開發人員限制為已核准的加密模組,這些模組執行可靠且安全的加密。 為了強制執行此政策,我們的工具會掃描並驗證原始程式碼和在程式碼執行期間的密碼編譯執行。 在安全性審查期間,會標幟出密碼編譯的不安全使用以進行補救和驗證。

組態驗證

在 Microsoft,我們的作業小組會使用 DevOps 模型與開發小組整合。 做為 DevOps 的一部分,在建組發行至生產環境之後,我們會繼續驗證程式碼的安全作業。 作業小組會使用安全部署檢查清單、基準設定掃描、弱點掃描和主機型入侵偵測系統,來驗證軟體是否根據安全性最佳做法設定及運作。 由作業小組偵測到的組態錯誤會標幟出來以供修復,而作業小組發現的任何問題會指派給適當的開發小組,以在程式碼層級修正。 我們將操作安全性整合到我們的 SDL 需求,協助確保產品與服務在發行之後持續的安全性。

深入了解