程序员要是通过“漏洞赏金计划”(网络公司给予报告其安全漏洞的程序员以现金奖励)来谋生,就好比普通人把玩德州扑克当生活来源,这难度可不低。麻省理工出版的《网络安全新解决方案》,其中一个章节《修复漏洞:漏洞的劳动力市场》摆出数据说明,通过“漏洞赏金计划”赚钱很难。赏金计划和财富分配以及其它社会学现象一样,都遵循帕累托分布(指极少的人口拥有大部分财产)的规则。数量最多、质量最高的安全漏洞报告来自于很少一部分程序员,当然赏金计划的绝大部分奖金也由他们获得。而剩下的大部分参与者只能瓜分很少比例的奖金。
《修复漏洞》并没有鼓励软件公司通过赏金计划来改进它们的安全系统。HackerOne是一个进行该计划的公司,它宣称已经有超过30万人签署了帮助其提高安全性的协议。有30万双眼睛仔细查看你的代码,这听起来是不错,可是这个数字也包括僵尸帐户和那些从来没有发现过漏洞的人。实际上,只有少数顶级程序员才能发现漏洞并因此获得现金回报。
对此,有外媒表示,对于公司来说,不会把自己的网络安全只寄希望于一个高效的程序员,而且还不知道他是否能有足够的业余时间为公司工作。
那为什么不干脆聘请这些网络安全高手来公司做安全顾问呢?《修复漏洞》的作者认为,应该用赏金计划来激励程序员中的精英。如果该计划只针对受邀程序员,对于管理琐碎的、不重要的、重复的漏洞,可以降低其运营成本。(只有4-5%来自谷歌、Facebook和GitHub对公的赏金计划才有奖金。)据作者说,为数不多的优秀漏洞猎人是不可或缺的人才,也是他们才有能力推动赏金计划这个市场的发展。基于此,在可控制的条款和条件下雇用他们来做安全顾问似乎更实际。
数据正在动摇漏洞赏金计划
在书中,Facebook资助的独立研究人员仔细研究了以下两个漏洞赏金计划的数据:1)61个HackerOne项目,覆盖周期超过23个月;2)Facebook项目逾45个月的数据。HackerOne数据组包括来自Twitter、Square、Slack、Coinbase、Flash等的奖励程序。HackerOne数据组的能够跨项目跟踪用户名,但Facebook数据组不能。
▲上表:参与者、出售额、Facebook(45个月)/ HackerOne(23个月)奖金;下表:平均出售额及相应人员数量
寻找漏洞的高手不仅仅只参与一个赏金计划。这批顶级选手横扫多个项目,通过不同的技术售卖他们发现的漏洞。此外,价值最高的关键性漏洞也是由这批程序员发现报告的。平均而言,1%的顶级程序员向约5个不同的赏金计划报告漏洞。
书中涵盖了一些平均数值:程序员的平均出售额、平均收入、平均交易额。在分析赏金分布的过程中,这些平均值不可取。例如:如果一组有90个人时薪10美元,另一组有10个人时薪1000美元,平均值就是时薪109美元,但这样的平均值不能反映出两组的差异化收入水平。
令人惊讶的是,书中竟没有体现这种差异。作者发现,当人群分层时,不同群体的差异很说明问题。而对于表现最好的那5%的程序员,他们的许多信息却被省略了。
我们试图重组图表以说明问题:在赏金计划中有一小群多产的参与者。数据集越大,这种趋势越明显。在HackerOne和Facebook的全部数据集中,报告10个以上漏洞的人占7%,共计报1622个漏洞,而其余93%的人一共报告了2523个漏洞。
最出色的程序员被混为一谈,一起归入“发现10个以上漏洞”的组别。其实这个群体还应该继续细分。HackerOne数据中,排名前1%的人(6名参与者)报告161个漏洞,Facebook数据中排名前1%的人(7名参与者)报告274个漏洞,这1%的程序员平均每人报告27个和39个漏洞!即使在收入最高的顶级程序员中也可能存在分层现象,但目前没有更详细的数据,所以高手群体如何分层还是个谜。
前1%的人虽多产,但总体收入并不高。Facebook数据中排名前七的参与者平均每月报告0.87个错误,平均年薪为34255美元,比密西西比害虫防治工人赚的还要少一点。
对于HackerOne数据组中排名前六的人来说,情况更糟。平均每月报告1.17个漏洞,而平均年收入只有16544美元。可是,《修复漏洞》的注释部分出现了两个异常数据,一个提到谷歌的赏金计划(Chromium Rewards Program)为单次漏洞报告竟然支付了6万美元,另一个是Facebook项目的一名参与者在21个月内挣了183000美元,即平均年收入104000美元。
看到这里心都凉了吧,即便已经算是1%的高手,赏金计划的收入也实在不可观,不过很有可能参与赏金计划只是这些程序员的副业而已。程序员如果很擅长找到一些关键漏洞,然后设置扫描程序和警报,静待相关的赏金计划上线,这也是不错的买卖。找漏洞,提交证据,然后赚钱,再找下一个漏洞。
赏金计划外是否有更优选择?
谁是最优秀的漏洞赏金猎人,他们的背景是什么?他们因何脱颖而出?数据没法给出这些问题答案,但作者提出了三种可能性:不断提高的职业技能、天赋、专业人士和业余爱好者的差异。(一些表现最好的猎人可能来自于同一个账户下的团队协作,也可能是擅长几种关键漏洞类型的个人,在新项目启动时,他们会密切关注较容易的目标。)无论他们是谁,这些都是不可或缺的人才,应当鼓励他们加入漏洞赏金计划。为此,作者提出了三个方案:
1.通过不向公众开放的仅限邀请的项目,保持人才池的排他性。这确保了最有才干的程序员不必与其他相对较弱的选手竞争,可以独揽奖金。
2.漏洞报告若连续有效,则应该提高赏金价格,以防止程序员转向其它项目。
3.向有才华的研究人员提供资助,即使没有发现漏洞也要支付酬劳。
这些建议和请咨询公司进行代码审计没有太大区别。此外,对参与者而言,一个仅限邀请的赏金计划项目面临着“先有鸡还是先有蛋“的悖论:当程序员还没有机会建立专业声誉时,如何得到网络公司的邀请?而且,人们没有意识到,进行赏金计划其实风险不小,不可控因素也不少。
鉴于目前市场竞争激烈,赏金计划的经济情况一片混乱。可利用的零日漏洞(指被发现后可以立即被恶意利用的安全漏洞)可以从合适的买家那里获得高达数百万美元的收益。任何人发现一个关键漏洞,他都可以选择不报给供应商,而是尝试以更高的价格出售给其他人。书中建议,重点应该放在如何激励黑客把漏洞直接报给供应商,但到底该如何实施书中没有提到。目前没有证据表明,漏洞攻防双方谁出价更高,程序员就把发现的漏洞信息卖给谁。我们认为,是否把漏洞报给供应商更多的是一个道德问题。
那么,现在谁会被激励去参与赏金计划呢?有两个群体:一个是经济上相对弱势的国家的国民,他们可以利用美元汇率牟利;另一个是学生群体,可以借此提升网络安全技能和学习行业工具。读了《修复漏洞》之后,我不认为行业精英有足够的动力参加漏洞赏金计划。或许这些人应该运用自己的力量向市场提出更多的要求。
本文由LinkNemo爬虫[Echo]采集自[https://www.ithome.com/0/406/340.htm]