在過去的一週內(2026/03/16 - 2026/03/22),BlockSec 偵測並分析了七起攻擊事件,總估計損失約為 8,270 萬美元。下表總結了這些事件,並在後續章節中提供了每個案例的詳細分析。
| 日期 | 事件 | 類型 | 估計損失 |
|---|---|---|---|
| 2026/03/15* | Venus 事件 | 捐贈攻擊與市場操縱 | 約 215 萬美元 |
| 2026/03/17 | dTRINITY 事件 | 精度損失 | 約 25.7 萬美元 |
| 2026/03/17 | Fun.xyz 事件 | 存取控制問題 | 約 8.5 萬美元 |
| 2026/03/18 | Keom 事件 | 業務邏輯漏洞 | 約 3.5 萬美元 |
| 2026/03/18 | ShiMama 事件 | 存取控制問題 | 約 3.5 萬美元 |
| 2026/03/19 | BlindBox 事件 | 業務邏輯漏洞 | 約 9.9 萬美元 |
| 2026/03/22 | Resolv 事件 | 私鑰洩漏 | 約 8,000 萬美元 |
*Venus 事件未包含在上週的報告中,為求完整性特此列入。
1. Venus 事件
簡要總結
2026 年 3 月 15 日,Venus Protocol 在 BNB Chain 上的 THE (Thena) 市場遭受了捐贈攻擊結合市場操縱,導致約 215 萬美元的壞帳。THE 市場的供應上限僅適用於鑄造途徑,而直接向市場捐贈代幣仍會增加 cash 並推高 exchangeRate。攻擊者隨後利用這種虛高的抵押品價值進行借貸,在推動 THE 代幣市場價格的同時獲取更多 THE,最終在倉位遭到強制清算後,使協議留下了壞帳。
背景
Venus 是一個基於 Compound V2 分叉的借貸協議。在 THE 市場中,用戶存入 THE 並獲得 vTHE 代幣。exchangeRate 決定了每個 vTHE 代表多少標的資產,其核心公式為:
exchangeRate = (cash + borrows - reserves) / totalSupply
其中 cash 是市場的標的代幣餘額,borrows 是未償還債務總額,reserves 是協議擁有的儲備金,totalSupply 是 vTHE 的總供應量。THE 市場設有供應上限,旨在限制抵押品的總敞口。
漏洞分析
此次事件涉及針對 vTHE 市場合約 (0x86e0...739f) 的兩個複合向量。
捐贈攻擊
該協議直接從市場合約的原始代幣餘額中計算 cash,使其天生易受捐贈攻擊影響。任何直接轉入 vTHE 市場合約的 THE 代幣都會增加 cash,進而提高 exchangeRate。攻擊者利用這一點將 exchangeRate 提高了約 3.81 倍,放大了其現有 vTHE 倉位的抵押價值。
市場操縱
THE 代幣的鏈上流動性不足,使其現貨價格容易透過相對適度的買壓進行操縱。協議的預言機旨在拒絕過度偏離參考價格的報價,在攻擊期間,預言機曾正確地拒絕了極端價格約 37 分鐘。然而,持續的買壓最終將 THE 代幣價格推至約 0.51 美元,約為攻擊前價格的兩倍,預言機最終採納了該價格。

這兩個向量相互增強。捐贈攻擊帶來的虛高 exchangeRate 放大了每個 vTHE 單位的抵押價值,而操縱後的 THE 代幣價格進一步推高了借貸能力。兩者結合,使攻擊者能夠以一個超過供應上限 3.67 倍 的倉位進行約 1,490 萬美元的借貸。
攻擊分析
以下分析基於範例攻擊交易 0xce6e3e...1f5fb0e。
-
第 1 步:與攻擊者相關聯的錢包在約九個月內透過 77 筆與 TornadoCash 相關的交易收取了 7,447 顆
ETH。這些ETH被存入 Aave 並借出約 992 萬美元的穩定幣,以建立約 1,220 萬THE的vTHE倉位,約佔 1,450 萬THE供應上限的 84%。 -
第 2 步:在首次攻擊交易中,六個地址直接向
vTHE市場合約轉入了約 3,600 萬THE。攻擊合約還借入了 158 萬USDC並重新存入,隨後借出約 460 萬THE並直接轉入vTHE。這使exchangeRate上升了約 3.81 倍。

