掃碼下載
BTC $77,123.96 +1.25%
ETH $2,314.98 +2.08%
BNB $623.42 +0.23%
XRP $1.38 +0.34%
SOL $84.19 +1.04%
TRX $0.3232 -0.07%
DOGE $0.1070 +8.55%
ADA $0.2489 +1.40%
BCH $452.34 +1.32%
LINK $9.27 +0.99%
HYPE $40.04 +0.67%
AAVE $95.69 -0.46%
SUI $0.9228 +0.47%
XLM $0.1618 -0.03%
ZEC $331.29 -0.34%
BTC $77,123.96 +1.25%
ETH $2,314.98 +2.08%
BNB $623.42 +0.23%
XRP $1.38 +0.34%
SOL $84.19 +1.04%
TRX $0.3232 -0.07%
DOGE $0.1070 +8.55%
ADA $0.2489 +1.40%
BCH $452.34 +1.32%
LINK $9.27 +0.99%
HYPE $40.04 +0.67%
AAVE $95.69 -0.46%
SUI $0.9228 +0.47%
XLM $0.1618 -0.03%
ZEC $331.29 -0.34%

回顧 Indexed Finance 被盜案:數學奇才攻陷 DeFi 平台

核心觀點
Summary: 一名18歲的研究生利用 Indexed Finance 代碼漏洞牟利,引發了一個至今震撼著區塊鏈社區的法律難題,此人仍下落不明。
ChristopherBeam
2022-09-29 09:01:55
收藏
一名18歲的研究生利用 Indexed Finance 代碼漏洞牟利,引發了一個至今震撼著區塊鏈社區的法律難題,此人仍下落不明。

撰文:Christopher Beam

翻譯:翻譯公會 tanghul ,The SeeDAO

時間是 10 月 14 日。地點位於英格蘭利茲附近的一間房子。手機響起的時候,勞倫斯 • 戴正坐在沙發上享用炸魚薯條晚餐。簡訊來自他在 Indexed Finance 的一位同事。這是個加密貨幣平台,用來創建可以代表其它若干幣種的代幣,相當於一個指數基金,只不過是在區塊鏈上。這位同事發來的是一張最近交易記錄的截圖,後面跟著個問號。「要是不理解這東西,你可能會說'這筆交易可真不賴'。」戴說。但是他是個行家,這張圖足以讓他警覺:一位用戶以極低的價格大量買入某些代幣,這本來是不可能的。出大事了。

戴跳了起來,把食物碰翻了一地,跑進臥室給 Indexed 的創始人之一狄龍 • 凱勒打電話。6 個時區之外,奧斯汀附近。凱勒正坐母親家的客廳裡拆一台 DVD 播放機,試圖拯救裡面的激光頭。他拿起電話,聽到戴上氣不接下氣地解釋說平台受到了攻擊。凱勒回憶道:「我只說了一句,'什麼?'」

image 戴 攝影師:彭博商業週刊 Joanne Coates

他們拿出筆記本電腦,一頭扎進平台代碼裡。幾位熟悉的朋友也趕來幫忙,戴的貓咪芬尼(以比特幣先驅哈爾 • 芬尼的名字命名)爬上了他的肩頭以示支持。Indexed 建立在以太坊上,這是一個記錄著交易細節的公共賬簿,它意味著攻擊記錄也在上面。準確搞清楚到底發生了什麼得花上幾周時間,但明擺著的是,平台被耍了,以至於用戶手裡的代幣價值被嚴重低估,以極低的折扣賣給了攻擊者。加在一起,肇事者總共帶著價值 1600 萬美元的資產逃之夭夭。

凱勒和戴止住了損失,修復了代碼來防止進一步攻擊,隨後開始面對公關噩夢。平台的 Discord 和 Telegram 頻道裡,代幣持有者們浮想聯翩、罵聲不絕,有的則怪罪團隊、索要賠償。凱勒在 Twitter 上向 Indexed 的數百名用戶道歉,為他未能發現漏洞承擔責任。他寫道:「我算是搞砸了。」

現在的問題是誰發動了攻擊,以及他們是否會歸還資金。大多數情況下,利用加密平台漏洞進行攻擊都被認為是內部所為,除非能證明另有其人。「在默認情況下,人們總是會問,'誰幹的?為什麼開發團隊要這麼做?'」戴說道。

