在过去一周(2026/03/16 - 2026/03/22),BlockSec 检测并分析了七起攻击事件,估计总损失约为 8270 万美元。下表总结了这些事件,并在后续的小节中提供了对每种情况的详细分析。
| 日期 | 事件 | 类型 | 估计损失 |
|---|---|---|---|
| 2026/03/15* | Venus 事件 | 捐赠攻击与市场操纵 | ~$2.15M |
| 2026/03/17 | dTRINITY 事件 | 精确度损失 | ~$257K |
| 2026/03/17 | Fun.xyz 事件 | 访问控制问题 | ~$85K |
| 2026/03/18 | Keom 事件 | 业务逻辑缺陷 | ~$35K |
| 2026/03/18 | ShiMama 事件 | 访问控制问题 | ~$35K |
| 2026/03/19 | BlindBox 事件 | 业务逻辑缺陷 | ~$99K |
| 2026/03/22 | Resolv 事件 | 私钥泄露 | ~$80M |
*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,这使其容易受到捐赠攻击。任何直接将 THE 转入 vTHE 市场合约都会增加 cash,从而提高 exchangeRate。攻击者利用这一点将 exchangeRate 推高了约 3.81 倍,放大了其现有 vTHE 头寸的抵押品价值。
市场操纵
THE 代币的链上流动性较浅,使其现货价格容易受到相对温和的买入压力操纵。协议的预言机旨在拒绝与参考价格偏差过大的价格,在攻击期间约 37 分钟内正确地拒绝了极端价格。然而,持续的买入压力最终将 THE 代币的价格推升至约 0.51 美元,约为其攻击前价格的两倍,预言机最终接受了该价格。

这两个向量相互加强。捐赠攻击推高的 exchangeRate 放大了每个 vTHE 单位的抵押品价值,而操纵的 THE 代币价格进一步推高了借贷能力。两者结合,使得攻击者能够以大约是供应上限 3.67 倍的头寸借入约 1490 万美元的流动性资产。
攻击分析
以下分析基于示例攻击交易 0xce6e3e...1f5fb0e。
-
步骤 1:与攻击者关联的钱包在约九个月的时间里通过 77 笔与 TornadoCash 相关的交易收到了 7,447 枚
ETH。这些ETH被存入 Aave,并借入了约 992 万美元的稳定币,用于建立约 1220 万枚THE的vTHE头寸,约占 1450 万枚THE供应上限的 84%。 -
步骤 2:在第一笔攻击交易中,六个地址直接向
vTHE市场合约转入了约 3600 万枚THE。攻击合约还借入了 158 万枚USDC,重新存入,然后借入了约 460 万枚THE并直接转入vTHE。这使得exchangeRate提高了约 3.81 倍。

- 步骤 3:在后续交易中,攻击者借入了包括
CAKE、BNB、BTCB和USDC在内的流动性资产。攻击者继续用借入的资产购买THE,并向vTHE捐赠更多THE,形成一个循环,既增加了头寸的借贷能力,又提高了THE代币的市场价格。

-
步骤 4:
THE代币的价格从约 0.2 美元上涨,币安价格源一度接近 4 美元。协议的预言机拒绝极端价格约 37 分钟后,最终接受了约 0.51 美元的价格。 -
步骤 5:到东八区时间 20:42,攻击者的头寸达到约 5220 万枚
THE,约是供应上限的 3.67 倍,总借贷敞口约 1490 万美元。 -
步骤 6:该头寸随后进入大规模清算。在 254 个清算地址的 8,048 次清算交易中,约 4200 万枚
THE抵押品被清算。随着卖出持续,THE代币跌至约 0.22 美元。清算所得无法覆盖全部债务,导致 Venus 产生约 215 万美元的净坏账。
结论
此事件未暴露任何新的漏洞。它表明,当每一层都假定其他层能够承受时,一个臭名昭著的攻击向量,如果被系统性地执行,就可以压倒协议的整个风险栈。数月以来,链上已出现预警信号,但检测与干预之间的差距未能解决。通过流动性感知的风险参数、自动熔断器和头寸级别监控来弥合这一差距,是本次事件给其他借贷协议留下的核心教训。
如需详细分析,请参阅我们的深度分析文章 [1]。
参考文献
2. dTRINITY 事件
简要总结
2026 年 3 月 17 日,以太坊上的 Aave V3 分叉借贷协议 dTRINITY 的 dLEND 借贷市场遭到利用,造成约 25.73 万美元的损失。根本原因是 Aave V3 分叉固有的空余额市场漏洞。当一个储备金的流动性接近零时,重复的闪电贷溢价累积会导致 liquidityIndex 达到极端值。一旦储备金账户被扭曲,攻击者就利用了存款和提款路径中的精度损失,夸大了抵押品,借入了 dUSD,并收回了存入的 cbBTC,获得了净利润。
背景
dTRINITY 包含 dUSD 稳定币系统和 dLEND,后者是 Aave V3 的一个分叉借贷市场。在核心 L2Pool 合约(0xfda3...e19e84)中,每种资产都有自己的储备金,储备金账户是基于缩放余额和储备金水平 liquidityIndex 的。用户的当前底层余额由缩放余额乘以储备金的归一化收益得出。
闪电贷溢价通过 cumulateToLiquidityIndex() 添加到储备金账户中,其中:
nextLiquidityIndex = ((amount / totalLiquidity) + 1) * reserve.liquidityIndex
当 totalLiquidity 变得非常小时,每次溢价累积都会以异常快的速度推高 liquidityIndex。

漏洞分析
攻击的关键条件是 dLEND-cbBTC 市场(0x504d...3acc)的储备金接近空值。一旦储备金被压缩到一个缩放份额,闪电贷溢价就不再在有意义的供应基础上分散。因此,重复的闪电贷导致 liquidityIndex 极快地上升。
在 liquidityIndex 被推高后,底层到缩放的转换进入了极端的四舍五入状态。在这种状态下,一笔小的存款可以铸造一个额外的份额,而一笔大得多的提款仍然只能销毁一个份额。这种不对称性使得攻击者能够夸大 aCbBTC 抵押品,并从另一个储备金中借入实际的 dUSD,因为健康检查是在 Pool 层面进行的,而被损坏的 cbBTC 储备金直接影响了跨资产的借贷能力。
攻击分析
此次利用包括两笔交易:0x8d33d6...40ae7139 和 0xbec4c8...4fc33260。
交易 1: liquidityIndex 操纵
-
步骤 1:从 Morpho Blue 借入
cbBTC。 -
步骤 2:将
cbBTC存入 dLEND-cbBTC 以铸造 100 个缩放份额。 -
步骤 3:提取 99 个单位的份额,只留下 1 个份额,将 dLEND-cbBTC 储备金压缩为几乎为空的缩放供应状态。
-
步骤 4:直接将 80,000,000 单位的
cbBTC(即 0.8cbBTC)转移到 dLEND-cbBTC aToken。 -
步骤 5:执行 150 次
Pool.flashLoan()调用,将溢价累积到储备金账户中,将liquidityIndex推高至 6,226,621,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() 函数,该函数缺乏访问控制,并且未能将桥接调用数据绑定到预期的接收者。此漏洞允许攻击者将执行重定向到受信任的结算路径,并将资金转移到攻击者控制的智能账户。
背景
CheckoutPool 是 Fun.xyz 支付基础设施中的核心结算合约。在正常流程中,用户通过 deposit() 创建支付,然后由受信任的操作员通过 bridge() 和 execute() 等结算路径进行处理。对于桥接操作,bridge() 函数根据调用者提供的 bridgeParams.target 和 bridgeParams.callData 执行外部调用。
漏洞分析
根本原因是旧版 CheckoutPool(0x1304...2ec01a)通过 bridge() 函数暴露了一个敏感的结算路由路径,但没有适当的访问控制,并且未能将外部提供的桥接调用数据与预期接收者进行验证。具体来说:
-
旧版实现未对
bridge()强制执行onlyOperator,允许任何外部调用者在通过deposit()创建支付后调用该函数。 -
bridge()将调用者提供的bridgeParams传递给_bridgeToRecipient(),后者执行外部调用,而未将接收者与支付记录进行验证。



