Akropolis重入攻击事件:攻击者使用自己构造token导致合约使用相同差值铸币两次

慢雾分析kropolis重入攻击事件:
1. 攻击者使用自己创建的token进行deposit,Akropolis合约会先记录一次合约中代币总量;
2. Akropolis合约调用用户创建token的transferFrom函数时,攻击者在transferFrom函数中重入合约的deposit函数,并转入DAI到Akropolis合约;
3. 在重入交易中,由于Akropolis合约会先获取合约中所有代币总量,该值和第一次调用deposit函数获取的合约代币总量的值一致;
4. Akropolis合约计算充值前后合约中代币总量的差值,攻击者在充值DAI后,会得到一定量Delphi token,获得token的数量就是充值DAI数量;
5. 铸币完成后,流程回到第一次deposit往下继续执行,合约会再次获取合约中所有代币总量,由于在重入交易时,攻击者已转入一定量DAI,所以得到的代币总余额就是攻击者在重入交易完成后代币总余额;
6. 合约再次计算差值,由于第一次deposit时合约中所有代币总量已保存,计算出来的差值和重入交易中计算的差值一致,Akropolis合约再次铸币给攻击者。

Author: FaxToken

发表评论

电子邮件地址不会被公开。 必填项已用*标注