Web3 安全事件周报 | 2026年2月23日 - 3月1日

Web3 安全事件周报 | 2026年2月23日 - 3月1日

在过去一周(2026年2月23日至2026年3月1日),BlockSec 检测并分析了七起攻击事件,总估计损失约为 1300 万美元。下表总结了这些事件,并在接下来的子章节中提供了每起事件的详细分析。

日期 事件 类型 估计损失
2026/02/22 LAXO 事件 代币设计缺陷 ~$137K
2026/02/22 YieldBloxDAO 事件 预言机配置错误 ~$10M
2026/02/23 STO 事件 代币设计缺陷 ~$16.1K
2026/02/25 HedgePay 事件 业务逻辑缺陷 ~$15.7K
2026/02/26 Ploutos 事件 预言机配置错误 ~$390K
2026/02/26 FOOMCASH 事件 业务逻辑缺陷 ~$2.26M
2026/02/27 未知事件 输入验证不当 ~$180K

LAXO 事件

简要概述

2026 年 2 月 22 日,BNB 智能链上的 ERC20 代币 LAXO 被利用,导致 LAXO-USDT 交易对损失约 137,320 美元。根本原因在于一个有缺陷的销毁机制,当 LAXO 直接传输到 PancakeSwap 交易对时会被激活。由于路由器已加入白名单,不会触发 transfer() 中的销毁逻辑,攻击者通过将 LAXO 发送到交易对,然后调用交易对的低级 swap() 函数,该函数销毁了交易对代币并调用 sync(),从而使价格膨胀。随后攻击者将代币兑换回 USDT 以获利。

背景

LAXO 代币实现了一个销毁机制。当转账接收方是 USDT-LAXO PancakeSwap 交易对地址时,代币会将其视为卖出:它会销毁交易对中相应数量的代币,然后调用 sync() 来更新交易对的储备。 1.png 此外,LAXO 代币实现了一个白名单 (_isExcludedFromFee),用于豁免某些地址(例如,交易路由器)免受销毁机制和费用的影响。 2.png

漏洞分析

事件的根本原因在于 LAXO 代币中存在一个有缺陷的销毁机制。具体来说,直接将 LAXO 传输到交易对会触发销毁,从交易对中移除 LAXO 并导致其价格上涨。因此,攻击者可以利用这一点通过价格操纵攻击实现获利。

攻击分析

攻击分析基于交易 0xd58f3ef6...d98ac7d3

  1. 攻击者从 PancakeSwap V3 闪电贷了 350,000e18 USDT

  2. 攻击者通过 PancakeSwap Router 将 USDT 兑换成 LAXO。为了绕过交易限制 (buyEnabled = false) 和费用逻辑,攻击者创建了一个 BNB-LAXO V2 交易对,并通过该交易对进行交易。 3.png

  3. 攻击者将所有持有的 LAXO 直接传输到 USDT-LAXO 交易对。这减少了池中的 LAXO 储备,而 USDT 储备几乎保持不变,从而极大地提高了 LAXO 在 USDT-LAXO 交易对中的价格。

  4. 攻击者根据操纵后的价格,将 burnAmountLAXO 兑换成约 487,500e18 USDT

  5. 攻击者偿还了闪电贷,并保留剩余的 USDT 作为利润。

结论

此次事件的根本原因在于 LAXO 存在缺陷的销毁机制,该机制允许攻击者通过价格操纵攻击从池中榨取 USDT。因此,此次事件共造成约 13.73 万美元的损失。为了缓解此类问题,项目方必须对销毁机制进行全面的测试,以避免潜在的价格操纵攻击。

YieldBloxDAO 事件

简要概述

2026 年 2 月 22 日,YieldBlox DAO 在 Stellar 的 Blend V2 上运营的一个借贷池被利用,导致损失超过 1000 万美元 [1]。此次事件是由于池操作员(YieldBlox DAO)配置错误,而非智能合约中的漏洞。

具体来说,攻击者操纵了 SDEX 上的 USTRY/USDC 市场。池配置的 Reflector 预言机路径接受了操纵后的价格,导致 USTRY 被高估作为抵押品,使攻击者能够提取包括 USDC 和 XLM 在内的池资产。

背景

在 Stellar 区块链上,Blend V2 是一个流动性协议,允许用户创建隔离的借贷池。这些池促进用户在一组支持的资产之间进行借贷。特别是,此次事件中的受害者池允许用户使用 USTRY 作为抵押品来借入 XLMUSDC。此外,池创建者在创建时指定 Reflector 预言机 [2] 作为预言机提供商。Reflector 预言机提供的 USTRY 价格基于 Stellar DEX(即 SDEX)上的 USTRY/USDC 市场每五分钟更新一次 [3]。

漏洞分析

根本原因在于 SDEX 上流动性不足的 USTRY/USDC 市场的价格操纵,导致 Reflector 预言机上的 USTRY 价格更新存在漏洞。具体来说,由于 USTRY/USDC 市场流动性极低,攻击者能够通过消耗正常订单并下单异常订单,将 USTRY 价格推高 100 倍。然后,这个被抬高的 USTRY 价格被传播到 Reflector 预言机,使攻击者能够通过抵押高估的 USTRY 来借出受害者池中的所有资产(即 XLMUSDC)。

攻击分析

  1. (交易 1, 2) 攻击者操纵了 SDEX 上的 USTRY 价格,将其从 1.06 美元推高至约 107 美元。由于 SDEX 上的 USTRY/USDC 市场流动性极低,攻击者消耗了所有正常订单,然后下单异常订单,大幅推高了市场价格。 4.png 5.png
  2. (交易 3) Reflector 预言机从 SDEX 获取操纵后的价格,并相应地更新其价格源。 6.png
  3. (交易 4, 5) 攻击者通过抵押 12,881e7 USTRY 借入了 1,000,196e7 USDC7.png
  4. (交易 6, 7) 攻击者通过抵押 14,987,610e7 USTRY 借入了 6,124,927,810e7 XLM8.png
  5. (交易 8, 9, 10) 最后,攻击者将提取的资产桥接到多个链,包括 Base、BSC 和 Ethereum。

下表总结了关键的利用交易和相关的参与地址。

结论

尽管 YieldBloxDAO 事件造成了重大损失,但根本问题并不复杂:抵押品估值依赖于易受操纵的价格。此事件提醒我们,借贷协议的价格依赖性必须经过仔细选择和监控。

参考资料

[1] https://blocksec.com/blog/yieldblox-dao-incident-on-stellar-oracle-misconfiguration-enabled-a-10m-drain

[2] https://reflector.network/

[3] SDEX 上的 USTRY/USDC 市场

STO 事件

简要概述

2026 年 2 月 23 日,BNB 智能链上 PancakeSwap 的 STO-WBNB 池被耗尽,导致损失约 16.1K 美元。根本原因在于 STO 代币存在缺陷的销毁机制。具体来说,当用户在池中出售 STO 代币时,销毁机制被触发,销毁了池中的 STO 代币,从而推高了代币的价格。因此,攻击者利用此漏洞从池中提取了 WBNB 代币。

背景

STO 代币引入了一个针对 PancakeSwap V2 池的销毁机制。该机制仅在 STO 代币的卖出功能启用(即 sellEnabled == true)且 pendingBurnFromSell > 0 时触发。当用户出售 STO 代币时,该机制会销毁池中的 STO 代币。具体来说,在销毁过程中,将销毁上一次交易中出售的 STO 代币的 94%。

漏洞分析

事件的根本原因在于 STO 代币中存在的有缺陷的销毁机制。具体来说,当用户出售 STO 代币时,销毁机制会从池中移除一定数量的 STO 代币,同时调用交易对合约的 sync() 函数来更新储备。这个销毁机制会推高 STO 代币在池中的价格。因此,攻击者可以通过进行价格操纵攻击从该机制中获利。 9.png

攻击分析

以下分析基于交易 0x8ba17bea...5a54020c

  1. 攻击者通过闪电贷借入了 360,894e18 WBNB

  2. 攻击者调用 initializeLiquidity() 函数,以启用 STO 代币的买卖功能。 10.png

  3. 攻击者用 360,894e18 WBNB 兑换了 7,848,832e18 STO

  4. 攻击者调用 transfer() 函数,触发销毁机制以操纵交易对的储备(即提高了 STO 代币的价格),同时将下一次交易要销毁的 STO 代币数量设置为 173,391e1811.png

  5. 攻击者调用 swap() 函数,用 STO 兑换 WBNB。此步骤使攻击者能够根据操纵后的价格获利。

  6. 攻击者重复步骤 4 和 5,耗尽了池中的 WBNB

  7. 攻击者偿还了闪电贷,并实现了 26e18 WBNB 的利润。

结论

此次事件的根本原因在于 STO 存在缺陷的销毁机制,该机制允许攻击者从池中提取 WBNB。为了缓解此类问题,项目方必须在系统中实施适当的访问控制,并对销毁机制进行全面测试,以避免潜在的价格操纵攻击。

HedgePay 事件

简要概述

2026 年 2 月 25 日,BNB 智能链上的 HedgePay 协议被利用,导致损失约 15.7K 美元。根本原因在于 HedgePay 协议质押合约中存在的业务逻辑缺陷。具体来说,有漏洞的质押合约(即 0xBe189fe9f84cA531CD979630E1f14757b88dD80d)的 forceExit() 函数允许用户提取其已质押的资产,而无需更新其已质押的余额。因此,攻击者能够反复调用 forceExit() 函数来耗尽合约中的 HPAY 代币。

背景

HedgePay 协议是一个质押协议,允许用户通过质押 HPAY 代币来赚取奖励。forceExit() 函数允许用户提取其已质押的资产。

漏洞分析

事件的根本原因在于 forceExit() 函数中存在的业务逻辑缺陷。具体来说,当用户通过 stake() 函数质押 HPAY 代币时,其已质押的数量(即 _balances[msg.sender])会相应更新。然而,当用户通过 forceExit() 函数提取其已质押的 HPAY 代币时,合约未能更新 _balances[msg.sender]。因此,攻击者可以通过反复调用 forceExit() 函数来提取质押合约中的 HPAY 代币。 12.png

攻击分析

以下分析基于交易 0x5f2ea6cb...46ed137f

  1. 攻击者通过闪电贷借入了 1,247,859e18 HPAY。在闪电贷回调函数中:

    a. 攻击者通过 stake() 函数质押了 1,197,944e18 HPAY

    b. 攻击者反复调用 forceExit() 函数来耗尽合约的 HPAY 代币。 13.png

  2. 攻击者偿还了闪电贷,并将 57,389,615e18 HPAY 兑换成 26e18 WBNB(即获利 26e18 WBNB)。

结论

此次事件的根本原因在于 forceExit() 函数未更新用户的 _balances[msg.sender],导致攻击者能够耗尽质押合约中的 HPAY 代币。为了防止此类问题,项目方应进行适当的状态导向测试,以确保在每个函数中都能正确维护状态不变量。

Ploutos 事件

简要概述

2026 年 2 月 26 日,以太坊上的 Ploutos 协议池因预言机配置错误导致损失约 390,000 美元。具体来说,预言机被错误地配置为使用 BTC/USD Chainlink 价格源来获取 USDC。因此,攻击者利用此配置错误,仅抵押 8 USDC 就借出了 187 ETH

漏洞分析

Ploutos 是 Aave v3.0.2 的一个分支,部署在多个网络上。此次事件是由于借贷池 (0xD060...F945D2) 中预言机配置错误造成的。 14.png 在区块 24538896 中,USDC 的价格预言机被错误配置为引用 Chainlink BTC/USD 价格源,而不是 USDC/USD 源。在随后的区块(24538897)中,攻击者发现了此配置错误并执行了利用。结果,攻击者通过抵押约 8.88 USDC 借出了约 187.3 ETH 作为利润。 15.png

攻击分析

  1. 攻击者监控了 Ploutos 协议的预言机配置操作,在交易 0xcfedf6...bd193ab6 中,USDC 的预言机源被错误地设置为 Chainlink BTC/USDC 价格源。

  2. 攻击者立即发送了一笔交易 (0xa17dc37e...705f8474),该交易允许攻击者由于预言机配置错误,仅抵押约 8.8 USDC 就借出了约 187.3 ETH

  3. 攻击者支付了约 5.6 ETH 的构建者贿赂,净获利约 181.7 ETH

结论

此次事件的根本原因在于预言机配置错误,导致损失约 390,000 美元。这提醒我们,像预言机配置这样的敏感操作应通过多签钱包或时间锁来保护,以避免潜在的损失。

参考资料

[1] https://x.com/Phalcon_xyz/status/2026943448734114011

FOOMCASH 事件

简要概述

2026 年 2 月 26 日,FOOMCASH 协议因存在漏洞的 Groth16 证明验证 [1] 被利用,导致总损失超过 226 万美元。

背景

FOOMCASH 协议是一个部署在 Base 和以太坊上的彩票协议,它使用 Groth16 证明进行提现验证。在 FoomLottery 合约中,collect() 函数通过调用 WithdrawG16Verifier.verifyProof() 来验证提供的证明(即 _pA_pB_pC)。具体来说,验证是基于 WithdrawG16Verifier 合约中的可信设置(即 gamma 和 delta)进行的。一旦证明被验证为有效,collect() 函数将根据用户的输入(例如 _recipient_rewardbits)继续转移资产(即 FOOM 代币)。 16.png

漏洞分析

事件的根本原因在于有漏洞的 Groth16 设置。具体来说,在 WithdrawG16Verifier 合约中,变量 gamma (γ\gamma) 和 delta (δ\delta) 共享相同的值(即 G2G_{2}),这使得攻击者能够伪造具有任意输入的有效证明。因此,攻击者绕过了 WithdrawG16Verifier 合约中的 Groth16 证明验证,并使用恶意输入耗尽了 FoomLottery 合约中的所有资产。 17.png

攻击分析

攻击分析基于交易 0ce204482...4e275e48

攻击者创建了一个恶意合约来构建有效的证明和恶意输入。在恶意合约的回退逻辑中: 18.png

  1. 它构建了一个有效的证明。

  2. 它调用 FoomLottery 合约的 collect() 函数,并传入有效的证明和恶意输入(例如 _recipient_rewardbits)。

    1. 在调用 collect() 函数时,证明验证(即 WithdrawG16Verifier.verifyProof())被绕过,并且资产(即 FOOM 代币)被转移给攻击者。
  3. 它重复步骤 1-2 共 30 次,耗尽了总计 19,695,576,757,802e18 FOOM 代币。

结论

此次事件的根本原因在于有漏洞的 Groth16 验证设置,导致损失约 226 万美元。这强调了复杂的加密设置在部署前必须经过彻底的审查和审计。

参考资料

[1] https://x.com/Phalcon_xyz/status/2026941738141778394

未知事件

简要概述

2026 年 2 月 27 日,BNB 智能链上的一个未知合约被利用 [1],导致损失约 180,000 美元。此次事件的根本原因在于输入验证不当。具体来说,受害者合约的 _verifySignatures() 函数未能执行空列表检查,导致攻击者在未提供签名和签名者的情况下绕过了签名验证。因此,攻击者利用此漏洞耗尽了受害者合约中的所有 USDT 代币。

漏洞分析

此次事件的根本原因在于签名验证流程中输入验证不当。具体来说,_verifySignatures() 函数仅检查 allSigners.length == signatures.length,而不要求任一数组非空。因此,当两个数组都为空时,攻击者可以绕过签名验证并提取资产。 19.png 20.png

攻击分析

以下分析基于交易 0x91f45260...41cfd784

  1. 攻击者调用其恶意合约的 0x2d0cb456() 函数。在调用中,

    a. 恶意合约调用 poolWithdraw() 函数,并传入空的 allSignerssignatures 输入,绕过了预期的签名验证逻辑。 21.png b. 在绕过签名验证逻辑后,受害者合约将 USDT 转账给了攻击者。 22.png

结论

此次事件的根本原因在于输入验证不当,导致损失约 180,000 美元。此次事件凸显了执行基本的边界检查(例如,输入非空检查)的重要性。

参考资料

[1] https://x.com/Phalcon_xyz/status/2027328894710505581

Sign up for the latest updates