1. 程式人生 > >Fomo3D二輪大獎開出,黑客獲獎,機制漏洞成遊戲沒落主因

Fomo3D二輪大獎開出,黑客獲獎,機制漏洞成遊戲沒落主因

北京時間 9 月 24 日深夜 11 點 32 分,Fomo3D 第二輪最終大獎由地址 0x18a0 獲得,獎金為 3,264.668 Ether。安比(SECBIT)實驗室分析發現,此輪遊戲獲獎技巧與第一輪如出一轍,均為黑客“阻塞交易”攻擊。

與此前第一輪遊戲相比,這輪遊戲持續 33 天,無論是從入場資金、持續時長,亦或是最終大獎獎金額來說,相比上輪均大幅縮水。

回首兩月之前,Fomo3D第一輪遊戲入場資金一度超過 40,000 Ether,第一輪遊戲最終大獎獎金額超過 10,000 Ether,遊戲參與者眾多,類似的資金盤遊戲也如雨後春筍般相繼冒出,一時間好不熱鬧。

然而,自 9 月以來,隨著市場整體的大蕭條,類 Fomo3D 遊戲也幾近沒落。以 Fomo3D 和 Last Winner 為代表的幾款較活躍的遊戲,熱度明顯下降。而大部分的同類合約由於無人開啟下輪遊戲,都處在擱置狀態。

因而到如今,Fomo 3D第二輪大獎已經開出,黑客獲獎幾無懸念,遊戲的熱度已不可同日而語。

安比(SECBIT)實驗室針對這一變化展開分析,分析結果表明,不久前連續揭露的遊戲空投機制漏洞[1]和“阻塞交易”攻擊事件[2],儘管在短時間內將該類遊戲的關注度推上了新的高度,但本質上也是導致遊戲沒落的主要原因。

繁華 vs 涼涼? 曾經多火爆,如今就多冷清

遊戲熱度全景 7 月 20 日, 資金盤遊戲 Fomo3D 在國內迅速傳播開來,引起了廣泛的關注。隨後,一系列類似 Fomo3D 的遊戲陸續上線。8 月 6 日,另一款類 Fomo3D 遊戲 Last Winner 部署上線。在其團隊的大力推廣下, Last Winner 迅速火爆起來,甚至一度造成以太坊擁堵和 Gas 費用暴漲。但在遊戲第一輪結束後,各個遊戲的熱度都開始持續下降。 圖一:Fomo3D 玩家參與度與入場資金狀況

圖一:Fomo3D 玩家參與度與入場資金狀況

上圖展示了「Fomo3D 玩家參與度與入場資金狀況」。紅色代表呼叫合約參與遊戲的人次,藍色則代表進入遊戲合約的資金量。圖左側出現數據曲線最高峰,對應時間分別是 7 月 20 日和 7 月 21 日。這兩天恰好大量媒體瘋狂報道 Fomo3D 這一現象級遊戲。當時眾多玩家跟風入場,遊戲合約的參與次數和入場資金均達到了最高峰,入場資金量超過 40,000 Ether,而參與次數最高超過 18,000 次。而曲線的最高點則對應著 Fomo3D 遊戲第一輪最高峰。

高峰過後,Fomo3D 遊戲熱度驟降,於 8 月 22 日前後結束第一輪,並隨即進入第二輪,但遊戲熱度已然無法恢復。 圖二:Last Winner 玩家參與度與入場資金狀況

圖二:Last Winner 玩家參與度與入場資金狀況

類似地,上圖展示了「Last Winner 玩家參與度與入場資金狀況」。Last Winner 針對 Fomo3D 遊戲做了部分修改,降低了遊戲時間上限,因此每輪結束得更快。第一輪高峰出現在 8 月 8 日,此後有多個區域性波峰,代表著不同輪次的開啟,但顯然呼叫次數和入場資金一輪不如一輪。

