2、利用 swapExactJarForJar 函数举办兑换进程中,合约会通过传入的 _fromJar 合约和 _toJar 合约的 token() 函数获取对应的 token 是什么,用于指定兑换的资产。 而由于 _fromJar 合约和 _toJar 合约都是进攻者传入的,导致利用 token() 函数获取的值也是可控的,这里从 _fromJar 合约和 _toJar 合约 获取到的 token 是 DAI。
1、项目标Controller合约中的 swapExactJarForJar 函数答允传入两个任意的 jar 合约地点举办代币的兑换,个中的 _fromJar, _toJar, _fromJarAmount, _toJarMinAmount 都是用户可以节制的变量,进攻者操作这个特性,将 _fromJar 和 _toJar 都填上本身的地点,_fromJarAmount 是进攻者设定的要抽取合约的 DAI 的数量,约 2000万 DAI。
总结:此次进攻中,进攻者通过挪用 Controller 合约中的 swapExactJarForJar 函数时,伪造 _fromJar 和 _toJar 的合约地点,通过转入假币而调换合约中的真 DAI,完成了一次进攻的进程。3. 此时产生兑换,Controller 合约利用 transferFrom 函数从 _fromJar 合约转入必然量的的 ptoken,可是由于 fromJar 合约是进攻者节制的地点,所以这里转入的 ptoken 是进攻者的假币。同时,因为合约从 _fromJar 合约中获取的 token 是 DAI,然后合约会判定合约里的资金是否足够用于兑换,假如不足,会从计策池中赎回必然量的代币 然后转到 Controller 合约中。在本次的进攻中,合约中的 DAI 不敷以用于兑换,此时合约会从计策池中提出不敷的份额,凑够进攻者设定的 2000万 DAI 。
2020年11月22日,以太坊DeFi项目 Pickle Finance蒙受进攻,损失约2000万DAI。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。