一个额外的操作条件使得此次利用成为可能:在攻击发生时,旧版 CheckoutPool 仍然在 CheckoutPaymaster 中保留了操作员的权限。这使得精心构造的 bridge() 调用能够到达 CheckoutPaymaster.activateAndCall(),然后调用较新的 CheckoutPool.execute() 路径,将资金转移到攻击者控制的地址。
攻击分析
以下分析基于攻击交易 0x957bcf...1f4f5a。
-
步骤 1:创建 ERC-4337 智能账户 0xb648,并将其指定为外部 UserOperation 中的发送方和支付方。
-
步骤 2:在旧版和新版 CheckoutPool 中调用
deposit(),在新的 CheckoutPool 中创建支付记录,结算金额为 85,730USDC。 -
步骤 3:在旧版 CheckoutPool 中调用
bridge(),并提供恶意的bridgeParams:将bridgeParams.target设置为 CheckoutPaymaster,并将bridgeParams.callData编码为对activateAndCall()的调用,并将外部 UserOperation 作为其内部负载。

- 步骤 4:到达新版 CheckoutPool(0x1929...0215)中的
execute(),该函数将 85,730 枚USDC转账至 0xb648,该地址在外部 UserOperation 中被指定为ops[0].sender。

- 步骤 5:进入
EntryPoint.handleOps():由于 0xb648 同时作为发送方和支付方,账户验证和支付方验证均在攻击者控制之下,允许攻击者获利 85,730USDC。
结论
此次事件是由于旧版 CheckoutPool 在其 bridge() 路径上既缺乏访问控制又缺乏调用数据到接收者的绑定,导致损失约 8.57 万美元。为防止类似事件发生,协议应在敏感的路由和结算流程中强制执行严格的访问控制,确保外部提供的负载与协议派生的接收者保持一致,并在部署了已修补的替代品后移除过时的合约的受信任权限关系。
4. Keom 事件
简要总结
2026 年 3 月 18 日,Polygon zkEVM 上的 Compound V2 分叉借贷协议 Keom 遭到利用,损失约 3.5 万美元。根本原因是 redeemFresh()(由 redeemUnderlying() 调用)中的会计逻辑存在缺陷。该函数将份额减少限制在用户的实际余额范围内,但未相应地重新计算底层提款金额。这种不匹配允许攻击者提取远超其份额应允许的资产。
背景
Keom 是 Compound V2 的一个分叉借贷协议。用户将 ETH 存入市场并获得 kETH。当用户赎回时,协议使用当前汇率将 kETH 份额转换回 ETH。协议中存在两个赎回入口点:redeem() 用于按份额金额赎回,redeemUnderlying() 用于按所需的底层金额赎回。
漏洞分析
缺陷位于 kETH 市场(www.oklink.com/polygon-zkevm/address/0x4c6e83b9f7e8835f583be748de899c5881fbc403/contract)的 redeemFresh() 中,该函数由 redeemUnderlying() 调用。用户控制的 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.6 枚ETH),利用会计缺陷将ETH从市场中榨干。

结论
此次事件是由一个会计漏洞引起的,该漏洞在将 redeemTokens 限制为用户的实际余额后未能重新计算 redeemAmount,导致损失约 3.5 万美元。赎回逻辑在任何上限或调整后都必须重新计算所有依赖值,以保持份额与底层资产的不变性。Compound V2 分叉应仔细审查此路径,因为其他衍生品中可能存在类似的缺陷。
5. ShiMama 事件
简要总结
2026 年 3 月 18 日,BNB Chain 上的通缩代币协议 ShiMama 遭到利用,损失约 3.5 万美元。根本原因是 executePairBurn() 函数缺乏访问控制,允许任何用户触发配对储备金提取和销毁,从而实现价格操纵。
背景
ShiMama Protocol 包含一个链上通缩机制,旨在从 AMM 配对中提取代币并进行销毁。该机制在 ShiMama Protocol 和 ShiMama Token 中实现。ShiMama Protocol 中的 executePairBurn() 函数根据调用者提供的 referenceIn 参数计算提取量:
pullAmt = referenceIn * pairBurnBpOnSell / 10_000
然后,它调用 ShiMama Token 的 forcePullFromPair(),接着调用 pair.sync() 并销毁提取的代币。
漏洞分析
根本原因是 ShiMamaProtocol 合约(0x5049...0b49a)中的 executePairBurn() 缺乏访问控制。该函数可以被任何用户不受限制地调用,因此任何人都可以触发特权储备金移动和配对同步。referenceIn 也由调用者控制,并且未绑定到任何实际的卖出金额。在 ShiMamaToken.forcePullFromPair() 中,协议可以直接从 Pancake 配对中移动余额,没有任何限制,从而实现任意的储备金提取,以及即时的同步,进而实现现货价格操纵。