攻擊發生後的第二天早上,戴正試著睡一會兒,突然意識到有個貢獻者有一陣子沒動靜了。幾周前,一個用戶名叫 UmbralUpsilon(匿名在加密社區是一種標準做法)的程序員在 Discord 上聯繫了戴和凱勒,說要搞出個能讓平台更高效的 bot 機器人。他們同意了,還發過去一筆啟動費用。凱勒說:「當時我們希望他或許能成為一個固定貢獻者來著。」

考慮到他們討論的內容範圍,戴本以為攻擊發生之後 UmbralUpsilon 會幫他們一把,或者至少表示同情。但是,什麼都沒有。戴調出了他們的聊天記錄,發現只有他那部分對話還在,UmbralUpsilon 已經刪掉了自己的信息,而且還改掉了用戶名。「這讓我一骨碌就下了床,」戴說。

他把自己的懷疑告訴了團隊。接下來的幾天裡,他們在網上仔細搜尋攻擊者的數字蹤跡。他們發現,攻擊中用於轉移代幣的以太坊錢包,與最近一場黑客比賽中某個參賽者用來收取獎金的錢包有關聯,而這名參賽者有時自稱 UmbralUpsilon。他們調出此人的註冊信息,看到它鏈接到合作編碼平台 GitHub 上的一份個人檔案。

創建這份 GitHub 檔案的人使用的是以"amedjedo"開頭的電子郵件地址,域名則屬於安大略省一所公立學校的董事會。戴和同事還發現,一個維基百科編輯的用戶名和 Github 上的這個人很接近。這位編輯曾修改過加拿大一項頗受歡迎的高中生智力競賽的頁面,在"校友"一欄中添加了一個名字:"Andean Medjedovic,著名數學家"。剩下的活兒就交給谷歌了。直到最近,Medjedovic 還是安大略省滑鐵盧大學的一名碩士研究生,就讀於數學專業。簡歷顯示他對加密貨幣感興趣。

整個團隊鬆了一口氣。通常,網絡攻擊者的身份一旦被確認,會歸還資金換取一筆保全顏面的賞金,再獲得個"白帽黑客"的榮譽。戴與 UmbralUpsilon 聯繫,提出只要他安全歸還代幣,就可以獲得 10% 的獎勵。戴還心不甘情不願地稱讚了句「幹得好」,但他沒有得到回覆。然後,凱勒嘗試了另一個策略,他給 Medjedovic 發信息,直呼其名"Andean"。這一次 Medjedovic 有了反應。他在 Twitter 上公開嘲諷 Indexed 的用戶:「你們被場外交易騙了。你們對此無能為力……這就是加密貨幣。」還有一名團隊成員給 Medjedovic 單獨發郵件說,如果退回代幣將付給他 5 萬美元。Medjedovic 回了個以太坊地址鏈接,並留言:「把錢轉過來。」他們沒有上當。令人震驚的是,他們發現這個帶來許多折磨的人還只有 18 歲。

最後,在不得不請出律師和警察之前,凱勒給 Medjedovic 發了條簡訊做最後一次懇求。他寫道:「懇求你現在放棄,讓自己好過一點。」這名少年的回覆是「Xdxdxd」(表示狂笑的表情符號),外加一句,「祝你好运。」

image 凱勒 攝影師:彭博商業週刊 Cindy Elizabeth

當初創建 Indexed 時,凱勒和聯合創始人把它設想成 DeFi 的進步。基於區塊鏈的 DeFi 運動(去中心化金融),旨在為借貸、資產交易和投資組合管理提供一種更自動化、更少中介的運作方式。一些支持者對 DeFi 持有實用主義觀點,認為它是對傳統金融的改進,省去了那些抽取費用的中間商和行動遲緩的人工決策。另一些人則更加自由主義,認為 DeFi 是現有體制之外的一處桃源,是規避政府或大型公司強加的規則和限制的一個渠道。此外還有一些懷疑論者,他們認為這一切都是騙局。

自稱「很進步」的凱勒完全屬於實用主義陣營。23 歲時,他覺得計算機科學課程沒有教給他任何新東西,於是從德克薩斯大學達拉斯分校輟學。凱勒隨後創辦了 Indexed 平台,試圖解決一個問題:如果一個人想交易加密貨幣,但又覺得每天管理投資組合很麻煩,該怎麼辦?

