2026年3月15日,一名攻击者绕过了Venus Protocol(BNB Chain)核心池中THE(Thena)市场的供应上限,将一个抵押头寸的杠杆率提高到预定限度的3.67倍,并借入了约1490万美元的资产[1]。早期的媒体报道将其描述为一次约370万美元的攻击,但链上情况更为复杂:协议和攻击者最终都亏损了。
Venus自身的分析报告[1]以及多项先前分析[2, 3, 4]已详细剖析了攻击机制,包括供应上限绕过、捐赠攻击向量以及基本的资金流。本文不再重复这些内容。相反,它考察了协议和攻击者双方的链上盈亏情况,并侧重于借贷协议防御暴露出的系统性风险。
通过分析攻击和清算过程以及追踪完整的资金流,本文发现,254个清算机器人通过8,048笔交易竞相平仓,但仍存在215万美元的坏账[1]。清算被触发但未成功。攻击者投资了992万美元,但在所有清算完成后仅保留了约520万美元,链上净亏损约470万美元。这些发现揭示了借贷协议中所有三道防线在实际压力下均失效,而出现的早期预警信号却未能有效采取行动。这暴露了现有保障措施的局限性,并强调了社区需要从此次事件中吸取教训,加强其监控和早期预警能力。
背景
供应上限是Compound风格借贷市场中标准的风险控制措施。它们限制了作为抵押品可以存入的资产数量,为协议对波动性或低流动性代币的敞口设定了一个上限。Venus为其THE市场设定了1450万THE的供应上限,这反映了该代币在链上流动性的稀薄。
在供应上限之后,还有两层额外的安全措施。基于预言机的抵押品估值决定了借款人可以从其存款中提取多少。如果一个头寸变得抵押不足,预期的竞争性清算市场将介入:第三方机器人以折扣价偿还债务并夺取抵押品,从而保持协议的偿付能力。
这种三层结构(敞口限制、估值、清算)构成了大多数借贷协议的风险框架。Venus THE事件同时测试了这三层,而它们都显得不足。以下章节将探讨每一层如何被测试以及其在何处出现不足。
攻击
绕过:捐赠攻击
大多数Compound分支中的供应上限仅限制铸造路径:即在发放vTokens之前检查上限的标准存款函数。它们并未考虑直接转账到合约地址的代币。
攻击者利用了这个漏洞。直接ERC-20转账到vTHE合约会增加合约的底层代币余额,而不会铸造新的vTokens。在Compound风格的会计中,这会膨胀vTokens与底层资产之间的兑换率。任何现有的vToken持有者都会受益:他们的vTokens现在代表了对更多底层代币的要求权,从而增加了协议所见的有效抵押品价值。
这种“捐赠攻击”是Compound分支中一种已知的漏洞类别。任何仅在铸造路径上强制执行供应上限的协议都易受攻击:对底层资产的实际敞口可能远远超过上限,而不会触发任何限制检查。
准备(2025年6月至2026年3月)
攻击并非始于3月15日。攻击者通过Tornado Cash通过一个资金地址(0x7a79...f234)收到了7,447 ETH,将ETH作为抵押品存入Aave,并借入了992万美元的稳定币(USDT、DAI、USDC)。这些资金被分散到多个钱包中,从2025年6月开始购买THE,到攻击发生当天上午,逐渐建立了一个总头寸,达到了供应上限的84%(约1220万THE)。

