Google開源自動化模糊測試工具ClusterFuzz
有沒有聽說過“模糊測試”?在軟體工程中,這個術語指的是一種錯誤(bug)檢測技術,通過向目標程式提供“意外”或超出範圍的輸入來檢測潛在的bug,尤其是記憶體崩潰錯誤和程式碼斷言(code assertion)。這些bug對於人工檢測來說,通常需要敏銳的眼光和大量的人力 -以及無休止的程式碼審查工作。
谷歌的解決方案是將模糊測試工作交給軟體,例如ClusterFuzz。這是一個名副其實的基礎架構,執行在超過25,000個處理器核心上,不斷(並自主)探測Chrome的程式碼庫中的漏洞。兩年前,Google開始通過 OSS-Fuzz 提供ClusterFuzz作為開源專案的免費服務,今天,Google宣佈將ClusterFuzz在 GitHub 上開源。 Google表示,ClusterFuzz的開源實現需要一些Google Cloud Platform服務,但與任何計算群集相容。
在部落格文章 中,ClusterFuzz團隊成員Abhishek Arya,Oliver Chang,Max Moroz,Martin Barbella和Jonathan Metzman寫道:“我們開發ClusterFuzz超過八年,以便無縫地融入開發人員的工作流程,使其易於查詢錯誤並將其修復。 ClusterFuzz可實現端到端的自動化,從錯誤檢測到分類(準確的刪除重複資料,二分法),到錯誤報告,最後到錯誤報告的自動關閉。”
谷歌表示,到目前為止模糊測試工具ClusterFuzz已經幫助發現了超過16,000個Chrome專案中的錯誤以及與OSS-Fuzz整合的160多個開源專案中的11,000多個錯誤。“ClusterFuzz是Chrome和許多其他開源專案開發過程中不可或缺的一部分,”該團隊寫道。“ClusterFuzz通常能夠在啟用後的幾個小時內開始檢測出錯誤,並在一天內驗證修復。”
ClusterFuzz遠非唯一的自動化模糊測試解決方案。2018年8月,谷歌收購了 GraphicsFuzz 一家專門研究移動圖形基準測試工具的公司,其中一些工具用於發現三星Galaxy S6和S9等手機中的漏洞(數量不詳)。微軟兩年前推出了 Project Springfield ,一個基於雲的模糊測試服務,用於查詢軟體中的關鍵安全bug。有興趣的讀者還可以在這裡找到 更多 模糊測試工具。