【獵云網(微信號:ilieyun)】1月19日報道 (編譯:一晌貪歡)
程序員要是通過“漏洞賞金計劃”(網絡公司給予報告其安全漏洞的程序員以現金獎勵)來謀生,就好比普通人把玩德州撲克當生活來源,這難度可不低。麻省理工出版的《網絡安全新解決方案》,其中一個章節《修復漏洞:漏洞的勞動力市場》擺出數據說明,通過“漏洞賞金計劃”賺錢很難。賞金計劃和財富分配以及其它社會學現象一樣,都遵循帕累托分布(指極少的人口擁有大部分財產)的規則。數量最多、質量最高的安全漏洞報告來自于很少一部分程序員,當然賞金計劃的絕大部分獎金也由他們獲得。而剩下的大部分參與者只能瓜分很少比例的獎金。
《修復漏洞》并沒有鼓勵軟件公司通過賞金計劃來改進它們的安全系統。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. 向有才華的研究人員提供資助,即使沒有發現漏洞也要支付酬勞。
這些建議和請咨詢公司進行代碼審計沒有太大區別。此外,對參與者而言,一個僅限邀請的賞金計劃項目面臨著“先有雞還是先有蛋“的悖論:當程序員還沒有機會建立專業聲譽時,如何得到網絡公司的邀請?而且,人們沒有意識到,進行賞金計劃其實風險不小,不可控因素也不少。
鑒于目前市場競爭激烈,賞金計劃的經濟情況一片混亂。可利用的零日漏洞(指被發現后可以立即被惡意利用的安全漏洞)可以從合適的買家那里獲得高達數百萬美元的收益。任何人發現一個關鍵漏洞,他都可以選擇不報給供應商,而是嘗試以更高的價格出售給其他人。書中建議,重點應該放在如何激勵黑客把漏洞直接報給供應商,但到底該如何實施書中沒有提到。目前沒有證據表明,漏洞攻防雙方誰出價更高,程序員就把發現的漏洞信息賣給誰。我們認為,是否把漏洞報給供應商更多的是一個道德問題。
那么,現在誰會被激勵去參與賞金計劃呢?有兩個群體:一個是經濟上相對弱勢的國家的國民,他們可以利用美元匯率牟利;另一個是學生群體,可以借此提升網絡安全技能和學習行業工具。讀了《修復漏洞》之后,我不認為行業精英有足夠的動力參加漏洞賞金計劃。或許這些人應該運用自己的力量向市場提出更多的要求。