当前位置: 首页 > 编程日记 > 正文

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

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 阅读更贴心!

相关文章:

小巧的日志记录组件 - 开源研究系列文章

今天给大家带来一个小巧的日志记录组件LogHelper。这个组件是由Log4Net这个组件的由来而来的,不过只是写入.txt文本文件而已。如果能够对大家的项目有帮助那就更好了。 首先,打开.SLN解决方案,添加引用日志组件。 然后,先对日志组…

.NET开发人员值得关注的七个开源项目

微软近几年在.NET社区开源项目方面投入了相当多的时间和资源,不禁让原本对峙的开源社区阵营大吃一惊,从微软.NET社区中的反应来看,微软.NET开发阵营对开源工具的依赖正日益增强,本文就为所有.NET开发人员介绍7个应该关注的开源项目…

SystemTap了解

SystemTrap是监控和跟踪运行中的Linux内核操作的动态方法。 http://www.ibm.com/developerworks/cn/linux/l-systemtap/ 使用SystemTrap需要使用trap来运行一个stp脚本 如何安装: Centos下直接yum install systemtrap就行了 测试是否可以运行 运行:stap …

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

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

【Ubuntu】虚拟机VirtualBox安装win7完整步骤

在Ubuntu16.04中使用VirtualBox安装win7,亲测可以完美使用; 完整步骤参见如下链接: 1、VirtualBox安装步骤:http://www.xitongcheng.com/jiaocheng/xtazjc_article_23804.html 2、win7镜像下载:http://www.xitongcheng.com/jia…

全栈AI工程师指南,DIY一个识别手写数字的web应用

作者 | shadow chi本文经授权转载自 无界社区mixlab(ID:mix-lab)网上大量教程都是教如何训练模型,往往我们只学会了训练模型,而实际应用的环节是缺失的。def AIFullstack( ):本文从「…

mysql 中limit 用法!!

