Back to Blog

Web3安全周报 | 2026年2月16日 – 2月22日

Code Auditing
February 25, 2026
7 min read

在过去的一周(2026年2月16日至2月22日),BlockSec 检测并分析了三起攻击事件,估计总损失约为 622 万美元。下表总结了这些事件,详细的案例分析请见后续章节。

日期 事件 类型 估计损失
2026/02/16 Moonwell 事件 配置错误 ~178 万美元
2026/02/19 PearlDriver 事件 算术溢出 ~4.03 万美元
2026/02/21 IoTex 事件 私钥泄露 ~440 万美元

1. Moonwell 事件

简要总结

2026 年 2 月 16 日,Base 链上的 Moonwell 协议因预言机配置错误遭到攻击,导致约 178 万美元的坏账。该问题发生在执行 MIP-X43 提案期间,提案错误地将 Base 链 cbETH 预言机指定为 cbETH/ETH 汇率源,而非包含 ETH/USD 价格的复合预言机。这导致预言机报告的 cbETH 价格约为 1.12 美元,远低于其约 2,200 美元的实际市场价值。在上限被调低以阻止攻击之前,清算机器人迅速抢占了 1,096.317 个 cbETH,同时仅偿还了极少量的债务。

背景

Moonwell 是一个跨多链的借贷协议,于 2026 年 2 月 16 日执行了一个名为 MIP-X43 的提案。该提案旨在激活 Base 和 Optimism 上所有剩余核心和隔离市场的 Chainlink OEV(预言机可提取价值)封装合约,将覆盖范围扩展至 MIP-X38 中启用的最初三个预言机之外。OEV 封装合约旨在让协议能够在依赖预言机价格的清算期间捕获价值,并确保清算人保持适当的激励。

漏洞分析

该漏洞源于 ChainlinkOracleConfigs.sol 构造函数中的配置错误。对于 Base 链的 cbETH,该提案将预言机配置为 "cbETHETH_ORACLE"(即 cbETH/ETH 汇率源),而不是将此汇率与 ETH/USD 价格结合的正确复合预言机。当 OEV 封装合约被部署并通过 ChainlinkOracle 的 setFeed() 连接时,协议开始使用原始汇率(cbETH/ETH ≈ 1.12)作为 cbETH 的美元价格。这导致报告价格(约 1.12 美元)与实际市场价值(约 2,200–2,400 美元)之间存在巨大差异,造成 cbETH 抵押品价值被大幅低估了约 2,200 倍。

攻击分析

  1. 2026 年 2 月 16 日北京时间凌晨 2:01,MIP-X43 执行完毕,激活了 Base 链上配置错误的 cbETH 预言机。

  2. 监控该协议的清算机器人立即检测到价格差异,并对 cbETH [抵押仓位] 执行清算。

  1. 在短短几分钟内,清算人抢占了 1,096.31 个 cbETH,导致受影响市场产生了约 178 万美元的坏账。

结论

此次事故最终是由 Moonwell 的 MIP-X43 部署中的配置错误引起的,即 Base 链 cbETH 被错误地分配了 cbETH/ETH 汇率源,而非正确的复合预言机。这一配置错误导致大量 cbETH 抵押品被迅速耗尽。

对于管理多个预言机源的协议来说,实施彻底的部署前验证程序至关重要,以确保每个资产都链接到其预期的价格源。严格的验证可以显著降低此类高影响配置错误的风险。


2. PearlDriver 事件

简要总结

2026 年 2 月 19 日,PearlDriver 在 BSC 链上的 NLAMM 联合曲线合约遭到攻击,造成约 4.03 万美元的损失。根本原因是 buy() 函数中存在未检查的算术溢出,攻击者得以以近乎零的成本铸造了海量游戏代币,随后将其抛售到 PearlDEX 流动性池中。

背景

PearlDriver 使用 NLAMM(非线性自动做市商)联合曲线进行代币铸造。用户可以通过 buy() 函数购买游戏资源代币,购买稳定币成本的计算公式为:成本 = 数量 * 当前价格

在正常情况下,该公式确保所需的支付金额与所购买的数量成正比。联合曲线假设大额购买需要相应的大额支付,从而保持价格完整性并防止代币被超量发行。

漏洞分析

根本原因是稳定币支付计算中的算术溢出。整个 buy() 函数被包裹在 unchecked 块中,禁用了 Solidity 内置的溢出保护。因此,用于计算购买成本的乘法在超过最大整数限制时不会回滚。相反,数值会溢出并回绕为一个很小的数字,从而大幅降低了所需的支付额。

因此,攻击者只需支付近乎于零的金额,即可铸造海量代币,随后立即抛售至 DEX 流动性对中以耗尽 USDT。

攻击分析

单笔交易中,攻击者利用相同的攻击模式,针对五种资产(铁矿石、煤炭、木材、沙子和粘土)利用了易受攻击的 buy() 函数。以第一种资产为例:

  1. 攻击者在调用 buy() 时指定了一个极大的购买数量。由于算术未检查,计算 数量 * 当前价格 发生了溢出并回绕为一个接近 0 的值,仅需支付 0.0053 USDT(不到 0.01 美元)。尽管成本微不足道,但合约仍向攻击者铸造了海量铁矿石,具体为 7.03 × 10⁵⁸ 个代币。

  2. 攻击者立即将部分铸造的铁矿石兑换至其对应的 PearlDEX 流动性对中,获得了 7,805.55 USDT(约 7,805.56 美元)。

同样的“溢出并抛售”操作被重复执行于另外四种资产,耗尽了每种资产与 USDT 交易对的流动性,总共获利超过 4 万美元。

结论

该事件是由 NLAMM buy() 函数定价逻辑中的算术未检查引起的。通过禁用溢出检查,函数允许极端的输入值扭曲支付计算,打破了联合曲线模型的经济假设。

虽然在严格控制的情况下使用未检查算术可能是合理的,但在直接决定支付金额的金融逻辑中使用它会带来重大风险。为了减轻此类风险,开发者应仔细审查所有算术运算,并在考虑禁用 Solidity 0.8+ 内置溢出检查时保持谨慎,特别是在影响价格或转账的代码路径中。


3. IoTex 事件

简要总结

2026 年 2 月 21 日,IoTeX 的 ioTube 桥因以太坊验证器所有者私钥泄露而遭受安全入侵。攻击者获得了验证器合约的所有权,随后夺取了 TokenSafeMintPool 合约的控制权,从而耗尽了价值约 440 万美元的桥接储备金,并超发了超过 4 亿个 CIOTX 代币。被盗的储备金随后在链上兑换,并部分桥接至比特币网络。根据项目方反馈,约 3.55 亿个超发的 CIOTX 代币已被永久锁定或冻结。

背景

被入侵的 ioTube 是连接 IoTeX Layer 1 与以太坊等其他网络的跨链桥基础设施。在以太坊链上,桥接架构的核心是验证器合约(即 TransferValidatorWithPayload),该合约负责验证跨链结算消息并管理下游的铸币合约。这些合约包括持有桥接储备资产的 TokenSafe 以及拥有某些代币(如 CIOTX)铸币权限的 MintPool

漏洞分析

根本原因是验证器合约所有者私钥的泄露。由于该桥架构依赖于单一 EOA(外部账户),且缺乏多签或时间锁控制,一旦私钥被获取,攻击者便获得了完全的行政控制权。使用合约的 upgrade() 函数,攻击者将 TokenSafeMintPool 合约的所有权转移到了攻击者控制的地址。这使得攻击者可以直接提取桥接储备资产并未经授权地铸造大量 CIOTX。

攻击分析

  1. 入侵以太坊上的验证器合约所有者私钥,从而获得行政控制权

  2. 利用验证器合约 转移了 TokenSafeMintPool 合约的所有权

  1. TokenSafe 中耗尽了约 440 万美元的储备资产(USDC、USDT、WBTC、WETH、BUSD 等),并通过 MintPool 超发了超过 4 亿个 CIOTX。

  2. 将被盗的储备代币兑换并桥接至其他链。

结论

此次事故是一个典型的单点故障导致私钥泄露的案例。整个以太坊侧桥的安全架构仅依赖于一个拥有完全行政权的单一 EOA,且没有任何多签或时间锁的防御机制。一旦 EOA 的私钥泄露,对关键桥接组件的控制权便彻底丧失。

该案例突显了中心化行政控制的风险,并强调了通过更强大的治理机制来分散升级和托管权限的重要性。


关于 BlockSec

BlockSec 是一家全栈式区块链安全与加密合规提供商。我们构建的产品和服务旨在帮助客户在协议和平台的全生命周期内进行代码审计(包括智能合约、区块链和钱包)、实时拦截攻击、分析安全事件、追踪非法资金,并满足 AML/CFT(反洗钱/打击资助恐怖主义)义务。

BlockSec 已在知名会议上发表多篇区块链安全论文,报告了多个 DeFi 应用的零日漏洞攻击,拦截了多次黑客攻击并挽回了超过 2000 万美元的损失,为价值数十亿美元的加密资产提供了安全保障。

Sign up for the latest updates

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit