在过去的一周(2026/05/18 - 2026/05/24)中,BlockSec 在多个区块链生态系统中识别出多起攻击事件。下表列出了 5 起重大事件,估计总损失约为 1.046 亿美元。
| 日期 | 事件 | 类型 | 预估损失 |
|---|---|---|---|
| 2026/05/18 | Verus 事件 | 业务逻辑缺陷 | ~$1170 万 |
| 2026/05/18 | EchoProtocol 事件 | 私钥泄露 | ~$7670 万 |
| 2026/05/20 | RetoSwap 事件 | 业务逻辑缺陷 | ~$270 万 |
| 2026/05/22 | Polymarket 事件 | 私钥泄露 | ~$70 万 |
| 2026/05/24 | StablR 事件 | 私钥泄露 | ~$1280 万 |
其中两起事件入选深度分析:
- Verus:攻击者利用 Verus-Ethereum 桥的类型校验漏洞,提交了精心构造的补充导出输出(supplemental export output),该桥将其误识别为有效的基本导出。跨链消息语义属于其攻击面的一部分。
- RetoSwap:P2P 交易流程中的协议级身份验证缺陷,允许攻击者通过发送伪造的 ACK 消息来劫持仲裁者角色。攻击者完全在链下破坏了多签钱包的创建过程。
Web3 最佳安全审计机构
在产品上线前验证设计、代码和业务逻辑
每周重点:Verus
之所以重点介绍此事件,是因为攻击者蓄意滥用了一种特定的跨链导出类型,这表明其对 Verus 链的内部设计有深入的了解。此次漏洞利用证明,包括补充数据字段和编码边界在内的跨链消息格式确实属于攻击面的一部分,需要与密码学证明验证同等严谨的安全性审查。
2026 年 5 月 18 日,连接 Verus L1 链和以太坊的跨链桥 Verus-Ethereum Bridge 遭到漏洞利用,导致价值约 1170 万美元的 ETH、tBTC 和 USDC 被盗 [1][2]。根本原因是以太坊侧导入路径中的类型校验失效:桥合约接受了一个精心构造的补充导出输出,并将其错误分类为有效的基本导出,从而允许攻击者提供匹配的转账数据并窃取资金。截至 5 月 23 日,约 75% 的被盗资金已被追回。
背景
Verus-Ethereum 桥在证明确实存在经公证的 Verus 状态下的符合条件的 Verus 侧导出后,会在以太坊上释放资产。以太坊并不直接观察 Verus 交易,而是依赖于提交的证明数据以及锚定受信任 Verus 状态的公证信息。
与此事件相关的有三个桥对象:基本导出(primary export),即以太坊导入并用于支付的对象;补充导出输出(supplemental export output),即附加在基本导出上的额外数据,不应被视为旨在用于支付的独立有效导出;以及公证(notarization),它允许以太坊证明一个特定的 Verus 侧对象确实存在于已确定的桥状态中。
漏洞分析
存在漏洞的以太坊侧桥合约部署在 0xa045...6fc87f 和 0x08f0...d0107d。
根本原因是以太坊导入路径中的类型校验失败。该桥证明了一个真实存在的 Verus 侧对象,但在使用它发放资金之前,未校验该对象是否为有效的基本导出。相反,它接受了一个精心构造的补充输出,并将其解析为正常的活动导出。
在高层逻辑上,其脆弱的流程如下:
proveImports(...)
-> 验证证明
-> 验证 keccak256(serializedTransfers) == 已提交的转账哈希
processTransactions(...)
-> 在以太坊上执行支付
在此流程中,没有任何检查会拒绝设置了 FLAG_SUPPLEMENTAL 标志的对象。修复方案明确检查了该标志,当证明的对象是补充类型时,系统会回滚操作:

