BlockSec发现,这次攻击是因为MonoX合约中tokenIn和tokenOut使用的token是一样的,这也是该合约的一大漏洞。具体来说,在`swapTokenForExactToken` 函数中,攻击者可以使用与tokenIn和tokenOut相同的代币。计算新价格之后,`Monoswap`合约再调用`_updateTokenInfo`函数更新价格。但是,由于tokenIn和tokenOut是同一个token,tokenOut更新之后会覆盖tokenIn的价格更新,继而导致这个token的价格暴涨。在这种情况下,MooX代币价格会变得非常高,此时攻击者便利用这一漏洞从流动性池中兑换所有的其他代币。
领取专属 10元无门槛券
私享最新 技术干货