在傳統金融領域,如果投資者想平衡持有多種股票,可以通過購買指數基金將買賣股票的日常工作交給投資組合經理去做。凱勒著手在區塊鏈上創建一個類似的機制,但是由算法來驅動交易。指數基金經理會維護一個由指數類股票的標的資產構成的投資組合,而 Indexed 的算法則為每個指數代幣維護一個標的代幣構成的「資產池」。用戶可以將一種或所有標的資產注入池中,以換取一個指數代幣------這個過程被稱為「鑄幣」。同樣,用戶也可以通過將指數代幣注入池中來「銷毀」它,以換取一種或所有標的資產。另外,就像指數股票型基金(ETF)一樣,用戶可以在 Uniswap 等去中心化交易所買賣指數代幣。

指數基金的形式多種多樣,每一種都使用不同的投資策略。有些指數是市值加權指數,比如標準普爾 500 指數:如果該指數內的某隻股票價格上漲,則該股票在投資組合中的價值占比也會相應上升。另一些指數基金,則尋求保持各支股票間的固定占比。例如,如果你想讓微軟的股票一直占投資組合的 20%,那麼當微軟股票的價格上漲了,投資組合經理就會賣出一些,以保持其 20% 的權重。

凱勒和他的團隊以這類基金為模型塑造 Indexed,使用一種稱為「自動做市商(AMM)」的機制來維持標的資產之間平衡占比,許多 DeFi 平台都是這麼做的。與傳統做市商不同,AMM 本身不會買賣資產。相反,它通過調整內部代幣的「池內價格」,來激勵交易者從池中購買代幣,或將代幣賣入池中,以此幫助資產池達到預期的資產平衡。當池中需要更多的某種代幣時,其「池內價格」就會上漲;當資產池對某種代幣的需求減少時,其「池內價格」就會下降。這個模型假設用戶會理性地與協議互動,低買高賣。

通過消滅人工管理者,Indexed 得以免收管理費。而 indexed 的勁敵 Index Coop 的用戶來說,僅僅持有其最受歡迎的指數代幣就得支付 0.95% 的管理費。(Indexed 對銷毀代幣,以及在池中交換資產收取手續費,但這些只影響到一小部分用戶)。Indexed 還通過限制平台與外部實體之間的交互次數來節省成本。例如,當 Indexed 需要計算某個資產池內所有資產的總值時,它有時會根據池中權重最大的代幣(稱為「基準代幣」)的權重和價值進行推斷,而不是到 Uniswap 等交易所去逐一檢查每種代幣的價格。通過這種方式,Indexed 減少了在以太坊上支付的交易費用。凱勒將「完全消極」視為「指數基金現有運作方式的自然延伸」。

但「消極」也帶來了風險。如果代碼有問題,有人就可以直接利用它,而不需要繞過任何人為保護措施。而限制區塊鏈交互來降低成本的做法則需要權衡:智能合約(一種當某些條件滿足時能自動執行的程序腳本)的步驟越少,給安全漏洞留下的空間就越大。被攻擊過的加密貨幣平台列表很長,並且每周都在增加:Poly Network, Wormhole, Cream Finance, Rari Capital …… 戴說:「DeFi 領域有句老話,有兩種 DeFi 協議:已經被黑的和即將被黑的。」

凱勒早就意識到有一種可能的攻擊途徑:Indexed 用來向資產池中導入代幣的機制。當發生這種「索引重建」的情況──比如說,某種代幣的市場價值超過另一種代幣,進而有資格被納入藍籌基金──之後,資產池會用一個複雜的方程來設定這種新代幣的初始價格。該方程中有一個變量是基準代幣的價值。如果你能以某種方式搞亂基準代幣在資產池內的定價,理論上就可以迫使資產池對其它代幣給出錯誤的定價。

凱勒說:「我曾花了至少兩周時間來研究這個問題。」但他沒能找到任何錯誤。他雇來檢查代碼的兩位安全研究人員也沒有找到錯誤。所以他說,「我於是確定它不是一個攻擊載體。」不過,Indexed 還是在網站上發布了一條警告:「我們對合約的安全性有信心……(但)我們不能絕對确信沒有被忽視的錯誤。」

該平台於 2020 年 12 月首次亮相,最初提供兩個指數代幣:CC10 和 DEFI5。其中 CC10 代表以太坊上市值最高的 10 個代幣,DEFI5 代表市值最高的 5 個 DeFi 代幣。這個項目很快就獲得了一小群忠實粉絲,這其中就包括戴。戴擁有理論計算機科學博士學位和金融工程碩士學位,他的碩士畢業論文就是關於股票市場指數投資組合優化。Indexed 與他的興趣相一致,也與他相對較低的風險偏好相匹配。他說:「當談到加密貨幣以外的投資時,我完全是個無趣的人。」

戴和凱勒相處得很好。他們都有一種極具網絡搞怪風格的幽默感,而且一位是有寫作天賦的金融專家,另一位是富有創造力的程序員,各自的技能互補。「我完全是個文科生,而狄龍 是標準的理工男。」現年 33 歲的戴說。2021 年 4 月,戴辭去在一家石油和天然氣公司的工作並全職加入了 Indexed 。

那一年,人們對加密貨幣興趣激增。在這股力量的推動下,Indexed 一飛沖天,很快成為以太坊上市值第二大的指數協議,僅次於 index Coop。他們提高了自己的志向,推出指數代幣,並計劃進行升級,讓存在池中的資產能夠賺取利息。Indexed 部署其代碼的 DeFi 平台 Balancer 也備受鼓舞,給他們提供了一筆資助------這是對 Indexed 的未來投下的信任票。

當 Indexed 上線時,小名 Andy 的 Medjedovic 剛剛開始攻讀碩士學位。他計劃在一年內讀完碩士。他做事一向很快,還在小學時就已經開始上 10 年級的數學課,14 歲就從高中畢業,並在滑鐵盧大學用三年時間完成了本科學業。滑鐵盧大學是加拿大數學和計算機科學的頂級學校之一,也是以太坊聯合創始人 Vitalik Buterin 的母校。到 2021 年秋天,Medjedovic 已經提交了關於隨機矩陣理論的碩士論文,並計劃申請博士學位。滑鐵盧大學數學教授 David Jao 說:「我想不出那時候還有哪個學生能這麼早拿到這個學位。」

儘管在學術上很領先,但 Medjedovic 的社會成熟度卻落後了。他的一位要求匿名以便坦率談論敏感問題的前同學回憶說,他「自信到了傲慢的地步」,公開看不起那些他覺得沒他聰明的學生。這位同學還說,「無論他做了什麼或說了什麼,他都相信是不會有錯的,是絕對的真理。」 據說,Medjedovic 與一些極端主義思想眉來眼去:該同學曾聽到他對白人至上主義和人種改良學讚賞有加(本文發表前,Medjedovic 沒有回應對此評論的要求。)

儘管如此,Medjedovic 還是交到了一些朋友,並通過國際象棋和電子遊戲《英雄聯盟》等活動與他們保持聯繫。他還喜歡讀小說,尤其是科幻小說。在一個社交網絡上的個人資料中,他引用了 Kurt Vonnegut 的《貓的搖籃》中的幾段話,表達的是人類探尋知識的徒勞:「老虎要捕獵,鳥兒要飛翔,人要坐下來想啊,想啊,想;老虎要睡覺,鳥兒要歸巢,人要對自己說這一切屬他最明瞭。」

Medjedovic 也逐漸成為一名熟練的程序員,經常參加一個名為 Code4rena(簡稱 C4)的在線黑客競賽。在這個競賽中,公司懸賞讓開發人員尋找自己系統中的安全漏洞。他曾兩次在比賽中獲獎。「他似乎很友好,也很酷,」協助運營 C4,並在 Indexed 遭受攻擊前後都與 Medjedovic 有過通信聯繫的 Adam Avenir 說:「像一個認真的孩子。」

Medjedovic 對 DeFi 感興趣,尤其是 AMM 機制。他在一封電子郵件中說:「每當我聽說一種新型 DeFi 產品,就會仔細研究它的運作方式。如果我想出一個好主意,就會投點錢進去。」(Medjedovic 拒絕接受電話訪問,但是同意通過電子郵件回答一些問題。)他估計自己花了數百個小時「把玩這些 DeFi 產品背後的數學,試驗不同策略的盈利能力。」然後,他編寫出能在這些平台上執行套利交易的 bot 機器人,賺取少量利潤,並幫助資產池更高效地運行。

在一個論壇上看到 Indexed 後,他仔細研究了它的智能合約,並注意到 Indexed 的代碼中有一個進行「錯誤定價的機會」------正是凱勒曾經擔心過的,那種在引入新代幣時可以扭曲資產池內部價格計算的手段。他還發現,有可能繞過限制池內某些交易規模的保護措施。他說:「起初,我並不相信,」他進行了幾次計算,「理論上是可行的。」接下來的一個月,他寫了一個能利用這個漏洞的腳本程序。