select * from mydb where id limit i,j; 意思就是从第i行开始,检索出j行,结束!主要用于分页技术中,比如说我们一页现实10行,可以这样做:select * from mydb where id order by id desc limit $page,10($pa…

【Qt】Qt动态库和静态库的创建和使用

动态库(共享库)的创建 在Qt Creator中新建项目,选择Library 点击“Choose”进入下一步 选择创建库的类型:共享库 选择Kit套件 选择需要的模块 配置工程路径、名字等 Qt Creator自动创建的文件 我配置的动态库名字为:Share pro文件内容

23.3. Ethernet0/0 - Wan口配置

23.3.1. DHCP 动态IP地址 <Netkiller>system-view System View: return to User View with CtrlZ.interface Ethernet0/0port link-mode routenat outboundip address dhcp-allocipsec policy navigator #[Netkiller]display dhcp client Ethernet0/0 DHCP client inform…

用Python解锁“吃鸡”正确姿势

大吉大利&#xff0c;今晚吃鸡~ 今天跟朋友玩了几把吃鸡&#xff0c;经历了各种死法&#xff0c;还被嘲笑说论女生吃鸡的100种死法&#xff0c;比如被拳头抡死、跳伞落到房顶边缘摔死 、把吃鸡玩成飞车被车技秀死、被队友用燃烧瓶烧死的。这种游戏对我来说就是一个让我明白原来…

Oracle Grid Control 10.2.0.5 for Linux 安装和配置指南

一、概述&#xff1a;Grid Control的组件包括Management Agent, Management Service (OMS), Management Repository. 系统架构如下: 10g oem是一个基于web的管理架构&#xff0c;这和10g之前的笨重的java客户端有很大的区别。我们可以从2方面来研究它的架构&#xff0c;一个是管…

【Qt】Qt Plugin:Qt插件创建与使用

插件接口设计 以a+b=c的接口为例:int add(int a, int b) 在 主项目 工程中创建接口文件(一个头文件)eg:Add.h #ifndef ADD_H #define ADD_H#include <QtPlugin> class Add { public:virtual int add(int a, int b)= 0;//纯虚函数 }; Q_DECLARE_INTERFACE(Add, &qu…

9.5. SELINUX

禁用SElinux编辑/etc/selinux/config&#xff0c;修改如下内容&#xff1a; SELINUXdisabled使用命令 getenforce setenforce 0lokkit --selinuxdisabledPlease enable JavaScript to view the <a href"http://disqus.com/?ref_noscript">comments powered by…

说说我们为什么需要加班

做软件这行&#xff0c;加班就是家常便饭。做了这么多年程序员&#xff0c;我还真没听哪个说公司不加班的&#xff0c;碰见好的不时、偶尔加班&#xff0c;差的就是无尽的加。加班是那么的邪恶、令人作呕&#xff0c;但又无法抗拒&#xff0c;它仿佛就像嫖客患上梅毒——摆脱不…

为 Django admin 登录页添加验证码

为什么80%的码农都做不了架构师&#xff1f;>>> 历史原因&#xff0c;使用上古版本 django 1.6.5&#xff0c;但新版本应该大同小异 首先添加自定义后台模块app&#xff0c; 如adm&#xff0c;并添加到 INSTALLED_APPS 下。 假设处理自定义登录的view是 apps/adm/v…

手机芯片谁是AI之王?高通、联发科均超华为

整理 | apddd出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;尽管相当数量的人工智能服务&#xff0c;是由云计算网络提供&#xff0c;但在响应低延迟、保护隐私、应用场景等方面&#xff0c;手机AI芯片无可替代。例如人脸解锁&#xff0c;图像增强、识别&#xff0c…

【linux】error: stdio.h: No such file or directory

ubuntu 默认没有C和C编译环境 ubuntu 默认没有C和C编译环境&#xff0c;新装的ubuntu&#xff0c;使用gcc编译时&#xff0c;会报错&#xff0c;找不到某某头文件等。在编译一个demo&#xff0c;如hello world时&#xff0c;会报错&#xff1a; error: stdio.h: No such file …

SqlParameter的用法

1。一些面例子为例&#xff1a;List<SqlParameter> listp new List<SqlParameter>();listp.Add(new SqlParameter("userid", userid));string sql "select * from userbooks where useriduserid";在执行sql语句时 listp.Add(new SqlParamete…

程序员如何用“撞针“拯救35亿地球人?

春节假期即将结束&#xff0c;有多少程序员朋友已经离开家乡在返回北上广深等工作所在城市的路上&#xff1f;有多少程序员已经开工大吉开始了新一年的代码征程&#xff1f;回首这一个春节&#xff0c;8 部电影在大年初一齐上线&#xff0c;《流浪地球》在前期预售票房远不如《…

【linux】printf在终端打印彩色hello world

代码 #include <stdio.h>#define NONE "\033[m" #define RED "\033[0;32;31m" #define GREEN "\033[0;32;32m" #define BLUE "\033[0;32;34m" #define YELLOW "\033[1;33m&qu…

看腾讯运维应对“18岁照片全民怀旧”事件的方案,你一定不后悔!

作者丨魏旸&#xff1a;腾讯高级工程师&#xff0c;15年运维经验的老专家&#xff0c;负责QQ空间、微云、QQ空间相册的运维工作&#xff0c;亲历8亿军装照、QQ空间异地多活建设等重大架构升级事件。2017年12月30日&#xff0c;元旦假期的第一天&#xff0c;你的朋友圈被18岁照片…

基于svnserve的SVN服务器(windows下安装与配置)

基于svnserve的SVN服务器(windows下安装与配置)关键字: svn 安装SVNserve 从http://subversion.tigris.org/servlets/ProjectDocumentList?folderID91得到最新版本的Subversion。 如果你已经安装了Subversion&#xff0c;svnserve已经运行&#xff0c;你需要在继续之前把它停…

【c语言】C语言配置文件解析库——iniparser

转载自&#xff1a;http://blog.csdn.net/u011192270/article/details/49339071 C语言配置文件解析库——iniparser前言&#xff1a;在对项目的优化时&#xff0c;发现Linux下没有专门的供给C语言使用的配置文件函数&#xff0c;于是搜索到了iniparser库&#xff0c;可以像那些…

利用java虚拟机的工具jmap分析java内存情况

2019独角兽企业重金招聘Python工程师标准>>> 有时候碰到性能问题&#xff0c;比如一个java application出现out of memory,出现内存泄漏的情况&#xff0c;再去修改bug可能会变得异常复杂&#xff0c;利用工具去分析整个java application 内存占用情况&#xff0c;然…

代码测试意味着完全消灭了Bug?

日前&#xff0c;一位名为 Jens Neuse 的开发者在改进其 graphql 解析库的过程中&#xff0c;发现词法分析器和解析器中存在很多的低效率&#xff0c;因此不得不重构完整的代码库&#xff08;https://medium.com/jens.neuse/want-to-write-good-unit-tests-in-go-dont-panic-or…

Android系列讲座(2):为TextView组件加上边框

本文为原创&#xff0c;如需转载&#xff0c;请注明作者和出处&#xff0c;谢谢&#xff01; 源代码Android系统本身提供的TextView组件并不支持边框&#xff0c;但可以对TextView进行扩展来添加边框。我们可以使用如下两种方法为TextView组件添加边框。 1. 编写一个继承TextV…

如何用Python做三阶拼图?

作者 | Ahab来源 | Ahab杂货铺&#xff08;ID:AhabBin&#xff09;今天是年假的最后一天&#xff0c;明天大家就要回到各自的工作岗位上去&#xff0c;公众号从今天开始恢复更新。不知道大家假期过得怎么样&#xff0c;帅张提到假期多关注一些家里的变化&#xff0c;自己也记录…

【C语言】libiniparser库使用例子,

libiniparser是C语言实现的ini文件解析库 使用实例如下 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h>#include "iniparser.h"void create_example_ini_file(void); int parse_ini_file(char * ini_nam…

laravel5.4 关于数据填充的知识

需求&#xff1a;大量excel表格数据 集中整理到一个规定数据表中&#xff0c;并且增加新字段做标记步骤&#xff1a;把需要整理的excel表格提前存放到mysql数据库指定的表中 &#xff0c;可以用图形化工具来执行&#xff01; 核心&#xff1a;利用laravel5.4 框架自带的填充功能…

windows 域环境应用---VNC远程协助工具的使用

域环境中&#xff0c;少不了远程协助工具&#xff0c;这可以替管理员省掉许多跑腿的事。<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />今天我就介绍一下远程协助工具中的一款real VNC.此工具有三个软件&#xff0c;vnc server…