這起據報發生於 Notional Finance 的事件,並非一般意義上的「抵押品不足」。研究人員的初步重建認為,核心問題在於帳務表示不一致:攻擊者建立一筆達 2^128 邊界的巨額 fCash 負債,而合約在計算可用抵押品(free collateral)時,疑似將其不安全地窄化轉為 uint128,最終截斷成 0。
換言之,在最關鍵的風險檢查環節,這筆本應極其龐大的債務彷彿從帳上消失;帳戶因而可能被判定為仍具償付能力,並得以提領原本不應有權動用的資產。
4
16
必須留意的是,目前公開資訊主要來自鏈上監測與資安研究人員的分析,而不是 Notional 發布的正式事後報告。資金流向可由鏈上資料觀察,但完整呼叫順序、實際影響範圍與修復狀態,在當時的報導中尚未獲官方確認。
3
4
漏洞核心:巨額債務為何被算成零?
Notional V1 使用 fCash 來表示未來的現金支付義務。依 CertiK 公開警示,攻擊者透過兩次 mintfCashPair() 呼叫,建立了 -2^128 的負債;在可用抵押品估值過程中,這個數值據稱因不安全的 uint128 向下轉型而被截斷為 0。
16
依研究人員描述,攻擊路徑可概括為:
- 建立極端的負 fCash 部位:攻擊者製造一筆恰好位於數值邊界的負債,使其在縮窄為 128 位元無號整數時,可能失去原有的債務表示。
4
16
- 觸發抵押品估值:託管合約的帳務邏輯據報對這筆負債進行不安全的
uint128 轉型。
- 債務在檢查中消失:計算沒有反映巨額負債,反而將其視為零。
4
6
- 通過提款門檻:負債未被納入可用抵押品計算後,帳戶看似符合提款條件,得以提走託管合約中的流動穩定幣。
4
6
因此,與其籠統稱為「整數溢位」,這更接近一種窄化型別轉換與會計不變量失效:本應阻止低抵押提款的估值路徑,竟將負債錯誤地歸零。
4
16
據報有多少資產被轉出?
鏈上報導指向約 69,257 DAI 與 1,650,824 USDC 被移出,合計約 172.8 萬美元。這些資產其後據報兌換成約 689.2 ETH,再存入 Tornado Cash。
2
15
報導辨識出的受影響合約,是 Notional Finance 的託管合約:0x9abd0b8868546105F6F48298eaDC1D9c82f7f683。其中一份報導稱,地址尾碼為 Ce38 的錢包在 2026 年 9 月 3 日 UTC 晚上 11 時 58 分 47 秒送出準備交易;約 3 分鐘後,排出資金的交易在 9 月 4 日凌晨確認。
17
23
研究人員公開關聯至資金移動的兩個以太坊地址為:
這些標記只代表鏈上調查的關聯判斷,不等同於確認任何個人、組織或最終控制者的身分。
11
為何兌成 ETH 再進 Tornado Cash,會提高追討難度?
資金先由 DAI、USDC 兌換為 ETH,已改變後續處理的條件。穩定幣在以太坊上的轉移可直接追蹤;轉換成 ETH 後,資產型態改變,而後續存入 Tornado Cash 又增加了一層隱私混淆。
Tornado Cash 是部署於以太坊的混幣服務,其設計目的之一,是模糊交易的來源、去向與交易對手關係。
2
29
這不表示鏈上分析完全無法進行,也不能據此推定後續提款由誰控制;但一旦資金進入混幣池,要將遭利用的託管合約與日後某個接收方逐筆、直接連結,難度會顯著上升。
29
當時仍未釐清的問題
在相關報導發布時,Notional 尚未公開說明此事件,因此多項關鍵問題仍待確認:
- 最終技術根因與完整的攻擊呼叫流程;
- 受影響的合約、帳戶與資產是否僅限於已報導範圍;
- 扣除兌換、手續費及後續轉移後的最終損失;
- 是否具備暫停、升級、補償或追討資金的可用機制;
- 攻擊者身分,以及被標記的兩個地址是否由同一方完整控制。
3
4
11
所以,-2^128 負債遭截斷為零的說法,應視為具相當依據的初步技術重建,而不是可取代正式稽核報告或官方事後分析的定論。
給 DeFi 團隊的警訊:舊合約不等於低風險
合約年代久遠、已不再是產品主線,並不代表風險降低。只要它仍保管資產,或仍能進入鑄造、結算、抵押品計算及提款等流程,它就是一個持續暴露於攻擊的金融系統邊界。
這起事件凸顯,協議團隊應同步驗證幾項控制措施:
- 對窄化型別轉換採用受檢查機制,並明確拒絕無法安全表示的數值;
- 在
2^128 等數值邊界,測試有符號債務、結算與抵押品計算;
- 將償付能力與資產守恆規則寫成可驗證的不變量,並以多次呼叫的序列測試;
- 審查特殊或具權限的呼叫路徑,是否能以意外順序組合鑄造、結算與提款;
- 對僅能在特定情境安全運作的函式,限制呼叫者與可達的呼叫流程。
更廣泛地說,DeFi 攻擊常見的模式是:表示方式或授權控制上一個看似細微的缺陷,因為接上可提領流動資產的流程,而被放大成完整損失。防線不該只停留在逐一審核函式,更要證明系統的帳務不變量能在所有可達的呼叫序列中持續成立。