這次漏洞攻擊的目標,是零知識證明驗證邏輯與以太坊第一層(Layer 1)結算處理之間的邊界。據 CertiK 表示,合約中有一個驗證函數只檢查了提交證明的開頭部分,這意味著用來授權代幣轉移的參數從未被完整驗證 。這使得攻擊者得以提交一個能通過初步檢查,卻在資料酬載深處夾帶惡意提款指令的證明。
SlowMist 的後續分析指出,根本原因在於 RollupV3 內部的 L1 結算迴圈的遍歷限制。攻擊者利用了 numRealTxs 與 decoded_slots 之間的差異,讓他能透過 ZK 證明向 L2 狀態根提交 31 個空槽位,同時在 L1 合約層繞過完整驗證 。攻擊者最終構建了 14 個 ZK-rollup 證明;最後七個證明分別在不同的交易中,從合約裡提取了不同的資產
。
讓這起事件顯得獨特的是,這次攻擊在結構上是無法阻止的──這是基於設計的結果。Aztec Connect 在 2023 年 3 月被棄用,用戶有超過一年的時間可以提取資金 。到了 2024 年,Aztec Labs 更進一步,刻意放棄了所有管理員金鑰與系統控制權。這些合約變得完全不可變更:沒有升級機制、沒有擁有者,關鍵的是,沒有任何暫停功能
。
「Aztec Connect 已在三年前被棄用。Aztec Labs 並未持有任何管理員金鑰或對系統的控制權;該合約無法被暫停或升級,」團隊在漏洞發生數小時後於 X 平台發文表示,並證實約 210 萬美元已從該不可變更的合約中轉出 。他們強調,目前的 Aztec Network 及其 AZTEC ERC-20 代幣均未受影響,但也坦承沒有任何機制能夠追回遺失的資金
。
儘管團隊在關閉時有提供充足的提款期限並進行相關溝通,攻擊發生時,仍有約 210 萬美元的殘留用戶資產鎖在這些舊合約中 。這些資金存在於一種渾沌的狀態:無人能在不與已棄用匯總互動的情況下合法地取回它們,當漏洞被觸發時,也無人可以介入阻止。
Aztec Connect 的漏洞攻擊事件,是去中心化金融中 「僵屍合約」問題 的教科書級案例。當一個專案關閉時,不可變更的智能合約並不會就此消失。它們會帶著原有的邏輯──以及價值──持續存在於鏈上,通常無限期地保留著用戶資產。當管理員金鑰為了追求完全去中心化而被放棄時,該合約就成了一個永久、無法修補的蜜罐。任何未被發現的漏洞都會變成一顆定時炸彈,在數年後被引爆且毫無補救措施 。
這種風險是不對稱的。放棄控制權的專案,因證明了自身沒有後門而贏得信譽,但那些未在棄用期間提款的用戶,卻承擔了全部的下行風險。Aztec 的案例顯示,即使在三年後,仍有數百萬美元困在一個每個人都以為已經「死亡」的合約中。
對於計劃棄用協議的 DeFi 團隊來說,教訓是殘酷的。在放棄管理員金鑰之前,專案必須強制完成所有提款,或實作一個基於時間鎖的應急機制,這種機制不依賴長期的管理員控制權。若少了這些防護措施,遭棄用但不可變更的基礎設施,將無可避免地吸引攻擊者前來尋找那些永遠無法修復的瑕疵 。