- 第 3 步:在後續交易中,攻擊者借入了包含
CAKE、BNB、BTCB和USDC在內的流動資產。攻擊者不斷利用借入的資產購買THE並將其捐贈給vTHE,形成了一種同時增加倉位借貸能力和THE代幣市場價格的循環。

-
第 4 步:
THE代幣價格從約 0.2 美元上漲,幣安價格來源曾短暫接近 4 美元。協議預言機在拒絕極端價格約 37 分鐘後,最終接受了約 0.51 美元的價格。 -
第 5 步:截至 UTC+8 20:42,攻擊者的倉位達到約 5,320 萬
THE,約為供應上限的 3.67 倍,總借貸敞口約為 1,490 萬美元。 -
第 6 步:隨後該倉位進入大規模清算。從 254 個清算人地址發出的 8,048 筆清算交易中,清算了約 4,200 萬
THE抵押品。隨著拋售持續,THE代幣跌至約 0.22 美元。清算所得無法覆蓋全部債務,導致 Venus 面臨約 215 萬美元的淨壞帳。
結論
此次事件並未揭露新的漏洞。它展示了當協議的每一層風險控制都假定其他層會運作時,一個眾所周知的攻擊向量若能有條不紊地執行,便能壓垮整個協議的風險堆疊。鏈上警報訊號數月來一直存在,但偵測與干預之間的鴻溝卻始終未被填補。透過流動性感知風險參數、自動斷路器和倉位級別監控來縮小這一差距,是此次事件給其他借貸協議留下的核心教訓。
詳細分析請參閱我們的深度解析文章 [1]。
參考文獻
2. dTRINITY 事件
簡要總結
2026 年 3 月 17 日,以太坊上的 Aave V3 分叉借貸協議 dTRINITY 的 dLEND 借貸市場遭到攻擊,損失約 25.73 萬美元。根本原因是 Aave V3 分叉中固有的空市場 (empty market) 漏洞。當儲備金持有近乎零的流動性時,重複的閃電貸利息累積會將 liquidityIndex 推向極端值。一旦儲備會計被扭曲,攻擊者便利用存款和提款路徑中的精度損失來虛報抵押品,借入 dUSD 並取回存入的 cbBTC,從而獲得淨利潤。
背景
dTRINITY 包含 dUSD 穩定幣系統和從 Aave V3 分叉出來的借貸市場 dLEND。在核心 L2Pool 合約 (0xfda3...e19e84) 中,每個資產都有自己的儲備金,而儲備會計是基於縮放餘額和儲備級別 liquidityIndex。用戶當前的標的餘額是由縮放餘額乘以儲備的標準化收益計算得出的。
閃電貸利息會透過 cumulateToLiquidityIndex() 加入到儲備會計中,公式為:
nextLiquidityIndex = ((amount / totalLiquidity) + 1) * reserve.liquidityIndex
當 totalLiquidity 變得極小時,每一次利息累計都能以異常快的速度推高 liquidityIndex。

漏洞分析
攻擊的關鍵條件是 dLEND-cbBTC 市場 (0x504d...3acc) 的儲備金接近空置。一旦儲備金被壓縮到僅剩一個縮放份額 (scaled share),閃電貸利息就不再分攤到有意義的供應基礎上。因此,重複的閃電貸導致 liquidityIndex 極速上升。
在 liquidityIndex 被大幅虛報後,標的資產到縮放餘額的轉換進入了極端的捨入機制。在這種狀態下,少量存款即可鑄造額外份額,而大幅提款卻仍可能僅銷毀一個份額。這種不對稱性使攻擊者能夠虛報 aCbBTC 抵押品,並從不同的儲備池中借出真正的 dUSD,因為健康檢查是在池級別執行的,而受損的 cbBTC 儲備直接影響了跨資產借貸能力。
攻擊分析
漏洞利用由兩筆交易組成:0x8d33d6...40ae7139 和 0xbec4c8...4fc33260。
交易 1:liquidityIndex 操縱
-
第 1 步:從 Morpho Blue 借入
cbBTC。 -
第 2 步:將
cbBTC存入 dLEND-cbBTC 以鑄造 100 個縮放份額。 -
第 3 步:提取 99 個份額,使僅剩 1 個份額,將 dLEND-cbBTC 儲備壓縮至近乎空的縮放供應狀態。
-
第 4 步:直接轉入 8,000 萬單位(即 0.8
cbBTC)至 dLEND-cbBTC aToken。 -
第 5 步:執行 150 次
Pool.flashLoan()呼叫以將利息累積至儲備會計中,將liquidityIndex推升至 6,226,621,999,999,999,999,999,999,979,728,276。

-
第 6 步:執行重複的存提循環以提取殘餘儲備現金。
-
第 7 步:償還閃電貸。
交易 2:利潤實現
-
第 1 步:再次從 Morpho Blue 借入
cbBTC。 -
第 2 步:將約 7.72
cbBTC存入已被操縱的儲備池中,以建立虛高的aCbBTC抵押倉位。

- 第 3 步:利用虛高的抵押品從 dLEND-dUSD 市場借出 257,328
dUSD。

- 第 4 步:透過重複的存提循環繼續提取
cbBTC。

- 第 5 步:償還 Morpho 閃電貸,並將借出的
dUSD轉移至攻擊者的 EOA 地址。
結論
此事件是 Aave V3 分叉中記錄良好的空市場攻擊實例。這種模式已在多個協議中出現,且緩解措施已相當成熟。在儲備初始化期間強制執行最低供應閾值,可以防止儲備進入指數增長失控的狀態。因此,分叉 Aave V3 的協議應將儲備啟動視為關鍵操作,並確保在部署時鎖定有意義的流動性,而不是依賴自然存款流來穩定指數。
3. Fun.xyz 事件
簡要總結
2026 年 3 月 17 日,Polygon 上的結算基礎設施協議 Fun.xyz 遭到攻擊,損失約 8.57 萬美元。根本原因是舊版 CheckoutPool 在沒有存取控制的情況下暴露了關鍵函數 bridge(),且未將橋接呼叫數據(calldata)與預期接收者綁定。此漏洞允許攻擊者將執行路徑定向到受信任的結算路徑,並將資金轉移至攻擊者控制的智能帳戶。
背景
CheckoutPool 是 Fun.xyz 結算基礎設施中的核心結算合約。在正常流程中,用戶透過 deposit() 建立結算,受信任的操作員透過 bridge() 和 execute() 等結算路徑推進該流程。對於橋接操作,bridge() 會根據呼叫者提供的 bridgeParams.target 和 bridgeParams.callData 執行外部呼叫。
漏洞分析
根本原因在於舊版 CheckoutPool (0x1304...2ec01a) 在沒有適當存取控制的情況下暴露了敏感的結算路由函數 bridge(),同時未能針對預期接收者驗證外部提供的橋接 calldata。具體來說:
-
舊版實現未在
bridge()執行onlyOperator檢查,允許任何外部呼叫者在透過deposit()建立結算後調用該函數。 -
bridge()將呼叫者提供的bridgeParams傳遞給_bridgeToRecipient(),後者在未根據結算記錄驗證接收者的情況下執行了外部呼叫。



一個額外的操作條件使本次利用成為可能:在攻擊發生時,舊版 CheckoutPool 在 CheckoutPaymaster 中仍然保留了操作員特權。這使得精心構造的 bridge() 呼叫能夠觸達 CheckoutPaymaster.activateAndCall(),進而調用較新的 CheckoutPool.execute() 路徑,將資金轉移至攻擊者控制的地點。
攻擊分析
以下分析基於攻擊交易 0x957bcf...1f4f5a。
-
第 1 步:建立 ERC-4337 智能帳戶 0xb648,並在外部 UserOperation 中將其指定為發送者和支付者(paymaster)。
-
第 2 步:在舊版和新版 CheckoutPool 中呼叫
deposit(),在新版 CheckoutPool 中建立一筆結算金額為 85,730USDC的結算記錄。 -
第 3 步:在舊版 CheckoutPool 中使用惡意的
bridgeParams呼叫bridge():將bridgeParams.target設為 CheckoutPaymaster,並將bridgeParams.callData編碼為呼叫activateAndCall(),以外部UserOperation作為其內部有效負載。

- 第 4 步:觸達新版 CheckoutPool (0x1929...0215) 中的
execute(),將 85,730USDC轉移至外部UserOperation中指定為ops[0].sender的地址 0xb648。

- 第 5 步:進入
EntryPoint.handleOps():由於 0xb648 同時充當發送者和支付者,帳戶驗證和支付者驗證均在攻擊者控制之下,允許攻擊者獲利 85,730USDC。
結論
此次事件是由於舊版 CheckoutPool 的 bridge() 路徑缺乏存取控制和 calldata 到接收者的綁定,導致損失約 8.57 萬美元。為防止類似事件,協議應在敏感的路由和結算流中執行嚴格的存取控制,確保外部提供的有效負載與協議衍生的接收者保持一致,並在部署修補後的替換版本後,從受信任的特權關係中移除過時合約。
4. Keom 事件
簡要總結
2026 年 3 月 18 日,Polygon zkEVM 上的 Compound V2 分叉借貸協議 Keom 遭到攻擊,損失約 3.5 萬美元。根本原因是 redeemUnderlying() 所調用的 redeemFresh() 存在會計邏輯缺陷。該函數限制了份額減少量至用戶的實際餘額,但並未相應地重新計算標的資產的提取量。這種不匹配允許攻擊者提取遠超其份額所允許的資產。
背景
Keom 是一個從 Compound V2 分叉出來的借貸協議。用戶供應 ETH 到市場並獲得 kETH。當用戶贖回時,協議使用當前的匯率將 kETH 份額轉換回 ETH。協議中有兩個贖回入口點:按份額贖回的 redeem(),以及按預期標的資產金額贖回的 redeemUnderlying()。
漏洞分析
缺陷存在於 redeemUnderlying() 所調用的 kETH 市場 (0x4c6e...0403) 的 redeemFresh() 中。用戶控制的 redeemAmountIn 首先被賦值給 redeemAmount,然後透過當前匯率計算出 redeemTokens。如果 redeemTokens 超過了贖回者的餘額,該函數會將其限制為 accountTokens[redeemer]。然而,redeemAmount 在此限制後並未重新計算,仍然等於原始的 redeemAmountIn。這允許贖回者提取完整的 redeemAmount 標的資產,而僅銷毀對應的一小部分份額。
如下面的代碼片段所示,redeemFresh() 還會透過 redeemAllowed() 執行健康檢查。在 Compound V2 的設計中,redeemAllowed() 會檢查 markets[cToken].accountMembership[redeemer],並且僅在帳戶已加入此 cToken 市場時才會調用流動性檢查;否則,檢查將被完全跳過。由於 redeemAmountIn 是由攻擊者控制的,可以設定為任意大的數值,如果 kETH 仍被視為抵押品,流動性檢查將會失敗。這意味著單憑會計漏洞本身,若不先繞過健康檢查,是無法直接利用的。

攻擊分析
以下分析基於攻擊交易 0x4ccde7...03d9dfd8。
- 第 1 步:僅使用 0.001
ETH調用mint(),獲取最小量的kETH餘額。

-
第 2 步:調用
exitMarket()以清除帳戶在 kETH 市場中的成員資格,從而使redeemAllowed()完全繞過流動性檢查(如上述漏洞分析所述)。 -
第 3 步:調用
redeemUnderlying()來提取市場所有的ETH餘額(約 38.6ETH),利用會計缺陷從市場中抽乾ETH。

結論
此次事件是由於將 redeemTokens 限制在用戶實際餘額後,未能重新計算 redeemAmount 從而導致的會計漏洞,損失約 3.5 萬美元。贖回邏輯必須在任何限制或調整後重新計算所有依賴值,以維護「份額對標的資產」的不變量。Compound V2 分叉協議應仔細審查此路徑,因為其他衍生品中也可能存在類似缺陷。
5. ShiMama 事件
簡要總結
2026 年 3 月 18 日,BNB Chain 上的通貨緊縮代幣協議 ShiMama 遭到攻擊,損失約 3.5 萬美元。根本原因是函數 executePairBurn() 缺乏存取控制,允許任何用戶觸發配對儲備金的提取與銷毀,從而實現了價格操縱。
背景
ShiMama 協議包含一種鏈上通縮機制,旨在從 AMM 配對池中提取代幣並進行銷毀。此機制在 ShiMama 協議和 ShiMama 代幣中實現。ShiMama 協議中的 executePairBurn() 函數根據呼叫者提供的 referenceIn 參數計算提取金額:
pullAmt = referenceIn * pairBurnBpOnSell / 10_000
隨後它呼叫 ShiMama 代幣的 forcePullFromPair(),接著執行 pair.sync() 並銷毀提取出的代幣。
漏洞分析
根本原因在於 ShiMamaProtocol 合約 (0x5049...0b49a) 中的 executePairBurn() 缺乏存取控制。該函數對外部開放且無限制,因此任何用戶都可以觸發敏感的儲備移動和配對同步。referenceIn 同樣由呼叫者控制,且未與任何實際銷售額綁定。在 ShiMamaToken.forcePullFromPair() 中,協議可以直接在不受限制的情況下將餘額從 Pancake 配對池中轉移,從而實現任意的儲備移除加上立即同步,進而操縱現貨價格。

攻擊分析
以下分析基於攻擊交易 0x13959b...3c20e001。
-
第 1 步:從 Moolah 閃電貸借入
WBNB。 -
第 2 步:將先前交易中預先取得的 30.78e18 顆
ShiMama存入攻擊合約。由於禁止了直接從 Pancake 配對池中購買ShiMama,攻擊者透過在攻擊前向 ShiMama 協議提供和提取流動性獲得了ShiMama。 -
第 3 步:呼叫
executePairBurn()從 Pancake 配對池提取 1,311,349,143.96 顆ShiMama代幣並銷毀,從而有效推高了ShiMama的價格。 -
第 4 步:攻擊者以虛高的價格將 30.78e18 顆
ShiMama在 PancakeSwap 上換取了 52.98e18 顆WBNB。 -
第 5 步:償還閃電貸,留下 52.98 顆
WBNB作為淨利潤。

結論
此次事件是由於 executePairBurn() 缺乏存取控制,暴露了一條未經授權變更池儲備的途徑。任何變更儲備金的函數在經濟上都是敏感的,必須受到嚴格的權限保護。呼叫者控制的輸入參數必須與協議衍生的數值綁定,以防止儲備提取被放大。
6. BlindBox 事件
簡要總結
2026 年 3 月 19 日,BNB Chain 上的 GameFi 投注協議 BlindBox 遭到攻擊,損失約 9.9 萬美元。根本原因是隨機數過弱,導致攻擊者可以預測結果並實現 100% 的勝率。此外,getTwapPrice() 依賴於可操縱的現貨價格而非真正的時間加權平均價格,允許攻擊者事先推高池內價格,並下注超過協議預期限制的金額。
背景
BlindBox 是一個 GameFi 協議,允許用戶透過將 ATM 代幣轉移到死信地址來進行投注。協議根據區塊雜湊值的奇偶性確定結果。如果投注獲勝,BlindBox 會從死信地址的銀行帳戶中支付原始 ATM 金額 1.95 倍的獎金。該協議使用 getTwapPrice() 來限制每次投注的規模。
漏洞分析
BlindBox 合約 (0x1F83...734c59) 包含兩個漏洞:
- 隨機數過弱:當結算時間超過 256 個區塊時,
blockhash(bet.blockNum + 2)返回零。隨後協議會退回到源自block.prevrandao、betId和block.timestamp的偽隨機數。由於這些輸入參數可以在提交交易前在鏈下進行模擬,攻擊者只需在計算出的結果有利時才執行settle(),從而實現確定性的勝出。

- 可操縱的價格限制:協議使用
getTwapPrice()來限制投注規模。然而,此函數並未實現真正的時間加權平均價格;相反,它直接讀取ATM/USDT池的現貨價格。這允許攻擊者在下注前操縱池內價格來繞過限制。

攻擊分析
以下步驟展示了攻擊模式。步驟 2 和 3 組成了一個配對序列(如 betId=5,284),攻擊者多次重複此過程以累積利潤。
-
第 1 步:操縱
ATM/USDT池,虛高ATM現貨價格,以便getTwapPrice()在下一步中允許更大的投注規模。 -
第 2 步:透過向死信地址轉移虛高額度的
ATM來進行大額投注(例如 0x4be049...3af12c)。

- 第 3 步:等待超過 256 個區塊後,
blockhash返回零並激活退回機制。隨後攻擊者在鏈下模擬結果,僅在計算結果有利的區塊才呼叫settle()(例如 0x68eedc...718ce8)。

結論
此次事件是由於可預測的隨機性,結合可操縱的現貨價格作為 TWAP 輸入,導致損失約 9.9 萬美元。為降低類似風險,協議應移除任何在 blockhash 窗口過期後變得可預測的結算路徑,並以抗操縱的價格來源取代 getTwapPrice()。
7. Resolv 事件
簡要總結
2026 年 3 月 22 日,以太坊穩定幣協議 Resolv 遭遇基礎設施密鑰洩露,導致未經授權執行了敏感的交換最終化邏輯。在本次事件中,攻擊者濫用特權函數鑄造了超過 8,000 萬枚無抵押的 USR。影響超出了直接鑄造事件本身,因為產生的 USR 脫鉤(depeg)觸發了更廣泛的金融連鎖反應,影響了將 Resolv 資產作為抵押品的借貸協議。
背景
Resolv 是一個穩定幣協議,其 USR 發行依賴於抵押品支持的交換結算。其交換完成管道 completeSwap() -> mint() -> transfer() 直接影響 USR 的流通供應量,因此同時依賴於授權完整性和抵押品完整性。在正常運作下,Resolv 合約 (0xa27a...5861) 中的 completeSwap() 僅在相應的抵押品存款被驗證後,才能由特權基礎設施密鑰(代碼中稱為 SERVICE_ROLE)進行調用。

漏洞分析
本次事件是特權密鑰洩露,攻擊者調用了受信任的結算邏輯,並在沒有對應抵押品流入的情況下觸達了 USR 鑄造路徑。一旦攻擊者獲得了特權簽名機構的控制權,completeSwap() 路徑便沒有提供鏈上的鑄造前置條件驗證;抵押品驗證完全依賴於鏈下授權。這將控制層面的洩露直接轉化為供應完整性的失敗。
攻擊分析
-
第 1 步:在漏洞利用前,攻擊者在交易 0x590b5c...de732c89 中提交了交換請求,為隨後的惡意交換完成準備了必要狀態。
-
第 2 步:使用洩露的特權密鑰,攻擊者調用
completeSwap()在三筆交易中鑄造了超過 8,000 萬USR:0xfe37f2...dc33743、0x41b6b9...db1f18f 和 0x7f9143...53a931d。
結論
此事件強調了穩定幣的安全性取決於嚴格的鏈上鑄造前置條件,而不僅僅是受信任的操作員角色。值得注意的是,此次事件的影響遠超 8,000 萬美元未經授權的 USR 鑄造。由於 Resolv 資產被廣泛用作多個借貸協議的抵押品,脫鉤現象引發了更廣泛的連鎖反應。正如 Chaos Labs 所報導,使用自動化收益追求分配的鏈上策展人缺乏實時風險控制,並繼續將新的資本引導至已經受損的市場。這場最初僅是局部性的攻擊迅速升級為跨協議的風險蔓延,使借貸協議面臨數百萬美元的壞帳。
關於 BlockSec
BlockSec 是一家全棧式區塊鏈安全與加密合規服務提供者。我們構建產品和服務,協助客戶進行程式碼審計(涵蓋智慧合約、區塊鏈與錢包)、即時攻擊攔截、事件分析、資金追蹤,並滿足協議與平台全生命週期中的 AML/CFT 合規要求。
BlockSec 已在各大著名會議上發表多篇區塊鏈安全論文,通報了多個 DeFi 應用的零日漏洞,攔截了數次駭客攻擊並挽救了超過 2,000 萬美元,保護了價值數十億美元的加密資產。
-
官方 Twitter 帳號:https://twitter.com/BlockSecTeam



