DODO 聯合創始人雷達熊復盤眾籌池被攻擊事件
本文來自DODO,作者雷達熊。
有一篇廣為流傳的文章《以太坊:黑暗森林》。這篇文章裡,介紹了一種「泛用型交易機器人」。這種機器人會監聽已經被廣播,但還沒有上鏈的交易。一旦發現原交易是有利可圖的,就以更高的 gas 發送相同的交易,搶在原交易之前成交。
以太坊世界就像一片黑暗森林,遍布著這種機器人,你的一舉一動都被暗中觀察著。這聽起來是一個冰冷且無情的故事,但我們接下來要講的事情,充滿了溫暖和俠義。
我們犯了個錯誤
北京時間 3 月 9 日早上 8 點。
我接到了社區經理的電話,說我們的合約在凌晨 5 點被攻擊了。我立刻給技術團隊打電話查看具體情況。
隨後我們發現,資金池的初始化函數存在漏洞,可以被重複調用。攻擊者利用閃電貸將真幣借出,隨即通過重新對合約初始化將資金池代幣對替換為攻擊者創建的假幣,從而繞過閃電貸資金歸還檢查。
這不是負責審計的 Peckshield 的問題,而是我們在上線前,為了簡化代碼邏輯,進行了幾處修改,漏掉了一處權限控制。我們犯了個巨大的錯誤。
好在這一問題只影響了我們 V2 資金池的部分業務,交易模塊不受影響。而且只有項目方受影響,普通用戶沒有損失。
我們立刻開始補救。技術團隊在 15 分鐘內把所有還存在漏洞的資金都救了回來(大約 8w 美元)。隨後產品上封閉建池入口,運營端發公告,通知用戶和項目方事情的進展。
與此同時,我們統計了損失,大概 380w 美元價值的 USDT、ETH 和項目代幣。之後我們立即開始追查。
來自 samczsun 的好消息
北京時間 3 月 9 日早上 8 點半。
事發後半小時內,我收到了來自白帽 samczsun 的一條私信,說有一位不願透露姓名的神秘人士,我們暫且稱之為獵豹先生,「意外地獲得」了其中一筆價值 189w 美金的被盜資金,並委託 samczsun 告知願意全額歸還給我們。
獵豹先生到底是誰,到底如何獲得部分被盜資金,是否知曉剩余被盜資金的去向或線索?
扑朔迷離的事件過程
我們對攻擊事件進行分析後發現,共有兩個地址執行了攻擊,我們分別稱之為河馬先生 (0x368) 和羚羊先生 (0x355)。
河馬先生執行了兩次攻擊。其中 20w 美金進入了中心化交易所,我們立刻聯繫交易所凍結了。而另一筆 189w 美金,正好與獵豹先生要還給我們的金額一致。所以我們推測,河馬先生應該就是獵豹先生,他很可能是一個白帽黑客。
而羚羊先生,看起來也不是一個壞人,他的攻擊是通過「泛用型交易機器人」實現,花費了高達 90,000gWei 的 gasPrice 發送該交易,單筆交易的礦工費高達 8ETH。從鏈上線索來看,很有可能是羚羊先生的機器人自動搶跑了攻擊者河馬先生的交易,而羚羊先生可能還不知情!
這對我們來說又是一個好消息,如果能聯繫到羚羊先生,那麼這筆錢也有可能被追回。
謎團越來越大
北京時間 3 月 9 日晚上 21 點。
在等待了一天後,我們收到了獵豹先生的退款(189w 美元),同時收到了一條消息:獵豹先生不承認自己是河馬先生。
這下謎團變得更大了,在這次攻擊中至少存在三方勢力!而且,我們不知道獵豹先生如何獲得了河馬先生的資產。當時,我們唯一有機會能建立聯繫的是這位熟悉黑暗森林法則的獵豹先生。
雖然獵豹先生希望保持匿名,但我們還是通過 samczsun 和一些朋友,傳達了我們希望與獵豹先生建立直接聯繫的意圖。在等待了數個小時後,我在 telegram 收到了一條私信。
小小的世界
北京時間 3 月 10 日凌晨 1 點半
我萬萬沒想到,獵豹先生是我認識的老熟人。我在 2018 年就認識他,那時我還在 DDEX 做開發工作。我們會一起討論合約開發方面的問題。自我離開 DDEX 之後就失去了聯繫,而他也沒有想到我成為了 DODO 的創始合夥人。
獵豹先生告訴我,河馬先生是攻擊者。他把攻擊得來的錢轉到了一个合約裡,而這個合約寫出了漏洞,任何人都可以提幣。河馬先生在提幣時被獵豹先生的機器人搶跑了,從而「意外獲得了」這筆資金。
那麼剩余的被盜資金呢?正在我們商量如何能聯繫到羚羊先生時,他主動聯繫了我。
事情的全部
北京時間 3 月 10 日凌晨 3 點
羚羊先生以匿名的方式向我發了郵件,並表示願意歸還資金(價值約 120w 美元),我終於鬆了口氣,兩個最主要的部分都得到了歸還。並且,羚羊先生向我們透露了很多他監聽到的事件,讓我們終於得以看清事件的全貌。
(這裡我們沒有列出非常具體的 txHash,因為我們的朋友希望保持低調)
真正的攻擊者是河馬先生。
他執行了兩筆攻擊,但是都被羚羊先生的機器人搶跑了。
河馬先生非常沮喪,花了一點時間寫了個合約繞開羚羊先生的交易機器人,這次他成功了。資金落入了河馬先生的合約裡。
但是河馬先生從合約中提幣時,又被獵豹先生的交易機器人截胡了!羚羊先生和獵豹先生進行了一場 gas 大戰,最終獵豹先生勝出了。至此,河馬先生執行了 3 次攻擊,但一無所獲,全部被黑暗森林裡的機器人搶跑了!
隨後,河馬先生執行了兩次成功的攻擊,但數額都比較小,總共獲得了大約 20w 美元的收益。我們仍在追查這筆錢
最終,在攻擊事件發生後的 24 小時內,我們追回了被盜的 380w 美元中的 310w。
溫暖的黑暗森林
黑暗森林裡有很多獵手,但他們並沒有像大眾想象地那樣冰冷無情。有一些獵手是溫柔的大型食草動物,他們是黑暗森林裡的俠客,從黑客手中截獲了贓款並歸還給了受害者。
時至今日,仍然有很多人認為數字貨幣世界充滿了騙子和黑客,與非法交易、詐騙、維權這些字眼綁定在一起。但事實上,這片森林裡有很多不同的角色:DeFi 項目方、普通用戶、熱心的吃瓜群眾、武藝超群的套利機器人、實時保持警惕和中立的白帽、出手不一定穩準狠的業餘黑客、嫻熟的專業黑客 …..
他們共同形成了一個生態,這個生態有自己的公正和道義,每個參與者都或多或少地扮演了執法官的角色。對於誠實的開發者,這是一個溫暖的黑暗森林。
感謝大家
一方有難,八方支援。在被攻擊後我們得到了很多朋友的幫助,我很慶幸以太坊社區中有如此多的好人,他們在 DODO 最困難的時候施以援手,我們向以太坊社區的俠客義士致以最崇高的敬意。其中包括:
Peckshield 、慢霧、幣安安全團隊
samczsun 、Tina
1inch 、Tokenlon、Binance、Huobi、Etherscan
還有很多朋友的鼓勵與安慰,即使是競對,在這危急時刻也與我們站在一起。這讓我們感覺冰冷的代碼下隱藏著許多溫熱的東西,對誠實的褒獎、對公平的向往、對信譽的珍視。
番外故事
在羚羊先生歸還 vETH 前,他的機器人掉進了一個專門為他精心設計的蜜罐陷阱。
https://etherscan.io/tx/0xb081e1aaf4ea7d6b819fc0ffa8230586854130e6b7313fa23a0cc4509b8c3886
這一陷阱以 0.05ETH 為誘餌,騙取了 324 個 vETH,價值大約為 50w 美金。我們不知道誰設計了這個陷阱,可能是不甘心的河馬先生,也有可能是某個看熱鬧的觀眾。
最終羚羊先生慷慨地和我們共同承擔了這一損失。
另外一方面,有些研究者正在構建黑暗森林中的「傳送門」,如 MEV 研究機構 Flashbots 的 MEV-geth 基礎設施、星火礦池的太極等。這些「傳送門」將交易發送者與礦池直連,基於隱私交易設計及對交易排序規則優化,可以避免交易被搶跑。