给Chrome“捉虫”16000个,Google开源bug自检工具

news/2024/7/3 6:02:12

640?wx_fmt=png

整理 | 一一

出品 | 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 希望鼓励所有软件开发者将模糊测试集成到其工作流程中。


640?wx_fmt=png


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)

征稿

640?wx_fmt=png


推荐阅读:

  • Playboy封面女郎、互联网第一夫人,程序员们的“钢铁审美”

  • 2019全球AI 100强,中国占独角兽半壁江山,但忧患暗存

  • “百练”成钢:NumPy 100练

  • 赵本山:我的时代还没有结束 | Python告诉你

  • “不厚道”的程序员:年后第一天上班就提辞职

  • Python 爬取了猫眼 47858 万条评论,告诉你《飞驰人生》值不值得看?!

  • Facebook神秘区块链部门首次收购,开放这些职位,你的技能符合吗?

  • 写给程序员的裁员防身指南

  • 这4门AI网课极具人气,逆天好评!(附代码+答疑)

                         640?wx_fmt=png

点击“阅读原文”,打开CSDN APP 阅读更贴心!


http://lihuaxi.xjx100.cn/news/285793.html

相关文章

Codeforces Round #649 (Div.2)题解

文章目录A - XXXXXB - Most socially-distanced subsequenceC - Ehab and Prefix MEXsA - XXXXX 题意:这个题让你找从开头或者是结尾去掉最少几个数以后总和是不能整除给定的x 思路:如果这个序列总和可以整除给定的x的话,那么我们只要找到一…

知乎13万赞!为何很多名校毕业生,都输在了人生后半程

作 者:skiptomylou图 片:站酷海洛来 源:知乎生活因何而变如果在截止目前的人生里,有什么事情是我认为我领悟到的最重要的,那就是:人的生活就像投资品价值一样,是存在均值回归的。那个均值&#…

远程推送IOS

2019独角兽企业重金招聘Python工程师标准>>> 一,IOS远程通知服务APNs 苹果的APNs(苹果推送通知服务Apple Push Notification server)允许设备和苹果的推送通知服务器保持链接,支持开发者推送消息到给用户设备对应的应用程序。 苹果的APNs基本原理是: 首先由应用注册…

poj2139(Flody算法)

题意:题目给出n,m。n代表母牛的数量,m代表接下来的行数。接下来的m行,首先给出一个x,表示x后面跟的数,也就是母牛的编号(这里从1开始,当然从0开始也一样),表示这x头母牛之间存在关系…

简单介绍基于PostgreSql 别名区分大小写的问题

这篇文章主要介绍了基于PostgreSql 别名区分大小写的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 PostgreSql是区分大小写的 如果别名的大小不一致就会提示错误: SELECT* FROM(SELECTcpi."product_item_id&q…

欧拉筛 筛法求素数 及其例题 时间复杂度O(n)

埃式筛法尽管不错,但是确实做了许多无用功,某个数可能会被重复的筛好几次,欧拉筛解决了这个方法,下面为代码: 注意理解if(i%prim[j]0) break; 大佬讲的不错的博客,我就不做复读机了。 点我传送 void ispir…

Windows 95被做成了App,可玩扫雷和纸牌

6 秒重温 Windows95 开机画面 作者 | 琥珀 出品 | AI科技大本营(ID:rgznai100) “看到 Win95,再看到仙剑 DOS 的画面,突然有种想哭的感觉,小时候帮李逍遥实现了仗剑江湖的愿望,但自己却没有实现自己的愿望…

基于zabbix用Python写一个运维流量气象图

前言:同事问我,你写运维平台最先写哪一部分?好吧,还真把我问倒了,因为这是在问最应该放在放在第一位的东西~作为一个工作不足两年,运维不足一年的新手来说,还真不敢妄下评论,其实按照…