据慢雾区消息,去中心化年金协议PunkProtocol在公平启动的过程中遭遇攻击,慢雾安全团队以简讯形式将攻击原理分享如下:
1.攻击者调用CompoundModel合约的Initialize函数进行重复初始化操作,将合约Forge角色设置为攻击者指定的地址。
慢雾:Quixotic黑客盗取约22万枚OP,跨链至BNB Chain后转入Tornado Cash:7月1日消息,据慢雾分析,Quixotic黑客盗取了大约22万枚OP(约11.9万美元),然后将其兑换成USDC并跨链到BNB Chain,之后将其兑换成BNB并转入Tornado Cash。[2022/7/1 1:44:55]
2.随后攻击者为了最大程度的将合约中资金取出,其调用了invest函数将合约中的资金抵押至Compound中,以取得抵押凭证cToken。
慢雾:yearn攻击者利用闪电贷通过若干步骤完成获利:2021年02月05日,据慢雾区情报,知名的链上机池yearnfinance的DAI策略池遭受攻击,慢雾安全团队第一时间跟进分析,并以简讯的形式给大家分享细节,供大家参考:
1.攻击者首先从dYdX和AAVE中使用闪电贷借出大量的ETH;
2.攻击者使用从第一步借出的ETH在Compound中借出DAI和USDC;
3.攻击者将第二部中的所有USDC和大部分的DAI存入到CurveDAI/USDC/USDT池中,这个时候由于攻击者存入流动性巨大,其实已经控制CruveDAI/USDC/USDT的大部分流动性;
4.攻击者从Curve池中取出一定量的USDT,使DAI/USDT/USDC的比例失衡,及DAI/(USDT&USDC)贬值;
5.攻击者第三步将剩余的DAI充值进yearnDAI策略池中,接着调用yearnDAI策略池的earn函数,将充值的DAI以失衡的比例转入CurveDAI/USDT/USDC池中,同时yearnDAI策略池将获得一定量的3CRV代币;
6.攻击者将第4步取走的USDT重新存入CurveDAI/USDT/USDC池中,使DAI/USDT/USDC的比例恢复;
7.攻击者触发yearnDAI策略池的withdraw函数,由于yearnDAI策略池存入时用的是失衡的比例,现在使用正常的比例体现,DAI在池中的占比提升,导致同等数量的3CRV代币能取回的DAI的数量会变少。这部分少取回的代币留在了CurveDAI/USDC/USDT池中;
8.由于第三步中攻击者已经持有了CurveDAI/USDC/USDT池中大部分的流动性,导致yearnDAI策略池未能取回的DAI将大部分分给了攻击者9.重复上述3-8步骤5次,并归还闪电贷,完成获利。参考攻击交易见原文链接。[2021/2/5 18:58:47]
3.最后攻击者直接调用withdrawToForge函数将合约中的cToken转回Compound获取到对应的底层资产并最终将其转给Forge角色。
慢雾:警惕ETH新型假充值,已发现在野ETH假充值攻击:经慢雾安全团队监测,已发现存在ETH假充值对交易所攻击的在野利用,慢雾安全团队决定公开修复方案,请交易所或钱包及时排查ETH入账逻辑,必要时联系慢雾安全团队进行检测,防止资金丢失。建议如没有把握成功修复可先临时暂停来自合约地址的充值请求。再进行如下修复操作:1、针对合约ETH充值时,需要判断内联交易中是否有revert的交易,如果存在revert的交易,则拒绝入账。2、采用人工入账的方式处理合约入账,确认充值地址到账后才进行人工入账。同时需要注意,类以太坊的公链币种也可能存在类似的风险。[2020/5/23]
4.withdrawToForge函数被限制只有Forge角色可以调用,但Forge角色已被重复初始化为攻击者指定的地址,因此最终合约管理的资产都被转移至攻击者指定的地址。
总结:本次攻击的根本原因在于其CompoundModel的Initialize函数未做重复初始化检查,导致攻击者直接调用此函数进行重复初始化替换Forge角色,最终造成合约管理的资产被盗。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。