Beosin:Polygon链上LibertiVault合约遭攻击因其存在重入漏洞

2023/07/11 18:35

Odaily星球日报讯 据Beosin旗下Beosin EagleEye监测显示,Polygon链上LibertiVault合约遭遇攻击,损失约123枚ETH和56,234枚USDT,价值约29万美元;以及以太坊链上35枚ETH和96223枚USDT价值,约16万美元,总共超45万美元。技术人员分析发现,本次攻击是由于LibertiVault合约存在重入漏洞所导致。

1. 攻击者使用闪电贷借出500万USDT,调用LibertiVault合约deposit函数进行质押,其质押逻辑会将质押的代币一部分用于兑换,然后再计算铸币数量,铸币数量是根据和合约本次存入代币量与合约存入之前的余额比例来进行计算的。

2. 而兑换操作swap会调用黑客的合约,此时黑客第一次重入调用deposit,并在此函数中二次重入,向合约打入250万USDT。

3. 二次重入结束后,合约会按照250万USDT与之前合约的USDT余额比值为黑客铸币,第一次重入的deposit函数运行结束后,黑客又向其中打入了250万USDT。

4. 此时,执行完了外层deposit函数中的兑换操作,合约又会按照250万USDT与合约USDT余额比值进行铸币。

5. 问题就出在第四点,按理来说,第二次计算合约余额应该是之前的余额加上第一次打入的250万余额来作为本次计算的参数,但这里是使用的重入的形式,合约余额在最开始就已经获取了,所以参数并未改变,还是使用的原来的余额进行计算,导致给黑客铸了大量的凭证代币。

6. 最后黑客移除凭证代币,归还闪电贷获利。

最新快讯
13:30
星球午讯
13:12
BitMart上线Pope Leo XIV(POPE267)
13:11
BTT正式上线Bullish交易所
13:09
dYdX:提醒用户尽快迁移ethDYDX,跨链桥支持或将终止
13:08
某鲸鱼5小时前向Bybit存入947万枚USDT买入4,415枚ETH
推荐阅读