菠菜類DAPP已成黑客提款機?元兇竟然是它!區(qū)塊鏈
天下無不bug的程序,開源讓項目更透明,也給了技術高超的黑客以可乘之機。
區(qū)塊鏈,一直以透明、開源而聞名,也因此成為近兩年最受人關注的技術。有數據顯示,從2009年比特幣的源代碼公開后,平均每年有8600多個區(qū)塊鏈項目加入GitHub,開發(fā)者們的DAPP代碼開始大批量涌入。
被譽為明星項目的EOS,自從主網上線以來,就一直致力于DAPP生態(tài)建設,雖然在DappRadar上,EOS的DAPP數量遠不如以太坊的鏈上DAPP數量,但它的高擴展性被開發(fā)者們所認可,DAPP的數量和日活也在逐漸增加。
但天下無不bug的程序,開源讓項目更透明,也給了技術高超的黑客以可乘之機。
就在昨天,知名DAPP EOSDice被黑,造成了4633個EOS的損失。而僅在6天前,EOSDice就已經被黑掉過2545個EOS。
這已經是EOS DAPP本月第三次遭到黑客攻擊了。這一次的攻擊者是之前攻擊FFGame DAPP的黑客,攻擊手法也是由于使用了可控的隨機數種子。
上一次EOS合約競猜類游戲FFGame被攻擊之后,慢霧安全團隊經過技術復盤推測了整個攻擊過程:
攻擊者是通過部署攻擊智能合約,并且在合約中使用與FFGame相同算法計算隨機數,產生隨機數后立即在inline_action中使用隨機數攻擊合約,導致中獎結果被“預測”到,從而達到超高中獎率。
根據攻擊復盤,慢霧預警了該攻擊手法,并告誡開發(fā)者:不要引入可控或可預測隨機數種子,任何僥幸都不應該存在。
果不其然,這一次黑客使用了相同的攻擊手法,再次嘗到了甜頭,也給了開發(fā)者們警醒的一擊。
那么,這個“可控的隨機數種子”究竟是個啥?
我們都知道,隨機數是區(qū)塊鏈上運行智能合約的一個關鍵數值。用程序員的思維來看,只要你告訴我初始狀態(tài),我可以根據你每次給的輸入,預測出它的輸出。
這里我們不用了解太多技術層,我們只需要知道,假如想讓隨機數是不可預測的,那就必須保證隨機種子是不可預測的。
那么這個隨機數種子就需要從外界輸入。簡單打個比方,它可以是某個商品的銷量,也可以是計算機的系統(tǒng)時間。
但這些數據太過于簡單,非常容易被黑客預測到并加以使用,從而大幅提升自己在菠菜游戲里的中獎率,拿走獎金池里的獎金。
因此找到一個優(yōu)良的、不易被控制的隨機數種子,是現在所有菠菜類DAPP面臨的難題。
據DappRadar數據顯示,EOS上有118個DAPP,其中菠菜游戲類有60多個,幾乎占比了一半!一位資深DAPP開發(fā)者表示:“目前來看,區(qū)塊鏈第一應用就是賭博,其他應用,暫時還火不起來。”
因此對于菠菜游戲來說,智能合約是命脈,是靈魂,任何漏洞都有可能讓資金池中的資金被席卷一空。
目前菠菜類游戲的智能合約所參考的隨機數比較局限,可作為隨機種子使用的公開數據仍然比較少,且大部分都有可能被猜出來,因此暫時無法實現真正的隨機。
曾經有人提出用“EOS RAM的交易數據”或者“某活躍DAPP的公開數據”作為隨機數,但是被社區(qū)中的開發(fā)者給否定掉了。原因是這些變化無窮的公開數據依然存在著很大問題,并不能直接被使用——
1、過于依賴其他方數據,必須保證智能合約跟著別人的數據格式同步更新;
2、變化頻次時高時低,無法保證不間斷的不可預測性。
從近半年的新聞中可以得知,EOS DAPP的安全事件頻發(fā)。目前被報道的已經有FFGame、DEOSBET、EOS Happy Slot、FairDice、EOSDice,以及損失最為慘重的EOSBet。
我們會發(fā)現,EOS DAPP遭受攻擊的概率比以太坊DAPP高得多。這不外乎是以太坊DAPP開發(fā)模式已經趨向于成熟,內部安全性較為完整,復雜邏輯較少,因此漏洞范圍更低。
還有一個原因是,目前EOS的開發(fā)人員并不多,成熟的開發(fā)者就更少了。很多情況下,一個DAPP可能背后只有1-2個程序員,甚至連完整的測試人員都不存在。在這種情況下,漏洞出現的可能性就非常大,也更可能被攻擊。
多次的黑客攻擊和大額損失都證明了,EOS DAPP現在還是個寶寶,不足以說是一個具有完善保護機制的成熟應用鏈。
當然,這也是EOS DAPP發(fā)展壯大必須經歷的過程。提升其內部安全性,任重而道遠。
1.TMT觀察網遵循行業(yè)規(guī)范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創(chuàng)文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創(chuàng)的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。