发布在即!企业 AIGC 应用程度测评,3 步定制专属评估报告。抢首批测评权益>>> 了解详情
写点什么

开源测试:测试人员应该拥抱而不是害怕捉虫赏金计划

作者:Rhian Lewis

  • 2022-07-22
  • 本文字数:3420 字

    阅读完需:约 11 分钟

开源测试:测试人员应该拥抱而不是害怕捉虫赏金计划

开源软件改变了测试人员和开发人员的工作方式。我们比以往任何时候都更多地使用开源库和包,这意味着 Bug 将通过我们团队无法控制的依赖项被引入到我们的软件中。

 

现在,我们也进入了一个开源测试的世界。越来越多的开源项目(以及许多闭源项目)正在采用捉虫赏金计划,要求组织之外的人参与质量和安全过程。

 

基于区块链的 Web3 生态系统日益增长的重要性表明,社区测试是多么的重要。最近的一些例子表明,开源测试人员发现的 Bug 为项目节省了数千万美元。

 

测试界的一些人认为这种趋势是一种威胁。然而,这实际上是一个机会。捉虫赏金计划和开源测试对测试团队来说是一个很好的补充工具,测试人员有充分的理由拥抱这一新趋势而不是害怕它。

测试开源软件所面临的挑战

 

有两个主要的挑战:一个是关于决策,另一个是关于集成。关于决策,根据项目的不同,决策过程也会有所不同。例如,Rails 的开发团队会就发布时间表等东西达成共识。然而,在去中心化的生态系统中,这些决策可能是由社区做出的。例如,去年,DeFi 协议项目 Compound 发现自己处在这样的一种状况:为了达成修复某个 Bug 的共识,代币持有者必须投票批准该提议。

 

因此,你可能不像开发专有软件的公司那样拥有自上而下的组织层级。在这些公司中,有专门的经理或一组经理负责发布软件。

 

在涉及到集成时,这些常常会给测试人员造成麻烦,即使他们的产品不是开源的。开发人员把社区志愿者开发和维护的包或模块带入项目,这些包或模块没有有效的 SLA,如果你的应用程序因为第三方开源库没有更新而发生中断,或者如果你的构建脚本引入了与被测试的应用程序不兼容的版本,无法获得赔偿。连接数据库的辅助包或 API 特别容易受到攻击。

捉虫赏金计划及其目的

 

捉虫赏金计划是一种众包测试的方式。作家 James Surowiecki 在他的《群体的智慧》一书中普及了这个观点,即关注问题的人越多,他们就越有可能找到正确的解决方案。在一个复杂的包含了多种依赖项和集成的系统中,一个小漏洞就可能导致数百万美元的损失,单个测试人员或测试团队不太可能拥有足够的专业知识和预测能力来识别每个潜在的问题。因此,通过赏金激励更广泛的社区来寻找漏洞正变得越来越流行。

 

你可以在自己的网站上发布条款和条件以及奖励表,通过奖励的方式激励社区来查找漏洞。但更常见的情况是,像 HackerOne、BugCrowd 和 ImmuneFi 这样的平台会为你处理整个过程,并为既希望展示自己的能力又希望获得奖励的测试人员和安全研究人员提供一站式服务。

 

对于商业软件,捉虫赏金计划的决定是由高层的少数人做出的。对于开源软件,这个过程就不一样了,尤其是在 Web3 生态系统中。基金会或去中心化自治组织将投票决定是否释放一定比例的资金作为捉虫赏金。

 

典型的例子是Compound的捉虫赏金计划和我协助建立的Boson协议捉虫赏金计划

 

ImmuneFi 的 Compound 捉虫赏金计划就是一个很好的例子,因为它根据漏洞的严重程度明确列出了可获得的奖励(最高可达 5 万美元),并且明确只在一个特定的拉取请求中。ImmuneFi 负责处理所有与支付或争议相关的事项。

 

相比之下,Boson 协议的赏金计划针对所有智能合约——奖金差不多也为 5 万美元——但不包括所有相关网站和非智能合约资产。赏金是直接提供的,而不是通过中间人。

开源捉虫赏金计划优缺点

 

开源测试的优势,即使是对于闭源项目,在于它扩大了漏洞捕捉网,让更多的人为系统的安全做出贡献,而不只是依赖项目正式雇佣的测试团队。一个流行的开源项目通常由一个核心开发团队负责维护,这个团队可能包括测试人员,但与大多数闭源项目一样,他们可能不具备软件开发生命周期需要的专业技能。例如,许多公司已经聘请了专业服务机构来做渗透测试。你可以将捉虫赏金计划看作是一种持续的渗透测试,只在专家发现漏洞时才向他们支付费用。

 

