菠菜類DAPP已成駭客提款機?元兇竟然是它!

買賣虛擬貨幣

區塊鏈,一直以透明、開源而聞名,也因此成為近兩年最受人關注的技術。有資料顯示,從2009年比特幣的原始碼公開後,平均每年有8600多個區塊鏈專案加入GitHub,開發者們的DAPP程式碼開始大批次湧入。

被譽為明星專案的EOS,自從主網上線以來,就一直致力於DAPP生態建設,雖然在DappRadar上,EOS的DAPP數量遠不如以太坊的鏈上DAPP數量,但它的高擴充套件性被開發者們所認可,DAPP的數量和日活也在逐漸增加。

但天下無不bug的程式,開源讓專案更透明,也給了技術高超的駭客以可乘之機。

就在昨天,知名DAPP EOSDice被黑,造成了4633個EOS的損失。而僅在6天前,EOSDice就已經被黑掉過2545個EOS。

這已經是EOS DAPP本月第三次遭到駭客攻擊了。這一次的攻擊者是之前攻擊FFGame DAPP的駭客,攻擊手法也是由於使用了可控的隨機數種子。

上一次EOS合約競猜類遊戲FFGame被攻擊之後,慢霧安全團隊經過技術覆盤推測了整個攻擊過程:

攻擊者是透過部署攻擊智慧合約,並且在合約中使用與FFGame相同演算法計算隨機數,產生隨機數後立即在inline_action中使用隨機數攻擊合約,導致中獎結果被“預測”到,從而達到超高中獎率。

根據攻擊覆盤,慢霧預警了該攻擊手法,並告誡開發者:不要引入可控或可預測隨機數種子,任何僥倖都不應該存在。

果不其然,這一次駭客使用了相同的攻擊手法,再次嚐到了甜頭,也給了開發者們警醒的一擊。

那麼,這個“可控的隨機數種子”究竟是個啥?

我們都知道,隨機數是區塊鏈上執行智慧合約的一個關鍵數值。用程式設計師的思維來看,只要你告訴我初始狀態,我可以根據你每次給的輸入,預測出它的輸出。

這裡我們不用瞭解太多技術層,我們只需要知道,假如想讓隨機數是不可預測的,那就必須保證隨機種子是不可預測的。

那麼這個隨機數種子就需要從外界輸入。簡單打個比方,它可以是某個商品的銷量,也可以是計算機的系統時間。

但這些資料太過於簡單,非常容易被駭客預測到並加以使用,從而大幅提升自己在菠菜遊戲裡的中獎率,拿走獎金池裡的獎金。

因此找到一個優良的、不易被控制的隨機數種子,是現在所有菠菜類DAPP面臨的難題。

據DappRadar資料顯示,EOS上有118個DAPP,其中菠菜遊戲類有60多個,幾乎佔比了一半!一位資深DAPP開發者表示:“目前來看,區塊鏈第一應用就是賭博,其他應用,暫時還火不起來。”

因此對於菠菜遊戲來說,智慧合約是命脈,是靈魂,任何漏洞都有可能讓資金池中的資金被席捲一空。

目前菠菜類遊戲的智慧合約所參考的隨機數比較侷限,可作為隨機種子使用的公開資料仍然比較少,且大部分都有可能被猜出來,因此暫時無法實現真正的隨機。

曾經有人提出用“EOS RAM的交易資料”或者“某活躍DAPP的公開資料”作為隨機數,但是被社羣中的開發者給否定掉了。原因是這些變化無窮的公開資料依然存在著很大問題,並不能直接被使用——

1、過於依賴其他方資料,必須保證智慧合約跟著別人的資料格式同步更新;

2、變化頻次時高時低,無法保證不間斷的不可預測性。

從近半年的新聞中可以得知,EOS DAPP的安全事件頻發。目前被報道的已經有FFGame、DEOSBET、EOS Happy Slot、FairDice、EOSDice,以及損失最為慘重的EOSBet。

我們會發現,EOS DAPP遭受攻擊的概率比以太坊DAPP高得多。這不外乎是以太坊DAPP開發模式已經趨向於成熟,內部安全性較為完整,複雜邏輯較少,因此漏洞範圍更低。

還有一個原因是,目前EOS的開發人員並不多,成熟的開發者就更少了。很多情況下,一個DAPP可能背後只有1-2個程式設計師,甚至連完整的測試人員都不存在。在這種情況下,漏洞出現的可能性就非常大,也更可能被攻擊。

多次的駭客攻擊和大額損失都證明了,EOS DAPP現在還是個寶寶,不足以說是一個具有完善保護機制的成熟應用鏈。

當然,這也是EOS DAPP發展壯大必須經歷的過程。提升其內部安全性,任重而道遠。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;