「獨家」獲利能力超千台礦機,攻擊者利用Fomo3D兩天薅了近60個ETH

「独家」获利能力超千台矿机,攻击者利用Fomo3D两天薅了近60个ETH

Fomo3D過去的一週內賺足了噱頭,一場光明正大的“龐氏”遊戲瘋狂吸金,在鏈得得此前的報道中提到“Fomo3D的開發者,是對生態有深刻理解的現實主義者。Fomo3D鼓勵黑客去黑掉智能合約,來證明以太坊有多脆弱。”Fomo3D核心成員Justo直指v神:“我已經發現了可以毀滅以太坊虛擬機(EVM)的‘核武器漏洞’。”詳情請見《【鏈得得獨家】龐氏遊戲”Fomo3D的真實意圖:黑掉脆弱以太坊》。

開發者雖然狂妄,但是卻被看作是足夠聰明的人。不過,以太坊基金會的核心成員peter szilagyi在twitter上表示,Fomo3D的空投機制要被智能合約自身存在的漏洞戲弄了。

「独家」获利能力超千台矿机,攻击者利用Fomo3D两天薅了近60个ETH

來源:peter szilagyi的twitter


鏈得得注:Fomo3D玩家購買的key金額高於0.1ETH時,有機會獲得空投。例如,文字顯示:“下次購買0.1ETH時有5%的機會獲得一個ETH !”空投的ETH直接打入你的投注地址。接收空投的機會從0%開始,每一筆超過0.1ETH總額的Key訂單會增加0.1%的幾率。。

但是由於智能合約本身的漏洞,羊毛黨可以準確捕捉到這個“隨機數”,從而在投入很小的前提下獲得將近100%的空投。PeckShield研發總監吳家志告訴鏈得得作者,這是一個成功薅羊毛的案例。世界上是做不到完全隨機的,通常是利用時間當作種子計算出一個相對隨機數,但是在區塊鏈中可以預測到這個“相對隨機數”。

吳家志說:“每一個智能合約的運作必然發生在某一個塊中,塊的時間可以運算出,加上FoMo3D計算種子裡使用的錢包地址,可以被偽造成可預測的合約地址,所以可以把小概率事件變得很大。”

Fomo3D在合約的最初設定中把“投注者的錢包地址”放到監測名單,他們知道地址可以生成很多,但是攻擊者不可能用不同的地址去測試、押注空投的獎池,這是一個成本非常大的事情。而這個事件中最核心就是Fomo3D在判斷錢包地址中存在的差錯,這也是Peter關注到的地方。

Peter作為跟隨V神多年的以太坊核心成員,他十分了解以太坊的技術架構。攻擊者可以通過把錢包地址當作隨機計算的部分來避開Fomo3D的判斷。吳家志告訴鏈得得作者,設計Fomo3D的人沒有想到,在其合約的airdrop函數中,產生隨機數的種子是通過當前塊信息(例如,第1416行的timestamp、第1417行的difficulty等)和msg.sender一起計算出來的(隨機變得不隨機),攻擊者可以在攻擊airdrop函數之前在合約中預先計算出結果(必然會開獎)。

如果能夠得到一個針對當前airDropTracker_的可用種子,攻擊者總是可以使airdrop函數返回true(第1424行),從而在正確時間點實施“薅羊毛”行動。(合約地址可以不停嘗試新的合約地址,試到可以時便可進行精準投注,這樣就會確保一定能得到空投,其隨機性就遭到抑制,所以就會變得很像挖礦)。如下圖:

「独家」获利能力超千台矿机,攻击者利用Fomo3D两天薅了近60个ETH

Fomo 3D的airdrop函數

PeckShield研究人員觀察到,攻擊者通過利用Fomo3D的空投機制在兩天時間內薅了近60個ETH。這種獲利能力,可以比擬1000臺以上GPU顯卡礦機的挖礦能力。最關鍵的是這個行為沒法制止,如果有好的編程能力,這是一個比挖礦還容易的“賺錢”方式。

事實上,在Fomo3D推出之後,市面上頓時出現大量的以FOMO Short、FOMO Lightning和RatScam等為代表複製版Fomo3D。他們也僅是對Fomo3D的合約進行了複製,所以都會存在這樣的問題。

攻擊者發起的事務

但這種漏洞既然存在,為什麼無法停下來?PeckShield吳家志告訴鏈得得作者,基於智能合約的遊戲一旦運轉起來就無法更改,除非有一天沒人繼續玩了,遊戲會按照合約設定停下來。不過,Fomo3D遊戲現在炙手火熱,很多玩家投注不少在其中,且獎勵池金額不斷刷新,在鉅額獎勵誘惑下,每個人都在爭搶做最後一名投注者,所以暫時還看不到停下來的可能。

更多精彩內容,關注鈦媒體微信號(ID:taimeiti),或者下載鈦媒體App


分享到:


相關文章: