微軟於GitHub上開源自家內部Edge、Windows 以及各團隊使用的模糊測試框架OneFuzz,讓開發者可以在持續開發工作管線中嵌入模糊測試,以主動發現軟體的臭蟲與漏洞。微軟提到,開發者只要透過單一指令,就能夠啟動各種規模的模糊測試工作,從數臺虛擬機器到數千顆核心的規模都可以。

模糊測試是一種提高程式碼安全性和可靠性的方法,讓開發人員在開發生命周期早期,就能夠主動發現臭蟲以及安全性漏洞,但微軟提到,模糊測試是一把雙刃劍,雖然能夠有效率地發現漏洞,但在實際使用上卻非常複雜,甚至需要仰賴專門的安全工程團隊,建構和執行模糊測試功能,因此導入模糊測試的成本也就非常高昂,而為了使自家開發人員能夠輕鬆且持續地進行模糊測試,微軟開發了模糊測試框架OneFuzz。

編譯器近期的發展,使得模糊測試的方式產生變化,微軟提到,由Google帶領開發的開源LLVM相關技術,改變模糊測試原生程式碼的安全工程任務,現在模糊測試系統可以嵌入到持續建置系統中,更容易進行崩潰偵測和覆蓋追蹤等工作。

現在開發人員可以將模糊測試元件編譯進單元測試二進位檔中,執行呼叫測試、生成輸入和對單個可執行檔進行錯誤偵測等工作,微軟表示,目前在Visual Studio中,這些實驗性功能支援逐漸增加,測試二進位檔已經可以方便地從編譯器建置,因此開發人員開始面臨另外的挑戰,解決在CI/CD工作管線中建置,並且在雲中擴展模糊測試工作負載的問題。

已經被微軟大量用來測試Windows作業系統開發的OneFuzz,可讓開發人員靈活組合模糊測試工作流程,開放原始碼的OneFuzz,允許開發者使用自己的模糊測試器(Fuzzer)、變更調度,以及管理種子(Seed)輸入,創建符合需求的模糊測試流程,而且OneFuzz的透明設計,讓開發者可以監控與觀察模糊測試的各個階段狀態。

OneFuzz也支援按需崩潰測試,開發者可以按需或是從建構系統中,呼叫即時除錯對話(Session)。由於OneFuzz的多平臺設計,開發者可以選擇在Windows和Linux平臺上進行模糊測試,使用自己的OS建置、核心和巢狀管理程式(Hypervisor)執行測試。

目前OneFuzz已經在GitHub上以MIT授權開源,微軟研究和安全團隊會繼續貢獻和維護OneFuzz專案,而微軟也會擴大內部採用OneFuzz的範圍,以提高平臺和產品的安全性。


Advertisement

更多 iThome相關內容