慢雾安全团队针对“Opyn遭遇攻击”一事发文分析称,在其中一笔Opyn合约的攻击中,攻击者仅使用272 ETH最终得到467 ETH。完整的攻击流程如下: 1. 攻击者使用合约先启动Opyn合约的reateERC20CollateralOption函数创建oToken。 2. 攻击合约调用运动函数,传入已创建库的地址。 3. 通过exercise函数中用于循环逻辑执行调用两次 _exercise函数。 4. exercise函数调用transferCollateral函数将USDC转给函数调用者。 5. 攻击合约调用removeUnderlying函数将预先定义的ETH转出。 6. 最终攻击者拿回了战斗补充的ETH以及额外的USDC。 此次攻击主要是利用了_exercise函数中对vaultToExerciseFrom是否创建了vault的检查缺陷。此检查未纠正vaultToExerciseFrom是否是由参与者自己,而只是简单的检查是否创建了vault,导致攻击者可以任意重置已创建vault的地址来通过检查。