但最重要的是,无论你的项目是怎样的,众包测试总会带来各种不同的方法、思维方式和技能,这是一个人或团队不可能做到的。一个成功的产品或应用程序可能拥有成千上万甚至上百万的用户,他们的使用方式不同,硬件不同,访问路径也不同。如果引导得当,获得更多的技能和见解是一种宝贵的资源。

 

不足的地方主要在于你需要花额外的时间和精力向那些拥有相关技能的人推广你的赏金计划。如果你没有谨慎制定赏金规则,你的公司、基金会或项目可能会为已经发现的漏洞支付赏金。

测试 Web3 生态系统

 

区块链技术(有时也称为 Web3)对测试人员来说是一个非常具有挑战性的领域。原因有很多,我将重点介绍其中比较重要的两个。

 

首先,我们很难在 Staging 环境中复制生产环境的条件。在生产环境中,你可能有数千个验证器和数千个用户,他们可能以你没有想到的方式与系统发生交互。这是不可能复制的。以比特币为例,单从电力方面来看,准确模拟一个实时网络就需要花费数百万美元。

 

其次,Web3 系统被设计成可组合的,也就是说它们可以像乐高积木一样组合在一起。举个简单的例子,为以太坊区块链设计的 ERC20 令牌标准可以转移到任何钱包中,ERC721 NFT 令牌标准也可以。这意味着开发人员可以编写智能合约,在去中心化的交易所创建一个衍生品,然后使用该衍生品在一个完全独立的储蓄协议上产生收入,然后使用产生的收入作为另一个协议的抵押品。这种相互依赖会使风险成倍增加,尤其是当关键组件出错时。

 

事实上,在这些开源协议上投入数千万美元也是一个风险——它就像是一个蜜罐。如果你看一下现有的捉虫赏金计划,有些奖励可能高得离谱,但如果一个成功的赏金猎人能够在漏洞被利用之前找到它,那么成本效益比就变得合理了。

 

例如,Layer2 网络 Polygon 最近向白帽黑客 Gerhard Wagner 支付了 200 万美元,因为他发现了一个漏洞。这似乎是一个令人难以置信的数字,但如果没有发现这个漏洞,8.5 亿美元的资金就会面临风险,当你知道了这个,会不会觉得这个赏金给得非常值(来源:Polygon双重支付问题修复评审——200万美元奖金)。

 

只要看一下赏金平台,如 ImmuneFi,就知道平台目前提供的奖励是什么:例如,Graph 协议中最严重的漏洞可获得 250 万美元,ChainLink 则可获得 500 万美元。

社区主导的测试

 

我强烈认为,测试人员应该参与制定赏金计划,并决定它们应该如何运行。关键在于你要么自己负责这个计划,要么与组织中负责这个计划的人密切合作。你还需要确定由谁来筛选 Bug 以及赏金猎人将如何与你的团队互动。关键是要让测试人员参与定义赏金计划的范围,这样就不会在不重要的问题上浪费赏金,并排除留给测试团队负责的区域。在可能出现边缘情况的领域或需要特定类型专业知识的领域,需要奖励漏洞赏金猎人。

 

例如,之前提到的 Compound 捉虫赏金计划特别提到,该计划针对的是为协议 Comptroller 实现提供的补丁(主要处理风险管理和价格预言)。这涉及专业的金融知识,所以吸引更多的人并从中找到具备这些技能的人是很有意义的。

捉虫赏金计划为测试人员带来的更多好处

 

测试人员还可以参与到他们组织之外的开源软件和捉虫赏金计划中,以此来增强他们的测试技能——甚至可能赚到一些额外的钱。

 

对于测试团队来说,这是一种与社区一起寻找 Bug 和练习 Mob 测试技能的好方法。最著名的平台是 HackerOne 和 BugCrowd,所以请去这些网站上看看有没有一些有趣的东西。走出你的舒适区,去测试一些你之前没有测试过的东西,这总归不是什么坏事。

 

如果你对 Web3 技术感兴趣,那就去 ImmuneFi 看看那里有哪些赏金计划。

彻底的开放性如何改进测试

 

彻底的开放性是一个正在流行的新概念——肯定有适用于测试的场景。2013 年,Anthony D Williams 和 Don Tapscott 在他们合著的“Radical open: Four Unexpected Principles for Success”一书中对这一概念进行了推广,他们认为开放透明为商业环境中的所有利益相关者带来了好处。

 

Andrew Knight 在最近发表的一篇关于开源测试的文章中强调了开源测试的好处:

 

开放透明建立了用户信任。如果用户能够看到测试是如何进行的,他们将对产品质量更有信心。如果他们能看一下活生生的文档,就能更好地使用产品。另一方面,开放透明也会让开发团队保持产品的高质量。

 

他说的不是赏金计划,但原则是一样的。这又回到了群众的智慧上来。参与评审软件及其使用方式的人越多,就越有可能使软件符合预期的目标。

 

作者简介:

 

Rhian Lewis 是一名软件开发者、作家和企业家,自 2013 年以来一直深入参与加密货币和 Web3 社区相关工作。她是 Boson 协议的开发者关系布道者,是由 Kogan Page 出版的《加密货币革命》一书的作者。

 

原文链接

Open-Source Testing: Why Bug Bounty Programs Should Be Embraced, Not Feared

 

2022-07-22 09:152907

评论

发布
暂无评论
发现更多内容

2022年中国全民健身发展白皮书

易观分析

行业分析 健身

基于ECS实现一分钟自动化部署【华为云至简致远】

科技云未来

自动化部署

基于华为云ModelArts的水表读数识别开发实践【华为云至简致远】

科技云未来

水表读数识别项目

mysql进阶(二十九)常用函数汇总

No Silver Bullet

MySQL mysql常用函数 8月月更

国产数据库的红利还能“吃”多久?

墨天轮

数据库 国产数据库

科创人·优锘科技COO孙岗:错误问题找不到正确答案,求索万物可视的大美未来

科创人

写给 Java 程序员的前端 Promise 教程

CRMEB

2022纯手工打造1700道Java高级工程师面试宝典(含面试题解析)

Java工程师

Java 面试 八股文

带你玩转“超大杯”ECS特性及实验踩坑【华为云至简致远】

科技怪咖

华为云服务之弹性云服务器ECS的深度使用和云端实践【华为云至简致远】

科技云未来

弹性云服务器ECS

阿里巴巴最新分享Spring Cloud核心笔记,全程实例讲解,通俗易懂

Java工程师

Java spring spring-cloud

Beetl使用记录

Geek_163f36

急了,Mysql索引中最不容易记的三个知识点通透了

知识浅谈

8月月更

*打卡—>什么是云数据库&&沙箱实验如何用python和数据库来爬虫?【华为云至简致远】

科技云未来

云数据库

10分钟快速入门RDS【华为云至简致远】

科技云未来

RDS

基于华为云弹性云服务器ECS(搭载openEuler的鲲鹏通用计算增强型)完成鲲鹏代码迁移工具实践【华为云至简致远】

科技云未来

鲲鹏服务器 弹性云服务器ESC

Taro小程序跨端开发入门实战

京东科技开发者

小程序 taro 开发 移动端

国内部分手机游戏开始显示用户IP属地

郑州埃文科技

游戏 手游 IP归属地

QCon 回顾 | Data Fabric:逻辑统一、物理分散

网易数帆

大数据 数据湖 降本增效 Data Fabric

APICloud AVM 封装日期和时间选择组件

YonBuilder低代码开发平台

安卓 低代码开发 多端开发

腾讯云产品可观测最佳实践 (Function)

观测云

华为云分布式缓存服务Redis开通及使用规划教程【华为云至简致远】

科技云未来

redis'

它们不一样!透析【观察者模式】和【发布订阅模式】

掘金安东尼

前端 设计模式 8月月更

Java泛型的继承场景

Geek_163f36

用完华为云会议解决方案,我直接卸载了之前的会议软件【华为云至简致远】

科技云未来

云会议产品

调研阶段复盘

Geek_XOXO

复盘

有了这个开源工具后,我五点就下班了!

IT学习日记

EasyExcel 签约计划第三季 seaweedfs文件系统 java excel导出导入 java csv导出导入

EMQ畅谈IoT数据基础软件开源版图,引领本土开源走向全球

EMQ映云科技

开源 物联网 IoT emq 8月月更

Qt下异步使用C++调用Python文件

Geek_163f36

一起来学华为云数据库,RDS实践【华为云至简致远】

科技云未来

云数据库

Grid 布局介绍

CRMEB

开源测试:测试人员应该拥抱而不是害怕捉虫赏金计划_软件工程_InfoQ精选文章