攻击分析
以下分析基于以太坊交易 0x6990f0...87eb321 和 Verus 交易 f899e698...b9f5a733。
-
第 1 步:5 月 17 日,攻击者通过 Tornado Cash 向以太坊地址
0x5aBb...9D5777注入 1ETH。5 月 18 日,攻击者从 Verus 水龙头上为地址RW9vEW...B3g6zd获取了 0.02VRSC。 -
第 2 步:攻击者在 Verus 上提交了四笔发往以太坊的导出交易,其中包含精心构造的补充导出输出。这些补充输出被编码为可无误解析,并包含一个与攻击者意图稍后执行的欺诈性支付相匹配的
hashReserveTransfers承诺。 -
第 3 步:当以太坊上的跨链公证确认进度足够深后,攻击者在以太坊上提交了一笔伪造的导入交易。被证明的 Verus 侧对象即为上述 Verus 交易中的补充输出。
-
第 4 步:以太坊桥接受了该证明,但未将证明对象拒绝为补充数据。相反,它将精心构造的输出解析为有效的活动导出。由于攻击者同时提供了
serializedTransfers,其哈希值与已提交的hashReserveTransfers值匹配,桥继续执行了导入流程。 -
第 5 步:由于补充输出被误解为有效的导出,该欺诈性转账通过了以太坊侧的校验。攻击者窃取了价值约 1170 万美元的
ETH、tBTC和USDC。 -
第 6 步:在恶意导入成功后不久,Verus 节点遇到了由欺诈性导出线程与真实导出线程共存引起的无效状态断言(invalid-state assertion),这停止了桥的进一步推进并限制了后续的开发利用。
结论
此次事件是由 Verus-Ethereum 桥的类型校验失效引起的:以太坊合约接受了真实的密码学证明,但所证明的对象是补充导出输出,而非合法的支付基本导出。
跨链消息格式属于攻击面的一部分。补充数据、可选字段、紧凑编码和解析偏移量应与签名或 Merkle 证明验证一样受到严格对待。当对象与执行操作所预期的类型不匹配时,桥应当直接拒绝它,而不是尝试进行解析。
参考内容
- [1] BlockSec Phalcon 警报
- [2] Verus 官方事后调查报告
本周更多事件
RetoSwap
2026 年 5 月 20 日,基于 Haveno 协议分叉的 Monero P2P 去中心化交易所 RetoSwap 遭到漏洞利用,被盗金额约为 270 万美元(7,000 XMR) [1]。其根本原因是协议级的身份验证缺陷:客户端接受了一条伪造的、乱序的 ACK 消息,并在未经校验发送者是否符合仲裁者已知公钥的情况下,就将其存储的仲裁者 Tor 地址覆盖为攻击者控制的地址。这使攻击者能够劫持多签钱包的创建,并在资金存入时立即将其窃取。
背景
RetoSwap 是 Monero 上的一个去中心化 P2P 交易所,由 Haveno 协议分叉而来。其交易协议依赖基于 2-of-3 仲裁者的多签模型来保障交易安全,并通过 Tor 在链下协调交易。
一笔常规交易分为三个阶段:首先,买方、卖方和仲裁者通过链下消息交换来创建多签钱包;其次,仅在钱包完全创建后,资金才被锁定在多签钱包中;第三,买、卖双方共同签署一笔支出交易以完成结算,或由仲裁者介入解决争议。所有通信均通过 Tor 进行,每个节点仅由其 .onion 地址标识。
漏洞分析
5 月 20 日,Haveno 项目开启了一个名为“核心:拒绝在多签建立前更新节点地址”的拉取请求 [2]。而当时 RetoSwap 已经遭到攻击。
该补丁揭示了 TradeProtocol.java:onAckMessageAux(...) 中的漏洞。客户端使用消息中提供的 senderNodeAddress 来识别对端,但未经过密码学验证来确认发送者确实匹配预期的仲裁者公钥。攻击者可以发送一条携带由其控制的 .onion 地址的伪造 ACK 消息,客户端即会将存储的仲裁者地址覆盖为该地址。
)

由于此过程发生在阶段 1(多签钱包建立前),攻击者的地址取代了真正的仲裁者地址。因此,攻击者同时持有交易者密钥和多签钱包的仲裁者密钥,从而能够在资金存入后窃取全部余额。
修复方案通过两种方式解决该问题:其一,针对已知的对端公钥验证发送者身份,拒绝来自未经认证对端的消息;其二,将地址更新限制在 trade.isDepositRequested() 之后,防止多签钱包创建前被覆盖。

攻击分析
目前尚未确定该事件的相关链上攻击交易。RetoSwap 完全通过 Tor 进行链下消息处理,因此关键操作发生在公共账本之外。以下还原基于公开可用的补丁和官方沟通信息。
-
第 1 步:攻击者作为买方或卖方加入了一笔现有交易。
-
第 2 步:攻击者冒充仲裁者发送了一条伪造的、乱序的 ACK 消息,其中
senderNodeAddress携带了由攻击者控制的.onion地址。 -
第 3 步:受害者的客户端接受了该消息,且在未校验发送者是否符合仲裁者已知公钥的情况下,覆盖了存储的仲裁者地址。
-
第 4 步:所有后续发送给仲裁者的交流信息(包括多签钱包创建)均被路由至攻击者,后者获取了第三个多签密钥。
-
第 5 步:一旦买卖双方将资金存入被篡改的多签钱包,攻击者便窃取了钱包中的全部资产。总获利约为 7,000
XMR(约 270 万美元)。
结论
此次事件并非密码学失败,而是协议级的身份验证缺陷:消息虽通过了格式校验,但在更新地址之前,发送者并未与已知的公钥绑定。结果,客户端在该协议敏感阶段(多签钱包建立前)将来自伪造 ACK 消息的未认证 senderNodeAddress 视为了仲裁者的新联系点,导致攻击者劫持了仲裁者角色。
关键教训是:(1) 任何更新对端身份的消息在应用更新前,必须针对对端的已知公钥进行密码学验证;(2) 关键的身份状态(如对手方地址)一旦进入安全敏感阶段(例如多签钱包创建),就应当是不可变的。
参考内容
- [1] RetoSwap 事件后声明
- [2] Haveno 修复补丁拉取请求
-
关于 BlockSec
BlockSec 是全栈式区块链安全与加密货币合规服务提供商。我们构建的各类产品与服务,旨在帮助客户在协议与平台的全生命周期内完成代码审计(包括智能合约、区块链及钱包)、实时拦截攻击、分析安全事件、追踪非法资金并满足反洗钱/反恐怖融资(AML/CFT)义务。
BlockSec 已在知名会议上发表多篇区块链安全论文,报告了多起 DeFi 应用零日漏洞,成功拦截多次黑客攻击并挽回超过 2,000 万美元资产,守护着价值数十亿美元的加密资产。
-
官方 Twitter:https://twitter.com/BlockSecTeam
-
🔗 BlockSec 审计服务 : 提交审计申请