攻击分析
以下分析基于攻击交易 0x13959b...3c20e001。
-
步骤 1:从 Moolah 闪电贷中借入
WBNB。 -
步骤 2:将 30.78e18 枚
ShiMama(在早期交易中预先准备好的)转入攻击合约。由于直接从 Pancake 配对购买ShiMama被禁用,攻击者通过在攻击发生前在 ShiMama Protocol 中提供和提取流动性来获取ShiMama。 -
步骤 3:调用
executePairBurn()以从 Pancake 配对中提取 1,311,349,143.96 枚ShiMama代币并销毁,从而有效地推高了ShiMama的价格。 -
步骤 4:攻击者在 PancakeSwap 上以推高的价格将 30.78e18 枚
ShiMama兑换成 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 发生基础设施密钥泄露事件,导致未经授权执行特权交换最终逻辑。在此事件中,攻击者滥用特权函数铸造了超过 8000 万枚未抵押的 USR。影响超出了直接铸造事件,因为由此产生的 USR 脱钩触发了在 Resolv 资产用作抵押品的更广泛的借贷协议的蔓延。
背景
Resolv 是一个稳定币协议,其中 USR 的发行取决于抵押品支持的交换结算。其交换完成流程 completeSwap() -> mint() -> transfer() 直接影响 USR 的流通供应量,因此依赖于授权完整性和抵押品完整性。在正常操作下,Resolv 合约(0xa27a...5861)中的 completeSwap() 只能由特权基础设施密钥(代码中命名为 SERVER_ROLE)在相应的抵押品存款已验证后调用。

漏洞分析
此次事件是由于特权密钥泄露,导致调用了受信任的结算逻辑并到达了 USR 铸造路径,但没有相应的抵押品流入。一旦攻击者获得了特权签名授权的控制权,completeSwap() 路径就没有提供任何链上铸造先决条件强制执行;抵押品验证完全依赖于链下授权。这使得控制平面泄露直接转化为供应完整性故障。
攻击分析
-
步骤 1:在利用之前,攻击者在交易 0x590b5c...de732c89 中提交了交换请求,为后续恶意交换完成准备了必要的状态。
-
步骤 2:使用泄露的特权密钥,攻击者在三笔交易中调用
completeSwap()铸造了超过 80,000,000 枚USR:0xfe37f2...dc33743,0x41b6b9...db1f18f,和 0x7f9143...53a931d。
结论
此次事件凸显了稳定币安全依赖于硬性的链上铸造先决条件,而不仅仅是受信任的操作员角色。值得注意的是,此次事件的影响远远超出了未经授权的 8000 万美元 USR 铸造。由于 Resolv 资产广泛用作多个借贷协议的抵押品,脱钩事件引发了更广泛的蔓延。正如 Chaos Labs 报道的那样,链上策展人使用自动收益寻求分配,缺乏实时风险控制,并继续将新资本导向已受损的市场。一场局部利用事件迅速升级为跨协议蔓延事件,导致借贷协议损失数百万美元的坏账。
关于 BlockSec
BlockSec 是一家全栈区块链安全和加密合规提供商。我们构建产品和服务,帮助客户在协议和平台的整个生命周期中进行代码审计(包括智能合约、区块链和钱包)、实时拦截攻击、分析事件、追踪非法资金,并满足 AML/CFT 的义务。
BlockSec 在顶级会议上发表了多篇区块链安全论文,报告了多个 DeFi 应用的零日攻击,阻止了多次黑客攻击,挽救了超过 2000 万美元,并保护了数十亿美元的加密货币。
-
官方 Twitter 账号:https://twitter.com/BlockSecTeam
-
🔗 BlockSec 审计服务 : 提交请求
-
🔗 Phalcon 安全应用: 预约演示



