链闻消息,针对DeFi保险项目Cover协议被攻击一事,慢雾安全团队对整个攻击流程进行了简要分析:1.在Cover协议的Blacksmith合约中,用户可以通过deposit函数抵押BPT代币;2.攻击者在第一次进行deposit、withdraw后将通过updatePool函数来更新池子,并使用accRewardsPerToken来记录累计奖励;3.之后将通过_claimCoverRewards函数来分配奖励并使用rewardWriteoff参数进行记录;4.在攻击者第一次withdraw后还留有一小部分的BPT进行抵押;5.此时攻击者将第二次进行deposit,并通过claimRewards提取奖励;6.问题出在rewardWriteoff的具体计算,在攻击者第二次进行deposit、claimRewards时取的Pool值定义为memory,此时memory中获取的Pool是攻击者第一次withdraw进行updatePool时更新的值;7.由于memory中获取的Pool值是旧的,其对应记录的accRewardsPerToken也是旧的会赋值到miner;8.之后再进行新的一次updatePool时,由于攻击者在第一次进行withdraw后池子中的lpTotal已经变小,所以最后获得的accRewardsPerToken将变大;9.此时攻击者被赋值的accRewardsPerToken是旧的是一个较小值,在进行rewardWriteoff计算时获得的值也将偏小,但攻击者在进行claimRewards时用的却是池子更新后的accRewardsPerToken值;10.因此在进行具体奖励计算时由于这个新旧参数之前差值,会导致计算出一个偏大的数值;11.所以最后在根据计算结果给攻击者铸造奖励时就会额外铸造出更多的COVER代币,导致COVER代币增发。
慢雾MistTrack:SafeDollar被盗25万美元已转入Tornado Cash,与PancakeBunny洗币手法相似:据慢雾MistTrack监测,6月28日攻击SafeDollar的黑客地址(0xFeDC24...Be7eBd)已将价值约25万美元的USDT和USDC从Polygon跨链到ETH,接着先通过ParaSwap将资金兑换为DAI,后通过Uniswap将DAI兑换为近100 ETH,最终转入Tornado Cash。该洗币手法与此前PancakeBunny事件相似:PancakeBunny总共被黑损失约4600万美金,攻击者分批将约1600万美金的DAI兑换成ETH,然后转入Tornado Cash。[2021/6/28 0:12:09]
慢雾揭秘Pickle Finance被黑过程:2020 年 11 月 22 日,以太坊 DeFi 项目 Pickle Finance 遭受攻击,损失约 2000万DAI。慢雾安全团队跟进相关事件并进行分析,以下为分析简略过程:
1、项目的 Controller 合约中的 swapExactJarForJar 函数允许传入两个任意的 jar 合约地址进行代币的兑换,其中的 _fromJar, _toJar, _fromJarAmount, _toJarMinAmount 都是用户可以控制的变量,攻击者利用这个特性,将 _fromJar 和 _toJar 都填上自己的地址,_fromJarAmount 是攻击者设定的要抽取合约的 DAI 的数量,约 2000万 DAI。
2、使用 swapExactJarForJar 函数进行兑换过程中,合约会通过传入的 _fromJar 合约和 _toJar 合约的 token() 函数获取对应的 token 是什么,用于指定兑换的资产。 而由于 _fromJar 合约和 _toJar 合约都是攻击者传入的,导致使用 token() 函数获取的值也是可控的,这里从 _fromJar 合约和 _toJar 合约 获取到的 token 是 DAI。
3. 此时发生兑换,Controller 合约使用 transferFrom 函数从 _fromJar 合约转入一定量的的 ptoken,但是由于 fromJar 合约是攻击者控制的地址,所以这里转入的 ptoken 是攻击者的假币。同时,因为合约从 _fromJar 合约中获取的 token 是 DAI,然后合约会判断合约里的资金是否足够用于兑换,如果不够,会从策略池中赎回一定量的代币 然后转到 Controller 合约中。在本次的攻击中,合约中的 DAI 不足以用于兑换,此时合约会从策略池中提出不足的份额,凑够攻击者设定的 2000万 DAI 。
4. 兑换继续,Controller 合约在从策略池里提出 DAI 凑够攻击者设定的 2000万 DAI后,会调用 _fromJar 的 withdraw 函数,将攻击者在第三步转入的假 ptoken burn 掉,然后合约判断当前合约中 _toJar 合约指定的 token 的余额是多少,由于 _toJar 合约指定的 token 是 DAI,Controller 合约会判断合约中剩余 DAI 的数量,此时由于 第三步 Control[2020/11/22 21:39:57]
EOS挖矿项目DMD.finance已通过慢雾审计 代码无已知漏洞:EOS上的质押类挖矿项目DMD.finance已经通过安全公司慢雾审计,综合评估合约代码无已知漏洞,目前3个代币池的合约账号权限为多签管理,项目方无法单方面更新合约。目前DMD.finance支持EOS、USDT、OGX、BOX质押挖矿。[2020/9/6]
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。