累計薅走數百萬,EOS Dapps已成駭客提款機?

買賣虛擬貨幣
導讀:本文盤點了近期EOS Dapps上影響較大的安全事件以及漏洞解讀,同時以開發者的角度對EOS生態和“Code is Law”進行點評,嚴格執行Code is law,會增加使用者監督門檻,開發者故意埋下漏洞的行為也難以譴責追訴。而過分的人治,又會成為民粹的溫床,打擊開發者審計合約的動力。自主網上線以來,一場最大型的 EOS 合約漏洞攻擊正在上演且追隨者無數,涉及到的專案包括 EOSBet、newdex 等眾多頭部專案,專案方累計損失 11萬個 EOS(約價值人民幣400萬)。目前尚不能判斷這一系列事件是由一人還是多人所為,主要涉及到的賬號包括:"guydgnjygige", "imeosmainnet", "iloveloveeos", "aabbccddeefg"及眾多疑似小號,如"chinasichuan", "cityhangzhou", "cityhongkong", "guangxichina", "guydgnjygige", "lloolloolloo", "meadwestvaco", "nbcuniversal", "ooooo11ooooo", "shunwanggame", "sichuanchina", "surveymonkey", "wolframalpha", “slowmistsafe", "helloboy1234"...第一個中招的遊戲 - https://luckyos.io/ 主要涉及到的駭客賬號"guydgnjygige"。該賬號建立於6月9日,最初以0.0001 EOS的小額轉賬附帶Memo(注:一般的EOS轉賬必須填寫發起方和接收方賬戶名,MEMO作為備註資訊是選填的。)打廣告的形式,推廣一款叫EOS Game World的山寨FOMO3D的遊戲。https://gameworldeos.github.io/ 該網站現已停運,網站的社交媒體連結已導向 dapp.pub。後期該賬號主要投注各類骰子、樂透類菠菜專案,並透過預測各專案的隨機數產生,產生收益。

8月27日,Luckyos旗下的石頭剪刀布遊戲被成功攻破。

該駭客找到了剪刀的隨機數產生規律,於是透過持續在指定時間出石頭,來贏得獎勵,並指出有38%的概率獲勝。

自此,該駭客對破解其他菠菜遊戲產生了濃厚的興趣,不斷的嘗試挑戰破解新的遊戲,並透過小額轉賬Memo指點了http://rollgame.github.io的開發者。

(EOS區塊瀏覽器截圖)

(http://rollgame.github.io 遊戲截圖)

第二個中招的遊戲 - DEOSBET

10日,駭客又利用類似的漏洞,攻擊了DEOSBET,並且連續贏了 24 次,累計接近 2.4 萬美元。


第三個中招的遊戲 - EOS Happy Slot

https://happyeosslot.com/

主要涉及到的駭客賬號imeosmainnet 。

另一名賬號為 imeosmainnet 的駭客對Happy Eos Slot 老虎機專案的攻擊是在9月12日凌晨,利用重放攻擊(Replay Attacks,這種攻擊會不斷惡意或欺詐性地重複一個有效的資料傳輸),導致專案方損失了5000個EOS。

攻擊方法是駭客首先賭了較小的金額,並在 transfer 方法中加入了鉤子開關,transfer 過程可以被駭客預留的鉤子中斷,所以 reveal 被卡死,當 reveal 被卡死時候,並且這時候 bet 是仍然可以被呼叫的,重放攻擊就成立了。駭客選擇預設關閉開關,當檢測到得到五倍以上的開獎金額之後,就再發一筆數額較大的金額,並開啟開關,從而每一次都可以獲得數倍的回報。

由於 happyeosslot 使用了一種新的智慧股權協議,專案的盈虧會直接作用在幣價上,在收到駭客攻擊之後,happyeosslot 的企業經營係數也是隨之降低到了 0.1。

有趣的是,老虎機小遊戲 https://www.luckywith.me/slots大部分參考了Happy EOS Slot的合約程式碼,而在Happy家被駭客imeosmainnet攻擊的前兩個小時,Lucky家突然暫停了旗下的老虎機專案。Lucky家的官方解釋是EOS主網節點波動嚴重,等主網穩定後再開放。直至發稿,Lucky家的老虎機仍未重新上線。

而駭客 imeosmainnet 非法獲得了EOS之後,立刻轉入了fcoin交易所。駭客的最初幾筆資金來自火幣和zb兌換中心。但從記錄表明,並未看出 imeosmainnet 與 guydgnjygige 的關係,可以猜測,這兩個賬號背後是不同的人。

該專案目前已經重新上線。

第四個中招的遊戲 - FairDice

https://dapp.pub/dice/

主要涉及到的駭客賬號iloveloveeos 。

繼Happy家失竊,一眾程式設計師正誇讚dapp.pub旗下的FairDice的程式碼並潛心學習的時候,突然發現駭客也開始對Fairdice下手,並已成功了幾筆。

這一次攻擊的手法也是重放攻擊,由於 FairDice 的隨機數演算法和時間相關,因此多次同一筆下注在不同時間開獎可以獲得不同的結果,駭客正是利用了這一點,拒絕了所有失敗的開獎結果,從而可以讓自己的下注總是獲勝。


https://www.reddit.com/r/eos/comments/9f5o6a/dapppubfairdice_version_2_is_back_an_opensourced/

Fair的程式碼增加了安全機制,每次獲勝的金額不得超過合約獎池的 1%,並且我們發現及時,立即 Call 醒了開發者,才沒有讓損失繼續擴大。

第五個中招的遊戲,也是損失最慘重的 - EOSBet

主要涉及到的駭客賬號aabbccddeefg 。

EOSBet是建立在EOS上的一個擲骰子的DApp, 被攻擊時在DAppRadar上排名第四。七日交易量約860萬EOS,交易筆數137萬餘筆。

(圖片來源:DappRadar)

就在被攻擊前的幾個小時,EOSBet在Twitter推文公佈,稱該專案將要達到210萬的交易筆數。

EOSBet專案尚未開源,卻也難逃離攻擊。9月14日上午11點左右,aabbccddeefg 在未進行投注的情況下,卻以中獎的方式, 在20多分鐘的時間內,贏得了4.2萬個EOS(總價值約為150萬人民幣)及投注產生的1千多個平臺代幣BET。

據分析,EOSBet被攻擊,是因為程式碼中並沒有檢查收到的EOS是不是eosio.token產生的EOS,駭客透過自己建立的名字同為EOS的“假幣”,套取了真的EOS。


在獲得了EOS之後,駭客分別給guydgnjygige和cctvworldcup兩個賬號各轉賬了1萬個EOS。

第六個中招的遊戲 - EOS.win/dice

隨後相同手法又被用在了 EOS.win上,導致各專案方產生驚恐,紛紛關閉了自己的專案。

第七個中招的是去中心化交易所- newdex

主要涉及到的駭客賬號oo1122334455 。

9月14日下午兩點,EOS賬戶“oo1122334455”用同樣方法發行了10億個EOS假幣,分配給了dapphub12345賬戶,再由dapphub12345轉賬給了iambillgates賬戶,並利用假EOS掛單進行幣幣交易,委託買入IPOS、BLACK、IQ、ADD,並轉給xx1234512345和x12345x12345,最終由xx1234512345將非法得來的Token掛單賣得4千多個EOS,並充值到Bitfinex。

整個駭客攻擊事件最無奈的便是,作為一個去中心化的交易所,在遭遇了假幣之後,不得不透過中心化的手段來強制下架了交易對。此次事件,共造成了Newdex使用者11803個EOS損失。


賬戶安全提醒

事件發生後,大家紛紛透過轉賬時的Memo,給駭客賬號留言致敬或蹭駭客賬號熱點來發布小廣告。

更有詐騙賬號假裝EOSBet官方,不斷的向駭客賬號發出索賠要求。


(EOS區塊瀏覽器截圖)

圖中EOSBet的賬號為eosbetdice11, 而eosbetdlcell 用l來代替i和1來以假亂真。切記不要轉賬到此類釣魚賬戶。

點評EOS生態

EOS自主網上線兩個多月以來因其TPS超越各大主流公鏈而受到dapp開發者的青睞。EOS上的dapp數量也呈現井噴式增長。EOS公鏈本身的安全性,以及合約開發如何設計安全規範,也越來越引起開發者的重視。

“擲骰子”可以視作 dapp 開發的最小可用模型,而這次駭客攻擊事件,將 EOS 開發者生態不健全的問題翻到了檯面。如果這類 dapp 的安全性都不能保證,大家暢想的 killer dapp 更是無從談起。目前 EOS 上幾乎每一個類似專案都受到了不同程度的攻擊。一方面是 EOS 合約的表達能力較強,使得很多開發者對可能存在的漏洞缺乏全面的考慮,另一方面是開發者剛剛進入這個領域,缺少必要的安全攻防經驗。EOS 合約開發者們各自為陣,大部分專案方為了安全起見選擇不開源,而實際的結果只能是掩耳盜鈴。駭客往往能夠根據 wasm 和 abi 檔案還原出合約的資訊,很多時候封閉的程式碼只會隱藏自己的錯誤反而給駭客可乘之機。EOS 上目前也缺乏一些類似 ERC20 和 OpenZepplin 這樣的標準庫,來給開發者提供一些合約設計上的參考。

作為 EOS Dapp 開發者,不僅要自掏腰包購買 ram,頻寬,辛苦踩坑。合約上線後還面臨著被使用者維權,被駭客薅,被 BP 丟塊。最後還可能面臨著被 BM 降維打擊的風險(EOS Bank 所提供的服務就直接被官方加入進了rex 裡)。可以說是生態中最苦逼的一波人。

截止目前,駭客還有一些攻擊手法沒有被完全揭示,駭客可能還留藏著一些底牌,等待專案做大之後再使用,以下是我們總結的一些給 Dapp 開發者的忠告:

1、跟隨社羣的忠告,當友商被攻擊時及時 update 資訊,確認自己的合約是否有類似的漏洞。

2、新增風控功能,防止駭客在短時間內盜取大量 EOS。

3、總是使用 defer transcation,阻止駭客的鉤子攻擊。

4、種子只使用一次,避免被重放攻擊。

EOS核心仲裁法庭(ECAF)

EOS在社羣治理方面與以太坊等區塊鏈有很大的不同,率先建立了仲裁法庭機制來服務於社羣,作為社羣的日常管理。當出現爭議時,社羣成員便可以向ECAF提出訴求,等待社羣仲裁。

仲裁員通常由社羣公民投票任命,而撤銷仲裁員的任命需要三大權力機構(BP、社羣、法庭)中的兩方批准方可執行。一般情況下一個案件僅指定一名仲裁員,而特殊情況則需由一名高階仲裁員領導的三人小組進行審理。

任何社羣成員都可以線上上提交仲裁申請,https://eoscorearbitration.io/file-a-claim/,並按照案件涉及的損失金額來支付仲裁費用。目前法庭裁決過的申請主要為盜取賬號進行非法轉賬,申請人需要提供自己擁有該賬號的證明,其他賬號進行了非法轉賬的證據。這類案件尚不能直接追回損失,法庭的裁決只是對非法賬號進行凍結,所有BP不再執行與該賬號相關的任何操作。

所有案件中,大家最關心的便是前段時間出事的區塊鏈遊戲EOS狼人殺了,該專案團隊於7月26日及7月29日分別釋出了兩個宣告,聲稱被駭客eosfomoplay1非法盜取60686.4190 EOS,並建議中獎者guztknrygqge透過EOS核心仲裁法庭申請仲裁。該事件一直被外界認為是狼人殺團隊監守自盜的行為,認為eosfomoplay1的駭客賬號屬於狼人殺團隊。


(狼人殺團隊公告)

該案件在ECAF的案件編號是#ECAF00000339,緊急處理的結果是所有BP不再執行eosfomoplay1賬號以及與其公鑰私鑰相關的任何交易,即凍結該賬號,等待案件的進一步審查。

截止目前,該賬號非法所得的EOS依舊凍結在其中,理論上講,如果證據確鑿,且ECAF透過裁決,判斷這筆EOS應轉入給受害者,是可以追回的。只不過目前尚未有過成功追討的案例。

另一個例子是,Happyeosslot 就曾經將合約抵押貸款refund返回的eos當成是開獎,從而給 eosio.stack賬戶開出過一筆大獎:

https://github.com/EOSIO/eos/issues/5480

Code is Law?

程式碼是專案的骨架和齒輪,儘管各個專案的目標或許是做最公平的Gambling、或許是為了盈利賺大錢;儘管各個專案對外有著明確的玩法規則,但撥開外衣,最本質客觀的規則還是執行在各個節點機器上的程式碼。

從道德上來講,駭客攻擊了專案合約轉走了“非法”所得;但從程式碼這一“規則”角度,駭客的攻擊,也可以視作合約所允許的一種“玩法”,駭客精妙地發掘了"裡メニュー(隱藏選單)",並贏得了“獎勵”。

“立法”總會落後於現實。規則是死的,而人總是會犯錯,因此我們需要累積前人智慧作為指導。

由於程式碼的知識門檻,嚴格執行Code is law,會增加使用者監督門檻,開發者故意埋下漏洞的行為也難以譴責追訴。而過分的人治,又會成為民粹的溫床,打擊開發者審計合約的動力。

從整個公鏈的利益考慮,此次的駭客攻擊,雖然慘痛,但仲裁法庭不應該干涉,而是應該敦促制定一套安全標準,規範未來專案的開發;也讓ECAF真正成為生態的重要一環。

我們一直希望開源能夠讓世界變得更好,這是因為我們相信透明的機制的力量,相信透明的規則能夠讓信任的成本降到最低,讓合作的效率變得更高。而基於客觀規則的行為,如果因此受到懲罰,那麼無疑會助長更多對規則的破壞和不公正的行為。但我們也支援在現在生態還處於比較原始的階段,仲裁法庭利用自身的專業知識一起構建更安全的規則,維護廣大使用者群體的利益,讓EOS公鏈的生態變得更好。


更多區塊鏈遊戲資訊:


免責聲明:

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

推荐阅读

;