首页 > 观点 > 正文
欧意交易所

欧意交易所

全球前三大交易所之一,新用户注册最高可得230USDT奖励,同时可拆数字盲盒,100%可以获得数字货币,最高价值60000元

点击注册 进入官网

AZvLVBueS8dPHk3YIbziS3gpLnKyfry9IYBrqrSW.jpeg

背景介绍

2025年3月14日,我们监测到一起针对 BNB Smart Chain 链上项目 H2O 攻击事件,攻击hash为:

https://bscscan.com/tx/0x729c502a7dfd5332a9bdbcacec97137899ecc82c17d0797b9686a7f9f6005cb7

https://bscscan.com/tx/0x994abe7906a4a955c103071221e5eaa734a30dccdcdaac63496ece2b698a0fc3

被攻击的项目为 H2O ,攻击共造成 22,000 USD 的损失。 

攻击及事件分析

在第一次攻击中,攻击者首先从 PancakeSwapV3 Pool 中利用 flashloan 贷了 100,000 USDT 作为攻击的初始资金。

图片

随后,用贷来的初始资金在 USDT-H2O 的 PancakeSwap Pair 中兑换了 66,439,209 H2O。

图片

攻击者随后频繁将 H2O 转给 PancakeSwap Pair USDT-H2O ,然后使得 Pair 中 USDT reserve 和H2O reserve 不平衡,随后利用 skim 平衡 Pair 中的 reserve0 和 reserve1 来实施攻击。H2O 的漏洞出现在 transfer 函数中,我们可以看到 transfer 函数的具体实现。

图片

问题具体出现在函数中,当 from 为 PancakeSwap Pair 时,调用 _calulate 函数。由于攻击者利用 Pair 的 Reserve0 和 Reserve1 不平衡,调用 skim 给自身 transfer ,所以该 transfer 的 sender 为 Pair address 。接下来,我们看一下该函数的具体实现。 

图片

这个函数的逻辑很简单根据合约自身持有的 H2O 代币余额动态设定奖励费率(1%-5%,余额越少费率越低),通过链上随机数向用户按比例分发 H2 或 O2 代币;当用户持有至少 10 H2 和 5 O2时,可销毁 2:1 比例的代币(模拟化学反应 2H₂+O₂→2H₂O ),兑换合约中的 H2O 代币,实际兑换量受合约余额限制。

合约生成链上随机数的逻辑如下:

图片

根据 blocktime , blocknumber 和 msg.sender 的 keccak256 来计算。在第一次攻击中,由于攻击者没有 H2 Token 和 O2 Token ,所以在此次攻击中获得了 169,731,921 O2 Token 。接下来,只要攻击者使得 getRandomOnchain()%2 == 1 即可完成攻击,随后攻击者又进行了三次尝试,但是前两次 getRandomOnchain()%2 均为0,导致攻击失败,第四次才真正完成攻击。 

图片

在第四次攻击时,攻击者首先从 PancakeSwapV3 Pool 中利用 flashloan 贷了 100,000 USDT 作为攻击的初始资金,

图片

随后,用贷来的初始资金在 USDT-H2O 的 PancakeSwap Pair 中兑换了 66,439,209 H2O。

图片

攻击者随后频繁将 H2O 转给 PancakeSwap Pair USDT-H2O ,然后使得 Pair 中 USDT reserve 和 H2O reserve 不平衡,随后利用 skim 平衡 Pair 中的 reserve0 和 reserve1 来实施攻击。 

图片

根据我们上述的分析可知,此次攻击中 getRandomOnchain()%2 为1,所以 H2O 会 mint H2Token 。又因为攻击者利用第一次攻击时,getRandomOnchain()%2 为 0,所以获得 mint 的大量 O2 Token 。所以,H2O burn 了 H2 和 O2 后将自身的 H2O 转给攻击者。

最后,攻击者用凭空的来的 H2O 兑换了 122,820 USDT 。归还完 100,000 USDT 的 flashloan 和 50 USDT 的利息,最终获利 22,770 USDT 。

总结

本次漏洞成因主要是因为 H20 Token 合约设计从 PancakeSwap Pair 上买入的经济模型时,在修改 ERC20 transfer 函数没有考虑到 skim 也可以达到相同目的,导致攻击者利用 skim 凭空获得大量激励。建议项目方在设计经济模型、价格计算机制和代码运行逻辑时要多方验证,合约上线前审计时尽量选择多个审计公司交叉审计。

白话区块链|同步全球区块链资讯、区块链快讯、区块链新闻
本站所有文章数据来源:金色财经
本站不对内容真实性负责,如需转载请联系原作者
如需删除该文章,请发送本文链接至oem1012@qq.com

更多交易所入口

一站式注册各大交易所、点击进入加密世界、永不失联,币安Binance/欧易OKX/GATE.IO芝麻开门/Bitget/抹茶MEXC/火币Huobi

点击进入 永不失联
picture loss