他還在 Discord 上以 UmbralUpsilon 的身份聯繫了 Indexed 團隊,詢問了一些有關資產組合和定價的基本問題,並提出為平台編寫套利機器人。現在回想起來,戴說:「我懷疑他可能是想旁敲側擊,看看我是否能為他打開一個缺口。」凱勒和戴說,他們當時分享的信息沒有在這次攻擊中被利用。

最終,在10月中旬,Medjedovic 準備好了要部署的代碼。同樣重要的是,此時對於 Indexed 中最大的兩個資產池進行「索引重建」的時機已經成熟。它們需要的只是某個用戶引入少量的新代幣------對這兩個資產池來說,需要的都是 Sushi,DeFi 交易所 SushiSwap 的代幣)。

利用這個漏洞需要編寫數百條程序指令,法庭後來用了幾十頁的文件來解釋。但這個過程包含幾個關鍵的步驟。為了攻擊構成 DEFI5 指數的代幣池(以及後來的 CC10 池),Medjedovic 編寫了一個程序,並用這個程序獲得了價值 1.57 億美元的「閃電貸」------這是加密貨幣交易中的一種機制,只要用戶在同一組預先編程的交易中償還貸款,就可以獲得資金。然後,他的腳本用一大部分貸款買走池中幾乎所有的 UNI(DeFi 交易所 Uniswap 的代幣)。UNI 的突然供應不足導致池內的 UNI 價格飆升,因為算法試圖激勵交易者將更多的 UNI 賣回池中,並且不再從池中購買 UNI,這是為了恢復池內原來的平衡。Medjedovic 買的 UNI 越多,池內 UNI 的價格就漲得越高,最終達到了外部市場價格的 860 倍。他總共花費了價值 1.09 億美元的代幣,買下了實際價值 520 萬美元的 UNI。

對 DEFI5 的攻擊:1 個程序和 7 個關鍵步驟(節選)

從表面上看,這是一筆瘋狂的交易,但 UNI 在 DEFI5 資產池中扮演了一個獨特的角色。UNI 是基準代幣------池子用它來推斷其總值。隨著池中 UNI 的數量急劇減少,資產池現在對其自身的估值只相當於真實價值的 380 分之 1。因此,需要新引入的 Sushi 數量也急劇減少,這可是鑄造 DEFI5 代幣離不了的。此時,只要 Medjedovic 願意,他就可以用價值 3200 美元的 Sushi 代幣換取價值 117.2 萬美元的 DEFI5 代幣。而如果他乾脆就這麼幹的話,Indexed 反而不會出什麼問題。Indexed 協議對用戶可以交換到池中的新代幣數量進行了限制,因此他只能提取大約池子價值的 1.5%------考慮到交易手續費,這對他來說算不上有利可圖。

相反,Medjedovic 的腳本拿到了另一筆閃電貸──價值 240 萬美元的 Sushi 代幣。他沒有把這些代幣換進資產池中,而是把它們贈送給了資產池------看似不合邏輯,卻是 Indexed 的算法從設計上就沒有考慮到的舉動。這筆「贈送」打垮了資產池,繞過了它對新代幣的常規交易限制。它讓 Medjedovic 可以自由地將被高估的 Sushi 代幣兌換成被低估的 DEFI5 代幣,然後又套現為池中的標的資產,以此償還貸款,剩下的落入腰包,如今價值 1190 萬美元。對 CC10 資金池的攻擊更是讓總值提高到了 1600 萬美元。

Medjedovic 在電子郵件中回憶說,他對這次攻擊的成功感到驚訝。他寫道:「我只做了幾次嘗試就搞定了,」很快他就沒錢支付區塊鏈的交易費用了。

「絕對令人印象深刻,」凱勒說,「但是他的才能用錯了地方。」

如果 Medjedovic 曾考慮過歸還代幣,那他也沒有考慮太久。在 Indexed 團隊確認他的身份後,他在 Twitter 上發布了一首挑釁的詩:「一隻青蛙躍入池,耍酷全憑有本事。| 為把蛙兒煮了吃,他們拼命做嘗試。'不要套利那些錢',他們哭聲響徹天。|但是青蛙喜洋洋,皆因神靈在身旁。」有人留言拱火。有人發了個皇冠表情。還一個人寫道:「我愛這家伙。」

一些人對他使用了種族主義的語言和修辭厲聲斥責:Medjedovic 用於這次攻擊的以太坊地址包括數字「1488」(一個新納粹口號的縮寫),

warnning 風險提示
app_icon
ChainCatcher 與創新者共建Web3世界