首頁(yè)>資訊 >
程序員挖“洞”致富:發(fā)現(xiàn)一個(gè)漏洞,獲賞 1272 萬(wàn)元 2022-02-14 20:53:16  來(lái)源:36氪

適合程序員的副業(yè)有什么?寫(xiě)文章、當(dāng)技術(shù)輔導(dǎo)、開(kāi)發(fā)小程序、接植發(fā)代言(bushi)…許多人通過(guò)這些副業(yè),長(zhǎng)年累月下來(lái),逐漸實(shí)現(xiàn)了理想中的“經(jīng)濟(jì)自由”。

在這之中,還有一種非常受歡迎的業(yè)余賺錢(qián)方式:“專(zhuān)找別人茬,獎(jiǎng)金自己掙”的漏洞賞金獵人。不論是國(guó)外巨頭如蘋(píng)果、微軟、谷歌等,還是國(guó)內(nèi)大廠如華為、阿里、騰訊等,均推出了各自的漏洞懸賞計(jì)劃,即開(kāi)發(fā)者搜尋軟件中的漏洞并將之上報(bào)廠商,便可獲得豐厚獎(jiǎng)勵(lì)。

而這個(gè)獎(jiǎng)金有多豐厚呢?近來(lái),iOS 越獄軟件 Cydia 之父 Jay Freeman 發(fā)現(xiàn)一個(gè)以太坊關(guān)鍵漏洞,獲得了 200 萬(wàn)美元(約人民幣 1272 萬(wàn)元)的巨額獎(jiǎng)金!

(注:Jay Freeman,著名軟件開(kāi)發(fā)人員,被譽(yù)為 iOS 越獄之父,開(kāi)發(fā)出了 Cydia 應(yīng)用商店,可使擁有越獄 iPhone 的用戶在 iOS 中下載未經(jīng)授權(quán)的軟件。)

創(chuàng)建無(wú)數(shù) ETH 代幣的漏洞

以太坊 Layer2 解決方案 Optimism 能夠大規(guī)模處理交易,同時(shí)還保有以太坊的安全性,原先僅適用于 Uniswap 和 Synthetix 等特定項(xiàng)目,后于去年年底宣布取消白名單機(jī)制:任何用戶都可以在 Optimism 上自由部署合約、構(gòu)建應(yīng)用程序。但近日,Jay Freeman 發(fā)布博客稱(chēng),他在 Optimism 的 Geth 分叉中發(fā)現(xiàn)了一個(gè)關(guān)鍵 Bug:攻擊者可借此非法創(chuàng)建無(wú)數(shù) ETH 代幣。

在這篇博文中,Jay Freeman 詳細(xì)描述了發(fā)現(xiàn)該 Bug 的歷程及 Bug 的利用方式:“這一 Bug 我愿稱(chēng)之為‘Unbridled Optimism’,它可能會(huì)被粗略認(rèn)為是‘橋’遠(yuǎn)端的一個(gè)漏洞,但實(shí)際上這是在 Optimism 上執(zhí)行智能合約的虛擬機(jī)中的一個(gè)錯(cuò)誤。利用這一 Bug,攻擊者可以訪問(wèn)‘橋’遠(yuǎn)端有效且無(wú)限數(shù)量的 tokens?!?/p>

Jay Freeman 明確指出,Bug 出現(xiàn)在以太坊 VM 中的 SELFDESTRUCT 指令。該指令用于合約自行銷(xiāo)毀,移除其賬戶對(duì)象,允許從區(qū)塊鏈的活動(dòng)集中快速清除潛在的大量“過(guò)時(shí)”狀態(tài)。當(dāng)合約進(jìn)行到 SELFDESTRUCT 指令時(shí),它會(huì)指定一個(gè)“受益人”來(lái)接收它當(dāng)前擁有的資金。該操作碼在 go-ethereum 的 EVM 中實(shí)現(xiàn)將余額添加給受益人,然后調(diào)用 StateDB.Suicide 將帳戶余額清零。

但 Jay Freeman 發(fā)現(xiàn),這一步既不使用 stateObject 的 setBalance 設(shè)置器,也不使用共享的 common.Big0 常量,也就是說(shuō)它除了將對(duì)象上的布爾值設(shè)置為 true 之外毫無(wú)作用,而這意味著“此時(shí)的合約仍然存在并繼續(xù)擁有它之前擁有的代碼!”

Optimism 團(tuán)隊(duì)在之后的報(bào)告中也指出:“該漏洞使得可以通過(guò)在持有 ETH 余額的合約上,反復(fù)觸發(fā) SELFDESTRUCT 操作碼以在 Optimism 上創(chuàng)建無(wú)數(shù) ETH 代幣?!?/p>

Bug 尚未被利用,需盡快修復(fù)