这个长达九个月的准备期一直可以在链上看到。每次存款后,协议的链上状态(总供应量、相对于上限的头寸集中度)都可以公开查询。然而,每一笔单独的交易都是例行的,不会触发常规警报。检测这种风险需要持续监控协议级别的状态变化,这是协议安全框架可能需要改进的领域。
攻击者通过多个地址进行操作,所有这些地址都可追溯到单一的Tornado Cash资金来源:
| 地址 | 角色 |
|---|---|
| 0x7a79...f234 | 资金来源:从Tornado Cash收到7,447 ETH,存入Aave,借入992万美元稳定币 |
| 0x43c7...2f82 | 攻击者EOA |
| 0x737b...a619 | 攻击合约:在第二至第三阶段执行捐赠绕过和借款。于12:04 UTC被清算。 |
| 0x1a35...6231 | 攻击者钱包:通过铸造路径提供THE,持有vTHE |
执行(2026年3月15日)
UTC时间11:00,攻击者在协议中持有1220万THE,仍未超过1450万的上限。大约在UTC时间11:55,攻击者部署了攻击合约(0x4f477e...f5663f)[1],在构造函数中原子地执行了捐赠绕过和初始借款。六个钱包总共向vTHE合约直接转账了约3600万THE,使兑换率膨胀了3.81倍。攻击合约已获准以0x1a35的头寸进行借款,然后利用膨胀的抵押品借入了资产。
从UTC时间约12:00到12:42,两个地址在递归杠杆循环中执行了后续交易[1]:
- 利用膨胀的抵押品借入资产(CAKE、BNB、BTCB、USDC)
- 在公开市场上将借入的资产兑换成THE
- 将THE捐赠给vTHE合约,进一步膨胀兑换率并推高价格
- 重复操作,增加借款能力
| 时间(UTC) | 提供的THE | 上限百分比 | 状态 |
|---|---|---|---|
| 11:00 | 12.2M | 84% | 在上限内 |
| 12:00 | 49.5M | 341% | 上限已绕过 |
| 12:42 | 53.2M | 367% | 清算前的高峰 |
时间线数据来自Venus分析报告[1]。
由于THE在链上的流动性极度稀薄,即使是适度的购买也会造成显著的价格影响。THE的总市场价格从约0.26美元飙升至超过0.53美元(根据CoinMarketCap)。Venus的弹性预言机(RedStone为主要,Binance为备用)最初拒绝了飙升的价格:从UTC时间约11:55开始,BoundValidator在Binance数据严重偏离,一度接近4美元的情况下,回滚了约37分钟[1]。在此期间,预言机无法更新THE的价格。随着攻击者在RedStone聚合的多个渠道持续施加购买压力,两条数据源最终在大约UTC时间12:32趋于一致,达到了高位。弹性预言机接受了价格,约为0.51美元[1],协议开始以操纵的汇率对攻击者的抵押品进行估值。

