嗨,早!
下週起是區塊勢的年終休刊期,將暫停 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,000 元紙鈔,只能買到 84.8399 越南盾。但由於自動兌幣機只有百元紙鈔,機器四捨五入後,竟吐出了 100 越南盾。
注意到了嗎?越南盾價格飆升後,兌幣機四捨五入誤差也跟著被放大。駭客每換新台幣 1,000 元,就多拿到 15.16 越南盾。兌幣機把這些當成「誤差」,根本沒意識到機器正在被掏空。駭客不斷重複操作,讓兌幣機吐出一大堆越南盾,再用這些偷來的越南盾,換出兌幣機裡的各國貨幣。最…

