Back to Blog

Web3每周安全事件汇总 | 2026年2月23日 – 3月1日

Code Auditing
March 4, 2026
13 min read

在过去的一周(2026/02/23 - 2026/03/01)里,BlockSec 检测并分析了 7 起攻击事件,估计总损失约为 1300 万美元。下表总结了这些事件,详细的案例分析请参阅后续小节。

日期 事件 类型 预估损失
2026/02/22 LAXO 事件 代币设计缺陷 ~13.7 万美元
2026/02/22 YieldBloxDAO 事件 预言机配置错误 ~1000 万美元
2026/02/23 STO 事件 代币设计缺陷 ~1.61 万美元
2026/02/25 HedgePay 事件 业务逻辑缺陷 ~1.57 万美元
2026/02/26 Ploutos 事件 预言机配置错误 ~39 万美元
2026/02/26 FOOMCASH 事件 业务逻辑缺陷 ~226 万美元
2026/02/27 未知事件 输入验证不当 ~18 万美元

1. LAXO 事件

简要总结

2026 年 2 月 22 日,BNB 智能链上的 ERC20 代币 LAXO 遭到攻击,导致 LAXO-USDT 交易对损失约 137,320 美元。根本原因是当 LAXO 被直接转账至 PancakeSwap 交易对时,会触发一个有缺陷的销毁机制。由于路由合约(router)在白名单中且不会在 transfer() 函数中触发销毁逻辑,攻击者绕过了这一限制:他们将 LAXO 发送到交易对,然后调用该交易对底层的 swap() 函数,这会燃烧掉交易对中的代币并调用 sync(),从而推高代币价格。随后,攻击者将代币换回 USDT 获利。

背景

LAXO 代币实现了一种销毁机制。当转账的接收者是 USDT–LAXO PancakeSwap 交易对地址时,代币将其视为卖出行为:它会从该交易对中销毁相应数量的代币,然后调用 sync() 来更新交易对的储备金。

此外,LAXO 代币实现了一个白名单(_isExcludedFromFee),以豁免特定地址(例如交换路由合约)免受销毁机制和费用的影响。

漏洞分析

本次事件的根本原因是 LAXO 代币中存在缺陷的销毁机制。具体来说,直接向交易对转账 LAXO 会触发销毁,从流动性池中移除 LAXO 并推高其价格。因此,攻击者可以利用这一点通过价格操纵攻击来实现获利。

攻击分析

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

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

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

  1. 攻击者将所持有的全部 LAXO 直接转账至 USDT–LAXO 交易对。这减少了池中 LAXO 的储备量,而 USDT 的储备量几乎保持不变,从而大幅推高了 USDT–LAXO 对中 LAXO 的价格。

  2. 基于被操纵的价格,攻击者将 burnAmount 数量的 LAXO 兑换为约 487,500e18 枚 USDT

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

结论

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


2. 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 市场深度极浅,攻击者消耗了所有正常挂单,然后放置异常订单,显著拉高了市场价格。
  1. (交易 3) Reflector 预言机从 SDEX 拉取了被操纵的价格,并据此更新价格数据。
  1. (交易 4, 5) 攻击者通过抵押 12,881e7USTRY 借入了 1,000,196e7USDC7.png
  2. (交易 6, 7) 攻击者通过抵押 14,987,610e7USTRY 借入了 6,124,927,810e7XLM
  1. (交易 8, 9, 10) 最后,攻击者将窃取的资产桥接到了包括 Base、BSC 和以太坊在内的多个链上。

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

结论

尽管 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 市场


3. STO 事件

简要总结

2026 年 2 月 23 日,BNB 智能链上 PancakeSwap 的 STO-WBNB 矿池被掏空,造成约 1.61 万美元的损失。根本原因是 STO 代币中存在缺陷的销毁机制。具体而言,当用户在池中卖出 STO 代币时,销毁机制会被触发,燃烧掉池中的 STO 代币并推高代币价格。因此,攻击者利用该漏洞抽干了池中的 WBNB

背景

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

漏洞分析

事故的根本原因是 STO 代币中存在缺陷的销毁机制。具体而言,当用户卖出 STO 代币时,销毁机制会从矿池中移除一定数量的 STO 代币,同时调用交易对合约的 sync() 函数来更新储备。这种销毁机制推高了池中 STO 代币的价格。结果,攻击者可以通过价格操纵攻击从该机制中获利。

攻击分析

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

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

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

  1. 攻击者将 360,894e18 WBNB 兑换为 7,848,832e18 STO

  2. 攻击者调用函数 transfer(),触发销毁机制以操纵交易对的储备(即提高 STO 代币的价格),同时设定下一笔交易中待销毁的 STO 代币数量为 173,391e18

  1. 攻击者调用函数 swap()STO 换回 WBNB。此步骤使攻击者能够基于被操纵的价格获利。

  2. 攻击者重复上述步骤 4 和 5 以抽干矿池的 WBNB

  3. 攻击者偿还了闪电贷,并获得了 26e18 WBNB 的利润。

结论

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


4. HedgePay 事件

简要总结

2026 年 2 月 25 日,BNB 智能链上的 HedgePay 协议遭到攻击,损失约 1.57 万美元。根本原因是 HedgePay 协议质押合约中的业务逻辑缺陷。具体而言,易受攻击的质押合约(即 0xBe189fe9f84cA531CD979630E1f14757b88dD80d)中的 forceExit() 函数允许用户在不更新质押余额的情况下提取其质押资产。因此,攻击者可以重复调用 forceExit() 函数来耗尽合约中的 HPAY 代币。

背景

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

漏洞分析

事故的根本原因是 forceExit() 函数中的逻辑缺陷。具体而言,当用户通过 stake() 函数质押 HPAY 代币时,他们的质押金额(即 _balances[msg.sender])会相应更新。然而,当用户通过 forceExit() 函数提取其质押的 HPAY 代币时,合约未能更新 _balances[msg.sender]。结果,攻击者可以通过重复调用 forceExit() 函数耗尽质押合约中的 HPAY 代币。

攻击分析

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

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

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

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

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

结论

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


5. Ploutos 事件

简要总结

2026 年 2 月 26 日,由于预言机配置错误,以太坊上 Ploutos 协议的一个矿池损失了约 39 万美元。具体而言,预言机被错误地设置为将 BTC/USD Chainlink 价格反馈用于 USDC。结果,攻击者利用这一配置错误,仅抵押了 8 枚 USDC 就借出了 187 枚 ETH

漏洞分析

Ploutos 是部署在多个网络上的 Aave v3.0.2 分叉项目。该事件是由借贷池(0xD060...F945D2)中不正确的预言机配置引起的。

在区块 24538896 中,USDC 的价格预言机被错误地配置为引用 BTC/USD Chainlink 反馈,而不是 USDC/USD 反馈。在后续区块(24538897)中,攻击者发现了该配置错误并执行了漏洞利用。最终,攻击者通过抵押约 8.88 枚 USDC 借到了约 187.3 枚 ETH 作为利润。

攻击分析

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

  2. 攻击者立即发送了一笔交易 (0xa17dc37e...705f8474),利用该预言机错误,仅抵押约 8.8 枚 USDC 就借到了约 187.3 枚 ETH

  3. 攻击者支付了约 5.6 枚 ETH 的区块构建者贿赂,净赚约 181.7 枚 ETH

结论

事故的根本原因是预言机配置错误,导致损失约 39 万美元。这提醒人们,预言机配置等敏感操作应由多签钱包或时间锁(timelock)保护,以避免潜在的损失。

参考文献

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


6. FOOMCASH 事件

简要总结

2026 年 2 月 26 日,由于 Groth16 证明验证机制存在漏洞 [1],FOOMCASH 协议遭到攻击,总损失超过 226 万美元。

背景

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

漏洞分析

事故的根本原因是 Groth16 设置存在漏洞。具体而言,在合约 WithdrawG16Verifier 中,变量 gamma (γ\gamma) 和 delta (δ\delta) 的值相同(即 G_2G\_{2}),这使得攻击者能够针对任意输入伪造有效的证明。结果,攻击者绕过了合约 WithdrawG16Verifier 中的 Groth16 证明验证,并利用恶意输入抽干了合约 FoomLottery 中的所有资产。

攻击分析

攻击分析基于这笔交易 0xce204482...4e275e48

攻击者创建了一个恶意合约来构建有效的证明并构造恶意输入。在恶意合约的 fallback 逻辑中:

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

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

    a. 在调用 collect() 函数时,证明验证(即 WithdrawG16Verifier.verifyProof())被绕过,资产(即 FOOM 代币)被转移给攻击者。

  3. 它重复了上述步骤 30 次,总共抽走了 19,695,576,757,802e18FOOM 代币。

结论

事故的根本原因是 Groth16 验证设置存在漏洞,导致损失约 226 万美元。这强调了复杂的密码学设置在部署前必须经过彻底的审核和审计的重要性。

参考文献

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


7. 未知事件

简要总结

2026 年 2 月 27 日,BNB 智能链上的一个合约遭到攻击 [1],损失约 18 万美元。根本原因是输入验证不当。具体而言,受害合约的 _verifySignatures() 函数未能执行空列表检查,允许攻击者在不提供签名和签名者的情况下绕过签名验证。攻击者利用该漏洞抽走了受害合约中的所有 USDT 代币。

漏洞分析

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

攻击分析

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

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

    a. 恶意合约调用了传入空输入 allSignerssignaturespoolWithdraw() 函数,绕过了预期的签名验证逻辑。

b. 在绕过签名验证逻辑后,受害合约将 `USDT` 转账给了攻击者。

结论

事故的根本原因是输入验证不当,导致损失约 18 万美元。该事件强调了基础边界检查(例如对输入进行非空检查)的重要性。

参考文献

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


关于 BlockSec

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

BlockSec 已在顶级会议上发表了多篇区块链安全论文,报告了多个 DeFi 应用的零日漏洞,成功阻断多次黑客攻击并挽救了超过 2000 万美元的资产,为数十亿美元的加密资产提供了安全保障。

Best Security Auditor for Web3

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

BlockSec Audit