原文地址:https://dmshagov.github.io/Economics-of-the-Bug-Bounty-Hunting/
大家好!这是本人第一次公开探讨自己对漏洞赏金的看法,所以,请容在下先简要的自我介绍一下。
我叫Dmitriy,从2016年开始,就踏上了全职的漏洞赏金之路。2015年夏天,我遇到了Hackerone网站,当时,正是我的广告技术初创公司陷入困境的时候。实际上,我一直对网络安全抱有很大的兴趣,不过,那时挖洞只是一项业余爱好,不过偶尔也会收到一些赏金。到2015年底,我放弃了自己的创业之梦,打算先休息几个月,然后决定下一步要做什么。在接下来的几个月里,没想到自己的挖洞技能竟然突飞猛进,于是,我注册了Bugcrowd和Synack网站,并参加了Mark Litchfield组织的250k挑战赛(这要特别感谢Mark!),并意识到其实我可以靠挖洞为生。
实际上,挖洞是一项非常不错的活动,通过它可挑战我们自己的智力。一直以来,智力挑战才是我从事这项活动的动力源泉(我希望将来也是)。一旦成功搞定某个超级棘手的漏洞,会给人带来难以言表的成就感。不过在这篇文章中,我主要想谈谈挖洞的另一面——经济回报。
漏洞赏金是一个主要面向个人的领域。对于个人来说,衡量经济回报的指标主要有两个,即收入(以$为单位)和小时工资($Rate=$/hr)。
每个经验丰富的漏洞赏金猎人都有自己判断哪些赏金活动值得关注、哪些项目不值得投入时间的方法。
那我们怎么判定哪个赏金活动值得参与呢?这里的关键指标是小时工资。当然,赏金活动和平台只会根据我们提交的安全漏洞的质量来付费,而不管我们花费了多少时间。然而,挖洞是一个随机过程,因此,我们只有在花费大量时间后,才能评估出从事某些赏金活动的小时工资。但是,您可以凭直觉(或者参考其他赏金活动)估计从事某项赏金活动的$/hr值,并据此判断是否值得参与。
因此,收入的计算公式为:
收入 = $Rate * 小时数量
很明显,我们可以投入的小时数量是有限的,但是$Rate却可以在很大范围内浮动。
作为一名赏金猎人,影响$Rate的因素有哪些呢?为了简单起见,这里只讨论最重要的三个因素:
1.找到漏洞的概率
2.漏洞的赏金数目
3.撞洞的概率。
具体的计算公式如下所示:
$Rate = SUM (找到漏洞的概率漏洞的赏金数目 (1 - 被骗的概率))
其中,SUM表示当前正在寻找的所有漏洞类型的总和。
每个全职的漏洞赏金猎人都梦想着能够达到$29k/hr级别的小时工资。因此,要想成功(这里是从经济收入的角度来说的),我们需要最大化自己的小时工资指标。
在知道上述公式之后,具体该怎么做就不言自明了:
1.挖掘具有最大漏洞赏金期望值的程序/位置/漏洞类型(漏洞赏金期望值 = 找到漏洞的概率 * 漏洞的赏金数目 )。
2.将撞洞的概率降至最低。
漏洞赏金的期望值等于找到漏洞的概率*漏洞的赏金数目。
所以,理想的漏洞赏金活动至少需要具备两个条件,一是赏金要有吸引力,二是容易找到漏洞。但是,理想很丰满,现实很骨感:赏金越有吸引力,就越难挖到漏洞。因此,如果我们依据这两个指标来选择要参与的赏金活动的话,收入的波动就会非常大,例如,7月收入为5千美元,8月收入为5万美元,9月收入为0美元——刺激不刺激,惊喜不惊喜?!
因此,如果您更喜欢稳定的收入,不妨寻找奖金水平处于中游的活动/漏洞,因为对于这些活动/漏洞来说,挖掘到漏洞的机会往往会更大一些。
当然,这个漏洞奖金期望值的计算公式也无法保证放之四海而皆准,因为总会存在一些特殊情况。
想象一下,您被邀请参加一个接收各种类型的漏洞的赏金活动,其中:
那么,我们应该关注哪些类型的漏洞呢?如果让我来选的话,我肯定会选择存储型XSS——因为找到这种类型的漏洞的概率通常远高于找到RCE漏洞的概率。就这里来说,找到反射型XSS的概率应该是最高的,但是它的赏金只是存储型XSS漏洞的四分之一。最重要的是,这时撞洞的概率将是最高的。
例如,对于Verizon Media的赏金活动来说,通过查看他们的赏金表,我相信其中的SSRF/XXE漏洞就属于这种情况。
对于常见的赏金活动来说,一切都非常简单:
1.查找竞争不太激烈的领域(例如那些有门槛的,需要购买订阅的领域等)
2.查找竞争不太激烈的活动
3.专注于竞争不太激烈的漏洞类型(很明显,CSRF撞洞可能性,要远远高于RCE)
如果您可以访问已经提交的漏洞列表,那么事情将会有很大的转机。换句话说,这可以大大降低撞洞的几率。
从事漏洞赏金猎人一年之后,我曾经做过一个统计,结果发现在H1平台上面报告的30%洞是重复的,在Synack平台上撞洞的概率不到10%。
为了简单起见,我们前面只讨论了3个参数,即找到漏洞的概率、漏洞的奖金数目以及撞洞的概率。但是,除此之外,还要考虑其他方面的各种因素:
I. 挖到N/A或OOS(超出范围)漏洞的概率。
如果连到底要挖掘什么样的漏洞都不太清楚的话,那么很可能就是在浪费时间。
II. 赏金到手的概率。
赏金活动总是有可能会因为忽略您的报告、活动结束或者其他原因而拒绝付费。
III. 被邀请参加赏金活动的机会。
您可能会收到之前参与过的赏金活动发来的邀请。有时候,这可能意味着为了收到一份诱人的邀请,需要提前在某些赏金活动上倾注一些时间,不过,就$Rate而言,当时这些活动可能并非最佳选择。
在这方面,我就有过一个深刻的教训。由于之前我参与过两次H1-702漏洞赏金活动,所以后来又收到了他们的邀请。根据之前的经验,虽然在这个平台上找到过几个漏洞,但就小时收入来说,吸引力并不是很大。因此,我估计今年也是如此,所以就没有接受邀请。您猜猜怎么着?今年他们举办了有史以来最“丰盛”的一次漏洞赏金活动:)
有时你会陷入这样的两难境地:自己一直在参与某个活动,已经坚持了几个月,并且报酬也很不错,但时不时会收到新的邀请。这里的主要问题是,如果没有参与其间并至少提交一份报告的话,我们是很难评估一个新活动的。
这种情况在数学上被称为多臂老虎机问题。事实证明,最好将90%的时间花在具有最佳薪酬的活动上,然后拿出10%的时间去探索和评估新的目标,该方法可以最大限度提高我们的收入。
这是我的第一篇博客文章,希望能得到大家的反馈。大家可以在twitter上联系我@dmi3sh,随时恭候您的佳音。