獎池資金 下圖為 Fomo3D 合約中 Ether 餘額的變化情況。Fomo3D 遊戲在迅速火爆後,合約內 Ether 餘額一度上升到峰值,第一輪遊戲結束後,合約中的餘額立即呈斷崖式下跌,至今還處在緩慢減少的過程。 圖三:Fomo3D 合約 Ether 餘額變化狀況 圖三:Fomo3D 合約 Ether 餘額變化狀況

無獨有偶,Last Winner 合約中的餘額也曾在短時間內迅速增長,而後隨著幾輪遊戲的迭代而逐步下降,至今所剩的餘額更是不足 5,000 Ether。 圖四:Last Winner 合約 Ether 餘額變化狀況 圖四:Last Winner 合約 Ether 餘額變化狀況

最終大獎 8 月 17 日,安比(SECBIT)實驗室與 Anchain.ai 團隊聯合揭露了黑客團隊 BAPT-LW20 利用空投機制漏洞,攫取大量獎金的攻擊事件。同一天,Last Winner 遊戲第一輪結束,最終大獎的獲得者也是 BAPT-LW20 團隊。據統計,該黑客團隊從 Last Winner 首輪遊戲中獲利累計達 12,948 Ether。

在 Last Winner 已完成的前 9 輪遊戲中,黑客團伙持有的賬戶 0x5167 共奪得 4 次最終大獎。 在這裡插入圖片描述 仔細觀察每輪遊戲的最終大獎金額和持續時間,不難發現,獎金數量衰減非常快,而每輪也結束得越來越快。這與上面的遊戲參與資料圖十分吻合。

類似地,Fomo3D 遊戲首輪和第二輪大獎分別於 8 月 22 日和 9 月 24 日開出,獎金額分別為 10,469.66 和 3,264.66 Ether。除了獎金數額銳減之外,安比(SECBIT)實驗室還發現大獎獲得者均使用了相同的攻擊技巧。

反思 機制漏洞是遊戲沒落的主因

除了市場萎靡以及玩家熱情降低,安比(SECBIT)實驗室認為“阻塞交易”攻擊(針對最終大獎)[3]和空投漏洞攻擊[4]打破了合約機制設計中的關鍵部分。這才是使遊戲變冷的主要原因。 圖五:Fomo3D 遊戲合約被攻擊狀況 圖五:Fomo3D 遊戲合約被攻擊狀況

上圖是「Fomo3D 遊戲合約被攻擊狀況」,第一輪遊戲高峰前後以及第二輪開始後,有黑客瘋狂地利用空投漏洞進行攻擊,攫取高額收益。而在第一輪臨近結束,以及第二輪倒計時快結束之際,有黑客瘋狂嘗試“阻塞交易”攻擊,目標在於奪取鉅額的最終大獎。

北京時間 9 月 24 日深夜 11 點 32 分,Fomo3D 第二輪最終大獎由地址 0x18a0451Ea56Fd4FF58f59837e9EC30f346ffDCa5 獲得,獎金達 3,264.668 Ether。安比(SECBIT)實驗室發現 Fomo3D 第二輪大獎獲得者 0x18a0 建立了攻擊合約 0x705203fc06027379681AEf47c08fe679bc4A58e1,併發起大量攻擊交易,連續堵塞 10 餘個區塊,時間長達 2 分鐘以上。這一系列攻擊,在上圖的遊戲被攻擊監控資料中展露無疑。 圖六:Last Winner 遊戲合約被攻擊狀況 圖六:Last Winner 遊戲合約被攻擊狀況

上圖是「Last Winner 遊戲合約被攻擊狀況」,與 Fomo3D 類似,黑客攻擊規模在遊戲熱度高時十分巨大。

“阻塞交易”攻擊 Fomo3D 遊戲巧妙地設計了一個環節,最後一個參與遊戲的人將獲得獎池中一半的 Ether 做為獎勵。開發者想通過此設計保持大量的玩家陸續進場,任何人都有可能成為那個“幸運兒”。但是在黑客利用“阻塞交易”攻擊[5]來加快遊戲結束成為受益人後,這個吸引玩家的設計被打破了。因此後進場的普通玩家只能成為被割的韭菜,自然很難再吸引玩家參與。

“空投漏洞”攻擊 除了最後的大獎,遊戲中還設計了空投獎勵機制,玩家有一定的概率獲得空投獎勵,這也是吸引玩家參與的一個重要原因。但是由於空投機制存在隨機數漏洞,黑客可以通過一定的技巧持續高概率地拿走獎勵,而普通玩家幾乎不可能成功。這樣空投獎勵的公平性也同樣受到了挑戰。

對策與展望 dApp 還有很長的路要走

這樣一類紅極一時的爆款遊戲,必定會成為 dApp 遊戲發展史上的一個重要里程碑。但是過快的蕭條速度也給我們帶來了很多的反思。對於類 Fomo3D 遊戲,甚至是所有的 dApp 遊戲,還有很長的路要走。要及時從黑客攻擊的案例中吸取教訓,並做好防禦措施。

“空投漏洞”攻擊是類 Fomo3D 遊戲遭受攻擊次數最多的一個破綻。黑客可低成本持續地攫取獎池中的資金。

一方面,Fomo3D 遊戲的空投機制利用隨機數來控制中獎概率,但是由於隨機數的來源都是區塊或者交易中特定的一些公開引數,如交易發起者地址、區塊時間戳、區塊難度等,所有以太坊智慧合約都可以很容易的預測隨機數[6]。因此在涉及到隨機數的場景下,安比(SECBIT)實驗室建議開發者應尤為慎重,或通過一定的手段來增加隨機源的預測難度。如開發者可通過使用多次提交再披露、或延遲若干個區塊開獎的方法來規避隨機數被預測的風險。

另一方面,為了防止合約自動化攻擊,Fomo3D 遊戲合約對呼叫者是普通賬戶還是合約賬戶做了檢測,但由於檢測方式存在漏洞,黑客可以利用一些技巧繞開檢測。因此專案方在對參與 dApp 遊戲的玩家的身份做檢測的時候,也應採用更加可靠的方式。例如,通過判斷該筆交易最初的發起者(tx.origin)與當前合約的呼叫者(msg.sender)是否為同一地址。

前文提到的“阻塞交易”攻擊,也是類 Fomo3D 遊戲面臨的另一重大挑戰。

黑客通過高額手續費吸引礦工優先打包,並利用合約自動判斷遊戲進行狀態,以之作為是否採取攻擊的依據。黑客最終能夠以較低成本堵塞區塊,每個區塊中僅打包很少的交易(降低他人交易被打包的可能性),使得遊戲快速結束,並提高自己獲得最終大獎的概率。

其實這一問題不止會威脅類 Fomo3D 遊戲。所有類似機制,即需要玩家搶在某個時間範圍內完成某種競爭操作的智慧合約,都會受此威脅。要杜絕這一問題,安比(SECBIT)實驗室建議遊戲開發者,從遊戲機制入手,切斷遊戲最終勝利(獲得某個鉅額大獎)和倒計時結束(最後一個交易被打包)之間的必然聯絡,從而使黑客的攻擊獲利概率和攻擊意願都降到最低。

類 Fomo3D 遊戲中黑客利用了以太坊共識協議的特點,找到遊戲機制的漏洞進而發起攻擊。這也提醒我們,dApp 應用中的機制設計是一項極其複雜的工程,除了技術本身,還涉及到平臺外部環境,博弈論等方面問題,這也是容易被黑客攻擊的環節。因此,dApp 專案在機制設計過程中應尤為慎重。

正如安比實驗室創始人郭宇所說:“新世界有生命,就有捕食者。有交易者,就有黑客。區塊鏈上的應用在進化,攻擊者也同樣”。在技術和財富的交匯處,黑客永遠保持著最靈敏的嗅覺。黑客的一次次攻擊,給了我們很多的反思和改進的機會,這也是應用不斷進化的催化劑。

本文由安比(SCBIT)實驗室提供,安比實驗室致力於解決區塊鏈全生態的安全問題,共建共識、有序、可信的區塊鏈經濟體。