給Chrome“捉蟲”16000個,Google開源bug自檢工具
整理 | 一一
出品 | AI科技大本營(ID:rgznai100)
在內部開發和使用八年之久,近日,Google 宣佈開源 bug 自動化檢測工具 ClusterFuzz。
ClusterFuzz 是一款提供端到端的自動化模糊測試工具:從錯誤檢測到分類排查,再到生成錯誤報告,最後到自動關閉錯誤報告。
根據維基百科,模糊測試是一種用於檢測軟體 bug 的自動化方法,通過向目標程式提供意外輸入進行運作。它可以有效地發現損壞記憶體的 bug,通常會帶來嚴重的安全隱患,需要安全補丁進行修復。手動查詢這些問題既困難又耗時,而且即便是嚴格的程式碼審查,有些 bug 也會被漏掉。對於用不安全的語言(如 C 或 C++)編寫的軟體專案,模糊測試是確保其安全性和穩定性的關鍵一步。
為了使模糊測試真正發揮效用,它必須是連續的且需要大規模執行,要無縫整合到軟體專案的開發過程中。具體而言,需要有以下功能:
高度可擴充套件
準確的重複資料刪除
問題跟蹤器的全自動錯誤歸檔和關閉(僅限現在的 Monorail)
測試用例最小化
通過二分法找回歸
用於分析模糊器效能和故障率的統計資訊
易於使用的 Web 介面,用於管理和檢視錯誤
支援覆蓋引導模糊測試(例如 libFuzzer 和 AFL)和 blackbox 模糊測試
為了給 Chrome 瀏覽器提供這些功能,Google 開始編寫 ClusterFuzz,這是一個在 25000 多個核心上執行的模糊測試基礎架構,同時還依賴於 Google 的雲端儲存、資料庫、監控設施和資料倉儲技術。 兩年前,他們開始通過 OSS-Fuzz (開源軟體的連續模糊測試,ClusterFuzz 是其背後的分散式模糊測試基礎架構)向開源專案提供 ClusterFuzz 免費服務。
在開發 ClusterFuzz 的八年時間裡,Google 希望這個工具可以融入到開發者的工作流程,並且使得查詢 bug、修復 bug 變得異常簡單。開源 ClusterFuzz 後,開發者則可以在本地群集上測試 ClusterFuzz,Google 希望鼓勵所有軟體開發者將模糊測試整合到其工作流程中。
ClusterFuzz 在 Google 雲中執行的方式是,Google 上傳想要測試的程式,在它上面提供意外輸入,在發現故障後,自動歸檔 bug,隨後工程師就可以開始著手修復。 但需要指出的是,由於依賴於 Google 雲的功能,ClusterFuzz 的使用可能會存在一些限制。
多數情況下,ClusterFuzz 的工作流程是自動化的,包括錯誤檢測、分類、錯誤報告和關閉錯誤報告。ClusterFuzz 團隊指出,像瀏覽器般複雜的模糊測試產品,ClusterFuzz 提供的自動化測試服務可以節省時間,還能發現在手動進行程式碼審查時可能漏掉的 bug。早在 2012 年,Google 就使用該款工具每天針對各種 Chrome 版本執行 5000 萬個測試用例。
近年來重要的開源專案可以申請加入 OSS-Fuzz 計劃,並接收到 Google 的錯誤報告,具有大量使用者群或在全球 IT 基礎架構中發揮關鍵作用的軟體專案就可加入。那些被該計劃接受的專案也可以訪問該工具,例如模糊測試統計資料。
ClusterFuzz 團隊表示,ClusterFuzz 是 Chrome 以及許多開源專案開發過程中不可或缺的一部分,它能夠在引入後幾小時就能發現錯誤,並在一天內驗證修復方法。
現在 Google 已將 ClusterFuzz 與 OSS-Fuzz 結合使用。截止 2019 年 1 月, ClusterFuzz 在與 OSS-Fuzz 整合的 160 多個開源專案中發現了超 11000 個 bug。與此同時,ClusterFuzz 在 Chrome 中發現了 16000 個 bug。
當然,ClusterFuzz 並非唯一的自動化模糊測試工具。據 Venturebeat 報導,2018 年 8 月,Google 還收購了一家專門研究移動圖形基準測試工具的公司 GraphicsFuzz,他們的其中一些工具用於找出三星 Galaxy S6 和S9 等手機中的 bug。兩年前,微軟推出了基於雲的模糊測試服務 Project Springfield,用於查詢軟體中關乎安全的 bug。
相關連結:
https://github.com/google/clusterfuzz
https://opensource.googleblog.com/2019/02/open-sourcing-clusterfuzz.html
(本文為AI科技大本營翻譯文章,轉載請微信聯絡 1092722531)
徵稿推薦閱讀:
Playboy封面女郎、網際網路第一夫人,程式設計師們的“鋼鐵審美”
2019全球AI 100強,中國佔獨角獸半壁江山,但憂患暗存
“百練”成鋼:NumPy 100練
這4門AI網課極具人氣,逆天好評!(附程式碼+答疑)
點選“閱讀原文”,開啟CSDN APP 閱讀更貼心!
相關文章
- 4個開源的Bug跟蹤工具
- [捉蟲記錄]關於Cascade Training Error的bugAIError
- Google Chrome 開發者工具漏洞利用GoChrome
- MySQL·捉蟲動態·DROPDATABASE外來鍵約束的GTIDBUGMySqlDatabaseTiDB
- OpenAI開源了:Transformer自動debug工具上線GitHubOpenAIORMGithub
- 6 個開源的家庭自動化工具
- Chrome開發者工具Debug入門Chrome
- 開源一個程式碼規範檢測工具
- 給找 Bug 的工具(larastan)找 BugAST
- 開源Bug跟蹤管理工具–BugFree
- ChunJun 1.16 Release版本即將釋出,bug 捉蟲活動邀您參與!
- Web伺服器捉蟲速記Web伺服器
- google chromeGoChrome
- 子執行緒 UI 問題捉蟲執行緒UI
- 文字自動摘要工具 TextTeaser 開源
- Google開源網路流量安全測試工具nogotofailGoAI
- Google釋出機器學習開源視覺化工具FacetsGo機器學習視覺化
- Google 開源網路流量安全測試工具 nogotofailGoAI
- Google開源ScriptCover,JavaScript程式碼覆蓋率工具GoJavaScript
- Chrome 自帶開發者工具筆記Chrome筆記
- Web自動化之Headless Chrome開發工具庫WebChrome
- 【協作檢校】Google Chrome Web App開發指南第一章GoChromeWebAPP
- 【Xtrabackup捉蟲】Waiting for master thread to be suspendedAIASTthread
- W32DASM8.93捉蟲記 湖北 wuhuashangASM
- v$sesstat檢視和自開發工具
- 分享一個自研開發的QA自動化審計工具-Sonar檢查
- Google Chrome發現新Bug CPU使用率飆升至100%GoChrome
- 這 6 個爬蟲開源專案 yyds爬蟲
- java使用google開源工具實現圖片壓縮JavaGo開源工具
- Oracle 開源三個容器工具Oracle
- 15 個必須知道的 Chrome 開發工具技巧Chrome
- MySQL·捉蟲動態·唯一鍵約束失效MySql
- 利用Google開源Java容器化工具Jib構建映象GoJava
- 我用開源工具給女朋友寫道歉信!開源工具
- 讓Google Chrome崩潰?只需16個位元組!GoChrome
- 50個開源效能測試工具
- IE宣佈開源專案:為Chrome開發工具引入IE介面卡Chrome
- 在iOS上將Chrome開源!iOSChrome