根据慢雾区的信息,2020年11月22日,以太坊 DeFi项目泡菜金融遭到攻击,损失约2000万Dai。慢雾安全小组立即对相关事件进行跟踪分析。下面是一个简单的分析过程
1项目控制器合约中的swapexactjarforjar函数允许传入两个任意的jar合约地址进行代币交换fromJar、toJar、fromJarAmount、Tojarminamount是一个可以由用户控制的变量,可以由用户从jar和_uTojar填充它们的地址_uFromjarAmount是攻击者提取合同,约2000万戴
2在使用swapexactjarforjar函数进行交换的过程中,通过_fromjar contract进行转换,Tokar contract的token()函数得到相应的token,用于指定要交换的资产。而且由于攻击者传入了_FromJar合约和_UFromJar合约,所以使用token()函数获得的值也可以控制_FromJar合约,而tojar合约获得的token是Dai,。
3在这种情况下,控制器契约使用transferfrom函数,fromjar契约传输一定数量的ptoken,但由于fromjar契约是攻击者控制的地址,因此这里传输的ptoken就是攻击者的假币。同时,由于合同中的金额不足,将通过转移来判断合同金额是否足以赎回合同。在这次进攻中,傣族在合同中是不够交换的。此时,合同将建议从策略池中获得的份额不足,以弥补攻击者设置的2000万Dai;
4交流还在继续。从策略池中提出Dai后,控制器契约将调用,以达到攻击者设置的2000万Dai,fromjar的withraw函数将丢弃攻击者在第三步输入的假ptoken burn,然后合约判断当前合约,tojar合约中指定的token余额是多少,tojar合约中指定的token是Dai。控制者合同将判断合同中剩余Dai的数量。此时,由于控制人合同第三步累计2000万Dai,因此Dai余额为2000万。此时,控制器契约调用_jar契约的deposit函数将2000万Dai传输给tojar契约中的攻击者控制的。此时,攻击者完成获利
结论:在本次攻击中,攻击者通过调用控制器合同中的swapexactjarforjar函数和_Tojar的合同地址伪造,通过转移假币换取合同中的真实Dai,完成了攻击过程。
文章标题:慢雾:假钱换真钱
文章链接:https://www.btchangqing.cn/147991.html
更新时间:2020年11月26日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。