黑客又雙叒叕從EOS提款了!這項逆天技能究竟是怎麼發動的?

昨日凌晨,安全公司PeckShield的安全盾風控平臺DAppShield監測到,EOS競猜類遊戲Crazy Dice遭到了黑客攻擊,損失了上千枚EOS。對於Crazy Dice被攻擊的新聞,似乎沒有人關心了,因為近幾個月以來,EOS的DApp頻繁遭黑客攻擊,大家已經見怪不怪了,甚至有人戲稱:EOS已經徹底成為了黑客的提款機。

肖恩注意到,跟EOS.Win、FarmEOS、影骰、LuckBet、GameBet、EOSDice、STACK DICE、等多款遊戲一樣,黑客採用的都是交易阻塞攻擊。那麼,攻擊者是如何發動交易阻塞攻擊的呢?

1、 利用隨機數算法漏洞。

Crazy Dice、影骰、EOS.Win等被攻擊的DApp都是競猜類遊戲,遊戲者玩這類遊戲,需要猜一個數值,如果猜的數值跟遊戲“隨機”產生的數值一樣,那麼就能中獎。比如,我們玩骰子游戲,我們先猜一個點數,如果搖出的點數跟我們猜的點數一樣,那麼就能中獎。

我們現實中搖骰子,是真的在搖,搖出的點數確實是隨機的,而線上的搖骰子游戲,並不是真的在搖,它需要先設計一個隨機數,通過隨機數來生成搖出的點數。既然是事先設計的,那麼這組隨機數就不能稱為真正的隨機數,而是偽隨機數,它們可能存在著某種規律。黑客通過特殊手段,破解了隨機數算法,進而能夠預測出開獎結果。

破解隨機數算法,是交易阻塞攻擊的重要一環。

2、交易阻塞攻擊的原理

交易阻塞攻擊是指攻擊者阻攔其他正常的交易被打包確認,而自己的交易能夠正常打包確認,從而實現最終中獎的目的。

具體實現原理是這樣的:在EOS中,一般的交易請求會先發送給 API節點,API節點處理後,再由超級節點進行打包出塊。不過,EOS系統允許在正在執行的交易裡發送延遲交易(指定未來某個時間執行的交易),這樣可以繞過API節點的驗證,直接加入到等待超級節點驗證的隊列中去。

攻擊者在下注時,會發起大量的延遲交易,這些延遲交易會直接加入到等待超級節點驗證的隊列中,也就是說這些延遲交易會在開獎交易之前執行。同時,攻擊者通過破解隨機數算法預測開獎結果,如果中獎就取消其他延遲交易,讓開獎交易正常被執行,也就是讓自己中獎。如果不中獎,就不取消其他延遲交易,讓超級節點繼續執行其他延遲交易,從而將遊戲的開獎交易“擠”到下一個區塊中,只要延遲交易足夠多,攻擊者遲早會中獎。

舉個通俗的例子來說明。某超市為吸引大家去消費,舉辦了一個搖骰子抽獎活動,於是大家在超市消費後都去排隊參加。假如規定,舉辦方每10秒會搖出一個點數,搖中點數6就可以獲得獎品,同時規定,每一張消費單可以參與一次。肖恩去超市購買了大量1元的商品,結賬時分批結算,獲取了大量消費單。輪到肖恩抽獎時,如果剛好搖到點數6,則拿獎走人,如果不是點數6,就繼續拿消費單抽獎,這會讓排在肖恩後面的人沒有參與抽獎的機會,直到肖恩中獎。

值得一提的是,交易阻塞攻擊並不只是在EOS上發生過,以太坊的DApp同樣遭受過這類攻擊,去年異常火爆的以太坊遊戲Fomo3D ,第一輪、第二輪的獎金都是黑客通過交易阻塞攻擊拿走的。


分享到:


相關文章: