Grim Finance 攻击策略

攻击交易链接:https://ftmscan.com/tx/0x19315e5b150d0a83e797203bb9c957ec1fa8a6f404f4f761d970cb29a74a5dd6

核心原因:

depositFor 代码未作限制导致被重入攻击,用户可以存入任何代币合约。

如上代码所示

  1. 攻击者通过闪电贷借出 WFTM 与 BTC 代币,组流动池获得lp代币。

  2. grim finance的GrimBoostVault 需要质押lp代币获得挖矿收益

  3. depositFor 函数并未检查用户指定转入的 token 的合法性,攻击者通过调用 depositFor 函数时传入了由攻击代币合约地址。

  4. 通过攻击代币合约地址,对depositFor 重入攻击,在最后一笔交易时传入合法的lp代币。

  5. 由于GrimBoostVault 合约重入5次,因此 GrimBoostVault 合约给攻击者铸造了5倍的抵押LP凭证。

  6. 通过超额的抵押LP凭证把钱都换回WFTM与BTC,并还清闪电贷的钱,剩余转入攻击者自己的账号

解决方案:

1.depositFor 函数加重入锁

2.限制depositFor 可存入的代币

Last updated