去中心化交易所 Balancer 遭駭!火燒連環船、DeFi 信心危機
#735
嗨,早!
下週起是區塊勢的年終休刊期,將暫停 4 篇文章並於 12 月 2 日恢復出刊。這是提前安排好的家庭旅遊,不是因為上週弄丟錢才出國散心。但就順便吧 😂 進入正題。
近期去中心化金融(DeFi)應用連環爆,其中發生在 11 月 3 日的 Balancer 駭客事件,讓全球資安專家跌破眼鏡。損失金額約 1.3 億美元,在歷史上僅能排進前 30 名,卻燒出前所未見的 DeFi 信任危機。
這是因為 Balancer 是 DeFi 世界的模範生,核心程式碼不僅通過 4 家頂尖資安公司共 11 次的嚴格審計,上線後也有完善的漏洞賞金制度持續監控。如果發現漏洞,只要回報並經確認,就能獲得最高 1,000 顆 ETH 的白帽獎勵。
網路沒有絕對的安全,但業界普遍相信,只要事先審計、持續監控,就能大幅降低被駭風險。然而這次的 Balancer 事件卻狠狠打臉。人們開始懷疑,連經過層層把關的應用都會出事,還有誰的程式碼是安全的?這篇文章帶你回到事發現場,理解 Balancer 為何會被駭。
自動兌幣機
想像我今天到越南旅遊,在機場看到一台名為 Balancer 的自動兌幣機。
我塞入一張新台幣 1,000 元紙鈔。按照當前匯率,它應該要吐出 848,399 越南盾。由於機器當初設計只能吐出百元鈔票,四捨五入後,它給了我 848,400 越南盾。雖然我多賺 1 越南盾,但這筆誤差少到什麼也買不了,小到可以忽略。
過去五年,兌幣機運作如常。直到近期,有位精明駭客想出一套縝密的犯罪計畫,打算利用這個漏洞,讓兌幣機把所有的錢全都吐出來!
兌幣機採用自動造市商(AMM)機制1 —— 各類貨幣的報價會隨著兌幣機內部的供需改變。有越多人拿越南盾換成外幣,越南盾就越便宜;反之,越多人拿外幣換走越南盾,越南盾就越貴。
於是,駭客先是準備大量外幣,掃購兌幣機裡的越南盾,讓兌幣機裡的越南盾變得稀缺,價格飆升一萬倍。現在新台幣 1,000 元紙鈔,只能買到 84.8399 越南盾。但由於自動兌幣機只有百元紙鈔,機器四捨五入後,竟吐出了 100 越南盾。
注意到了嗎?越南盾價格飆升後,兌幣機四捨五入誤差也跟著被放大。駭客每換新台幣 1,000 元,就多拿到 15.16 越南盾。兌幣機把這些當成「誤差」,根本沒意識到機器正在被掏空。駭客不斷重複操作,讓兌幣機吐出一大堆越南盾,再用這些偷來的越南盾,換出兌幣機裡的各國貨幣。最終,兌幣機被洗劫一空。
下圖就是駭客在 11 月 3 日犯罪時留下的鏈上轉帳紀錄。駭客在一筆交易內塞入多次鏈上操作,一口氣把 Balancer 的資金池抽乾,總計竊走約 1.3 億美元。
鏈上立刻警鈴大作。由於每筆轉帳紀錄都是即時公開,資安公司如 Check Point 、PeckShield 的自動化監控系統偵測到 Balancer 出現異常資金外流後,第一時間通知開發團隊。
程式碼設有「緊急暫停」按鈕,在重大事件發生時暫停運作,防止更多人受害。問題是駭客鎖定的並不是最新的 Balancer V3,而是運行多年的 V2 版本。開發者按下暫停按鈕後才發現,這項功能已經失效 —— 權限過期,根本按不下去。兌幣機就像斷了線的風箏,大家只能眼睜睜地看著資金池被持續掏空。
在多數駭客事件裡,這已經是最差狀況。但對 Balancer 來說,這還只是連鎖反應的開始。
火燒連環船
過去幾年,許多新興 DeFi 專案把 Balancer V2 視為模範生,有近 30 個應用是基於它的開源程式碼開發。沒想到這也讓駭客事件升級成了「火燒連環船」。
例如 Sonic 鏈上最大的去中心化交易所 Beets.fi 在官方文件中就主打,自家程式碼是分叉 Balancer V2 而來。當年 Beets 發行治理代幣時,也曾回溯空投給 Balancer 參與者作為回饋。這些團隊原本想強調自己採用的是經過實戰考驗的程式碼,大家可以放心使用,卻沒想到模範生也有翻車的一天。
Keep reading with a 7-day free trial
Subscribe to 區塊勢 to keep reading this post and get 7 days of free access to the full post archives.