兑换率膨胀(通过捐赠3.81倍)和价格操纵(0.26美元→0.51美元)的综合效应,将攻击者的借款能力放大了约七倍。然而,THE的真实市场深度甚至不到该预言机报告价值的一小部分。
过度扩张与崩溃(UTC时间约12:42起)
在提取第一轮借入资产后,攻击者本可以停止。然而,他们继续将借入的资金用于购买更多THE,试图推动价格进一步上涨。这使得健康因子接近1[1]。在UTC时间12:42,头寸达到峰值,为5320万THE。
一旦购买压力停止,就没有什么能支撑THE被抬高的价格了。清算机器人和恐慌性持有者的抛售压力淹没了稀薄的买入端流动性,THE的价格从约0.51美元跌至约0.22美元[1],远低于攻击前的0.26美元。连锁清算平仓了约4200万THE的抵押品[1],协议的最后一道防线被激活:第三方清算人介入以限制损失。
清算现实
在DeFi借贷中,假设很简单:当头寸亏损时,第三方清算人介入,偿还债务,以折扣价夺取抵押品,并保持协议的偿付能力。Venus THE事件并未打破这一机制,而是暴露了其局限性。
他们来了。但不够。
链上清算数据(来源Venus的Dune仪表板[5],并辅以额外的交易级别分析)显示:
| 指标 | 数值 |
|---|---|
| 总清算交易(vTHE,3月15日) | 8,048 |
| 唯一清算调用者 | 254 |
| 清算入口合约 | 0x0870...cf43 (Venus核心池清算人) |
| 从Venus借入的总资产 | 约1490万美元 [1] |
| 剩余坏账 | 约215万美元 [1] |
Dune仪表板将0x0870...cf43记录为所有交易的清算人。该地址是Venus的核心池清算人合约,是一个无许可的入口,任何外部调用者都可以通过它执行清算。查询实际交易发送者显示,254个不同的地址在8,048笔交易中争夺清算机会。
在8,048笔vTHE清算交易中,8,039笔针对攻击者的主要头寸(0x1a35);其余9笔清算了四名持有少量vTHE的无关用户,他们在价格暴跌中受到波及。
参与清算并未带来完全恢复。机器人夺取了vTHE并偿还了以BNB、BTCB、CAKE、USDC和WBNB计价的债务。为了实现任何利润,他们需要将这些THE在公开市场上出售。在5300万THE刚刚涌入一个只有数百万美元深度的市场时,被夺取的抵押品无法在不造成巨额滑点的情况下兑换成稳定价值。结果是:215万美元的债务无法覆盖,成为Venus资产负债表上的坏账。
两个头寸,两种结果
攻击者操作了两个具有不同抵押品类型的头寸[2]。这两个头寸起到了互补的作用:0x1a35是累积THE九个月并利用膨胀抵押品借入有价资产的主要头寸,而0x737b是执行捐赠绕过的攻击合约,通过原子方式借入THE(以USDC为抵押品)以进一步膨胀兑换率。它们的清算结果在时间和机制上有所不同:
| 地址 | 抵押品 | 交易数 | 偿还债务 | 结果 |
|---|---|---|---|---|
| 0x737b (攻击合约) | vUSDC | 603 | 72.9万美元 | 约35.9万美元 THE债务未偿 [1] |
| 0x1a35 (攻击者钱包) | vTHE | 8,039 | 约1200万美元追回 | 约179万美元坏账(夺取的THE无法变现) |
0x737b头寸最先被清算,于UTC时间12:04在拉升阶段开始[2]。其抵押品为158万USDC(固定价值),而债务以THE计价。该头寸以THE约0.26美元的极低保证金创建。随着攻击者在DEX上持续购买THE并将其市场价格推高至约0.51美元,THE债务的价值远超USDC抵押品,触发了清算。清算人夺取了USDC,但即使进行了603笔交易,夺取的抵押品也未能完全覆盖THE债务,仍有约185万THE(约35.9万美元)未偿[1]。这很可能是故意的:0x737b的目的是为捐赠绕过借入THE,一旦任务完成,损失USDC抵押品是可以接受的代价。
0x1a35的清算讲述了真实的故事。其抵押品本身就是THE。254个机器人通过8,039笔交易争相清算它,但夺取的THE无法以接近其预言机报告的价格出售。时间线显示了其动态:
| 小时(UTC) | 交易数 | 偿还债务 | 阶段 |
|---|---|---|---|
| 12:00-12:59 | 3,416 | 约383万美元 | THE价格暴跌,滑点最大 |
| 13:00-13:59 | 4,626 | 约1040万美元 | 价格趋于稳定,大量清算 |
两个头寸都导致了协议的损失:0x737b未偿还的THE债务造成约35.9万美元的损失,其余则来自0x1a35的无法变现的THE抵押品。在Venus总共借入的约1490万美元中[1],清算人设法追回了大部分。剩余的约215万美元成为Venus资产负债表上的坏账。
关于Dune数据的说明: Venus Dune仪表板[5]使用其
daily_market_info表中的每日快照价格来估算被夺取的抵押品和偿还的债务。由于THE的价格在一天内从约0.53美元跌至0.22美元,从Dune派生的美元数值(包括上文的小时 breakdown 和下文收入端数值)可能与实时值有所偏差。在有官方数据(总借款约1490万美元,坏账约215万美元[1])的情况下,我们将其作为权威来源。虽然绝对美元值可能有所不同,但潜在的趋势和结论保持一致。
资金追踪
清算数据表明了头寸是如何被平仓的。要理解攻击者的实际盈亏(P&L),我们需要超越个别交易,比较攻击者投入了什么以及在所有清算完成后保留了什么。
投入的资金
攻击者的资金链:通过Tornado Cash收到7,447 ETH,存入Aave作为抵押品,借入992万美元稳定币(USDT、DAI、USDC),并分散到多个钱包以在九个月内购买THE和vTHE。全部992万美元已转换为Venus上的THE头寸。攻击后,所有THE抵押品都被清算,这项投资基本被抹去。
从Venus借入的资金
在高峰期(UTC时间12:42),攻击者总共从Venus借入了约1490万美元[1]:
| 地址 | 抵押品 | 借入资产 |
|---|---|---|
| 0x1a35 (攻击者钱包) | 5320万 THE | 667万 CAKE + 2,801 BNB + 1,972 WBNB + 158万 USDC + 20 BTCB |
| 0x737b (攻击合约) | 158万 USDC | 463万 THE |
并非所有借入的资产都作为利润提取。很大一部分被重新循环用于攻击:
- 0x1a35 反复从Venus借入BNB,兑换成THE,并将THE直接捐赠给vTHE合约,以维持价格拉升和兑换率膨胀[1]。
- 0x737b 在第三阶段(函数签名
0x91f38bff)执行了48笔交易。其中两笔借入并保留了有价资产(CAKE、WBNB):0x4253a8...eca296和0xfd64d0...154808。其余的则是借入-兑换-捐赠循环:从Venus借入资产,将其兑换成THE,并将THE捐赠给vTHE合约。 - 0x737b借入的158万USDC立即作为其自身的抵押品再次存入[1]。这笔USDC后来在清算中被夺取,从未离开协议。
- 0x737b借入的463万THE直接捐赠给vTHE合约以膨胀兑换率[1]。
攻击者保留的资产
在两个Venus头寸都被清算后,我们检查了所有攻击者控制地址的最终代币余额(通过DeBank):
| 地址 | 代币 | 金额 | 美元价值 |
|---|---|---|---|
| 0x1a35 | CAKE | 1,500,000 | 约224万美元 |
| 0x1a35 | BTCB | 20 | 约148万美元 |
| 0x1a35 | WBNB | 200 | 约14万美元 |
| 0x737b | WBNB | 1,972.53 | 约133万美元 |
| 0x737b | CAKE | 16,093 | 约2万美元 |
| 总计保留 | 约521万美元 |
Aave头寸(7,447 ETH抵押品,约992万美元债务)保持开放且未改变(健康因子为1.45)。992万美元的稳定币已提取到BNB Chain并兑换成THE,但这并未减少Aave的债务。从Aave的角度来看,攻击者只是一个拥有足够抵押品的借款人。攻击者保留了ETH(减去未偿债务)的使用权。
净链上盈亏
| 美元 | |
|---|---|
| 总投资(Aave借款→THE,所有在清算中损失) | -992万美元 |
| 总保留(Venus借入资产在清算后保留) | +约521万美元 |
| 净链上亏损 | 约-471万美元 |
链上操作显然无利可图。从Venus借入的约1490万美元中,攻击者仅保留了约521万美元。其余的要么被重新循环用于THE捐赠循环,要么在清算中被夺取,要么被协议坏账吸收。
协议损失
在所有清算完成后,Venus留下了约215万美元的坏账[1]:
| 资产 | 金额 | 美元价值 |
|---|---|---|
| CAKE | 约118万 | 约179万美元 |
| THE | 约185万 | 约36万美元 |
| 总计坏账 | 约215万美元 |
价值分配
| 方 | 净盈亏 | 说明 |
|---|---|---|
| 攻击者(链上) | 约-471万美元 | 投资992万美元,保留约521万美元 |
| Venus协议 | -215万美元 | 所有清算后的坏账[1] |
| 第三方清算人 | 未知 | 254个机器人参与;盈亏取决于THE的退出价格 |
| 攻击者(中心化交易所) | 未知 | 可能存在永续合约头寸,无法验证 |
在典型的DeFi攻击中,协议或LP遭受损失,攻击者获利,而两者之间的“缺失价值”被第三方捕获,如清算人、套利交易者和区块构建者。此次事件打破了这一模式:攻击者在链上(约-471万美元)也亏损了。这是否被场外头寸(例如,中心化交易所的永续期货[3, 4])所抵消,仍然无法验证。
教训:三道防线
此次攻击利用了一个已知漏洞,使用了一个教科书式的杠杆循环,仍然造成了215万美元的坏账。真正的失败并非是单一机制,而是整个风险堆栈中弱点的累积效应。
第一道:敞口限制
Venus的供应上限仅限制了标准的mint路径。直接代币转账到vToken合约完全绕过了它。任何依赖会计假设的风险控制都必须验证这些假设在所有可能的改变状态的操作中是否成立,而不仅仅是预期的存款流程。
第二道:抵押品估值
弹性预言机报告的价格(约0.51美元)接近聚合市场价格,并且BoundValidator正确拒绝了极端情况下的Binance数据37分钟[1]。然而,即使是“正确”的市场价格,对于价值数千万的抵押品来说也毫无意义,因为底层市场只有数百万美元的深度[3]。这个头寸允许攻击者借入约1490万美元的资产[1],但当清算时,THE抵押品只能实现其预言机报告价值的一小部分,导致总计215万美元的坏账。对于流动性差的代币,名义上的过度抵押在抵押品无法按预言机价格出售时,并没有提供真正的安全边际。借贷协议应纳入考虑市场深度、预期滑点和集中度风险的流动性调整抵押品估值。
第三道:清算
整个借贷模型都假设,当头寸亏损时,清算人会介入并使协议完整。在此次事件中,仅在vTHE头寸上,就有254个清算机器人处理了8,048笔交易。清算市场活跃且竞争激烈。但这仍然不够:仍有215万美元的坏账。问题不是清算人不足,而是流动性不足。当5300万THE涌入一个只有数百万美元深度的市场时,无论有多少机器人竞争,都无法将夺取的抵押品转化为足够的价值来覆盖未偿债务。当抵押品的实际可变现价值与其预言机报告值大幅偏离时,协议不能将清算视为可靠的后备。
监控差距
九个月的积累阶段从一开始就在链上可见:一个实体接近供应上限,在低流动性资产中的集中度增加,在数月内逐渐建立头寸。Venus已承认“一些社区成员在利用攻击前就标记了该地址”,但指出“该地址当时完全在协议限制范围内运行”,并且作为一个无许可协议,“我们不能也不应该仅仅基于怀疑而冻结或拉黑地址”[1]。作为其补救措施的一部分,Venus表示它“正在探索链上风险监控机制,这些机制可以标记异常的积累模式并触发治理层面的审查”[1]。
错失的信号超出了缓慢的积累。根据Venus的分析报告[1],预言机的防御机制确实按设计工作:BoundValidator拒绝了极端的Binance数据并回滚了37分钟,有效阻止了初始操纵窗口期间的价格更新。然而,没有监控系统对此异常进行升级。在某个预言机持续回滚的市场,而一个实体持有超过供应上限3倍的资产,这是一个高严重性的实时信号。三十七分钟是一个重要窗口。如果这触发了一个自动熔断器,或者甚至是一个手动审查,在预言机重新收敛之前暂停THE市场,就可能避免大部分借款。这也暴露了一个更广泛的差距:协议防御机制在激活后默默地解决问题,而没有任何警报或升级路径,只能防止最简单的攻击。
这表明存在两个独立的能力差距。第一个是长期头寸监控:跟踪一个实体在低流动性资产中的集中度随时间相对于供应上限、市场深度和清算能力的变化。在九个月的积累过程中,没有一笔交易是恶意的,也没有违反任何规则。第二个是实时预言机健康监控:检测异常集中度市场的持续预言机异常,并将其升级为熔断机制。两者都需要持续的监控基础设施,它超越了单独的交易,将地址和时间窗口的链上状态变化关联起来,在系统性风险显现之前将其暴露出来。
结论
Venus THE事件并未揭示新颖的漏洞。它展示了一个已知的攻击向量,如果耐心执行,可以压倒协议的整个风险堆栈,因为每层都假设其他层会保持稳定。警报在链上持续数月可见,但检测与干预之间的差距仍未解决。通过具有流动性感知能力的风险参数、自动熔断器和头寸级监控来弥合这一差距,是这次事件给DeFi借贷社区留下的核心教训。
参考资料
- [1] Venus Protocol, "THE Market Incident: Post-Mortem": https://community.venus.io/t/the-market-incident-post-mortem/5712
- [2] AllezLabs, "Venus Protocol THE Incident Timeline": https://x.com/AllezLabs/status/2033239532355858536
- [3] hklst4r, "Venus THE Attack Analysis": https://x.com/hklst4r/status/2033192855443808515
- [4] EmberCN, "Venus THE Attacker Fund Flow": https://x.com/EmberCN/status/2033204517467308144
- [5] Venus Protocol Liquidation Dashboard (Dune): https://dune.com/xvslove_team/venus-liquidations
关于BlockSec
BlockSec是一家全栈区块链安全和加密合规提供商。我们构建产品和服务,帮助客户在协议和平台的整个生命周期中进行代码审计(包括智能合约、区块链和钱包)、实时拦截攻击、分析事件、追踪非法资金,并满足AML/CFT义务。
BlockSec已在知名会议上发表多篇区块链安全论文,报告了多个DeFi应用的零日攻击,阻止了多次黑客攻击,挽救了超过2000万美元的损失,并保障了数十亿美元的加密货币。
-
官方Twitter账号:https://twitter.com/BlockSecTeam
-
🔗 BlockSec审计服务 : 提交申请



