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

攻击者累计vTHE头寸(2025年6月至2026年3月)。9个月的逐步积累,随后被完全清算。
这个为期九个月的准备期全程在链上可见。每次存款后,协议的链上状态(总供应量、相对于上限的头寸集中度)都是公开可查询的。然而,每笔单独的交易都是例行的,不会触发常规警报。检测这种风险需要持续监控协议层面的状态变化,这是协议安全框架可能需要改进的领域。
攻击者通过多个地址进行操作,所有这些地址都可追溯到一个单一的Tornado Cash资助源:
| 地址 | 角色 |
|---|---|
| 0x7a79...f234 | 资助:从Tornado Cash收到7447ETH,存入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 | 1220万 | 84% | 在上限内 |
| 12:00 | 4950万 | 341% | 上限已绕过 |
| 12:42 | 5320万 | 367% | 清算前峰值 |
时间线数据来源:Venus复盘报告[1]。
由于THE链上流动性极薄,即使是适度的购买也会造成显著的价格影响。THE的汇总市场价格从约0.26美元飙升至超过0.53美元(根据CoinMarketCap)。Venus的弹性预言机(RedStone为主,Binance为备用)最初拒绝了飙升的价格:从UTC时间约11:55开始,BoundValidator回滚了约37分钟,因为Binance的行情严重偏离,一度达到近4美元[1]。在此期间,预言机无法更新THE的价格。随着攻击者在RedStone聚合的多个场所维持买入压力,两个行情源最终在大约UTC时间12:32汇聚于较高水平。弹性预言机接受了约0.51美元的价格[1],协议开始按照被操纵的汇率对攻击者的抵押品进行估值。

攻击前后THE代币的价格波动。
汇率膨胀(通过捐赠3.81倍)和价格操纵(0.26美元→0.51美元)的综合效应,使攻击者的借款能力大约放大了七倍。然而,THE的实际市场深度仅为该预言机报告值的一小部分。
过度扩张和崩溃(约12:42 UTC后)
在提取第一轮借款资产后,攻击者本可以停止。但他们继续将借来的资金用于购买更多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日) |
8048笔 |
| 独立清算调用者 | 254个 |
| 清算入口合约 | 0x0870...cf43 (Venus核心池清算器) |
| 从Venus总借入资产 | 约1490万美元 [1] |
| 剩余坏账 | 约215万美元 [1] |
Dune仪表板将0x0870...cf43记录为所有交易的清算人。该地址是Venus的核心池清算器合约,是一个无许可的入口点,任何外部调用者都可以通过它执行清算。查询实际交易发送者会发现254个不同的地址在8048笔交易中竞相争夺清算机会。
在8048笔vTHE清算交易中,8039笔针对攻击者的主要头寸(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 |
8039 | 约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个机器人通过8039笔交易竞相清算它,但查获的THE无法以接近其预言机报告值的价格出售。时间线显示了动态:
| 小时(UTC) | 交易次数 | 偿还债务 | 阶段 |
|---|---|---|---|
| 12:00-12:59 | 3416 | 约383万美元 | THE价格崩盘,滑点最大 |
| 13:00-13:59 | 4626 | 约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]),我们将这些作为权威来源。尽管绝对美元价值可能有所不同,但基本趋势和结论保持一致。
追踪资金
清算数据显示了头寸是如何被平仓的。要理解攻击者实际的盈亏(Profit and Loss),我们需要超越单个交易,比较攻击者投入的与所有清算完成后保留的。
投入的资金
攻击者的资金链:通过Tornado Cash收到7447ETH,存入Aave作为抵押,借入992万美元稳定币(USDT、DAI、USDC),并分配到多个钱包,在九个月内收购THE和vTHE。全部992万美元已兑换成Venus上的THE头寸。攻击发生后,所有THE抵押品都被清算,这笔投资实际上被抹去了。
从Venus借入的资金
在峰值(UTC时间12:42)时,攻击者总共从Venus借入了约1490万美元[1]:
| 地址 | 抵押品 | 借入资产 |
|---|---|---|
| 0x1a35(攻击者钱包) | 5320万THE |
667万CAKE + 2801BNB + 1972WBNB + 158万USDC + 20BTCB |
| 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头寸(7447ETH抵押品,约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个清算机器人处理了8048笔交易。清算市场活跃且竞争激烈。但仍然不够:遗留了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审计服务 : 提交请求