所幸,Jay Freeman 之后迅速于 2 月 2 日向 Optimism 團(tuán)隊(duì)報(bào)告該 Bug,而 Optimism 團(tuán)隊(duì)通過(guò)對(duì) Optimism 鏈歷史的分析,發(fā)現(xiàn)除了最初由 Etherscan 員工的一次意外觸發(fā)(那次沒(méi)有生成可用的多余 ETH),該漏洞至今還未被利用過(guò)。

對(duì)于此 Bug 的出現(xiàn),Optimism 團(tuán)隊(duì)解釋道:“這個(gè)錯(cuò)誤源于對(duì) go-ethereum 代碼庫(kù)的修改(旨在保持與舊 OVM 1.0 系統(tǒng)的向后兼容性)?!庇捎谶^(guò)去一年中 Optimism 用戶增長(zhǎng)了很多,相比早期發(fā)布過(guò)程只涉及少數(shù)關(guān)鍵基礎(chǔ)設(shè)施提供商之間的協(xié)調(diào),Optimism 團(tuán)隊(duì)表示如今發(fā)布的復(fù)雜性在急劇增加:代碼庫(kù)的橋接器、更多提供商、多個(gè)主網(wǎng)分支之間均有涉及。甚至即便發(fā)現(xiàn)了 Bug,Optimism 團(tuán)隊(duì)也不能立即發(fā)布明顯的補(bǔ)丁——他們不能冒著有人在升級(jí)之前對(duì)漏洞進(jìn)行逆向工程的風(fēng)險(xiǎn)。

在收到漏洞報(bào)告并確認(rèn)漏洞的幾小時(shí)內(nèi),Optimism 團(tuán)隊(duì)就對(duì)該 Bug 的修復(fù)進(jìn)行了測(cè)試,并部署到了 Optimism 的 Kovan 和 Mainnet 網(wǎng)絡(luò)(包括所有基礎(chǔ)設(shè)施提供商)。

Optimism 官方提醒,雖目前該 Bug 尚未被利用,但鑒于該 Bug 的重要性,許多易受攻擊的 Optimism 分叉和橋接提供商需引起重視,確保盡快升級(jí)至 0.5.11 版本的 l2geth。

漏洞賞金計(jì)劃,或許必不可少

從本次事件可以看出,漏洞賞金計(jì)劃對(duì)于許多大型項(xiàng)目來(lái)說(shuō)或許必不可少。正如 Optimism,逐年增加的用戶伴隨著愈發(fā)復(fù)雜的技術(shù),與此同時(shí)產(chǎn)生 Bug 的可能性也在日益提升,此時(shí)若僅憑數(shù)量有限的項(xiàng)目?jī)?nèi)部人員來(lái)搜尋 Bug 無(wú)疑十分艱難。

無(wú)私發(fā)現(xiàn) Bug 的人固然有,但適當(dāng)?shù)馁p金計(jì)劃顯然更能刺激許多開(kāi)發(fā)者尋找 Bug 的熱情與動(dòng)力,這或許也就是眾多大型科技企業(yè)或項(xiàng)目均發(fā)布了漏洞賞金計(jì)劃的原因:就在 Jay Freeman 公開(kāi)本次漏洞的同一天,MakerDAO 還推出有史以來(lái)最大的漏洞賞金,最高可獎(jiǎng)勵(lì)高達(dá) 1000 萬(wàn)美元。

不過(guò)不能否認(rèn)的是,漏洞賞金計(jì)劃也曾引發(fā)了一些爭(zhēng)議:

去年 9 月,向蘋(píng)果報(bào)告了 4 個(gè)零日漏洞的 Denis Tokarev 表示,依照蘋(píng)果安全賞金頁(yè)面,他所報(bào)告的漏洞的價(jià)值為 10 萬(wàn)美元,但蘋(píng)果拒絕支付。

無(wú)獨(dú)有偶,開(kāi)發(fā)者 Jose Rodriguez 此前也曾發(fā)推譴責(zé)蘋(píng)果:他所報(bào)告的漏洞估值超 2.5 萬(wàn)美元,最終卻只被獎(jiǎng)勵(lì)了 5000 美元。

那么,你對(duì)漏洞賞金計(jì)劃有何看法呢?

參考鏈接:

https://cointelegraph.com/news/makerdao-launches-biggest-ever-bug-bounty-with-10m-reward

https://www.saurik.com/optimism.html

https://optimismpbc.medium.com/disclosure-fixing-a-critical-bug-in-optimisms-geth-fork-a836ebdf7c94

本文來(lái)自微信公眾號(hào)“CSDN”(ID:CSDNnews),整理:鄭麗媛 ,36氪經(jīng)授權(quán)發(fā)布。

關(guān)鍵詞:

相關(guān)閱讀:
熱點(diǎn)
圖片 圖片