北京时间7月28日,安全公司rugdoc在推特上表示,收益耕作协议PoYeld Finance遭到攻击,所有者宣布该合同已被使用并伪造了大量yeld代币。Coingeckko的报价显示,yeld代币价格暴跌至零,暴跌*。
事件概述
攻击事件如何发生
Poweld金融是基于POLOGAN网络的下一代产量农业协议。它具有许多独特和创造性的功能,使用户能够获得被动收入。
据报道,该项目正试图达成一项类似于去年的协议,以减少对POLOGAN网络用户、LP提供商和抵押人的高价值代币供应。在2-3个月内,将只铸造62100枚yeld代币。
北京时间7月28日消息,poweld finance不慎被黑客“血洗”。遭到攻击后,yeld代币价格暴跌至零,暴跌*;!
这一次,黑客攻击使yeld代币价格暴跌至零,可以说是重大损失。成都连锁安全再次提醒所有主要项目方注意安全预防措施。
事件具体分析
攻击者如何得手Event overview
整个攻击是由黑客策划的。攻击者利用传输的xyeld代币的实际数量小于发送数量这一事实以及MasterChef合同抵押和奖励计算中的逻辑缺陷。通过在MasterChef合同中投资大量资金控制抵押池中抵押代币的数量,攻击者操纵奖励计算,获得大量xyeld奖励代币,**使用quickswap兑现并离开市场。
攻击者地址:
0xa4bc39ff54e1b682b366b57d1f6b114a829f5c01
攻击合同:
答:
0x1BDF24C4C7395BF6260EBB7788C1CBF127E14C7
B:
0x56ec01726b15b83c25e8c1db465c3b7f1d094756
攻击事务:
0x3c143d2a211f7448c4de6236e666792e90b2edc8f5035c3aa992fd7d7daca974
0x10eeb698a2cd2a5e23d526b2d59d39a15263be018dbbda97dad4f9fa8c70347f
第一轮
攻击者首先使用quickswap事务对将29.75 wet交换为527.69517111655704754 xyeld代币。
接下来,通过攻击契约,攻击者在事务中反复调用MasterChef契约中的morage extraction函数,以将MasterChef中PID为16的morage池中的xyeld代币数至少减少到0。
在传输xyeld代币时,如果收件人地址不是burn_uuu地址,则变量transfertaxrate的值不是0,并且收件人地址是。如果ISExclude map中的相应值不正确,并且发件人不是合同的所有者,则将收取一定百分比的服务费,目前为3%。手续费将转入代币合同。在满足某些条件后,手续费将作为流动资金添加到相应的交易对中。
在MasterChef合同中,抵押数量记录代币转账的初始数量,而不是实际到达数量。在提取操作期间,可以提取的数量是记录的数量,超过了用户实际抵押给合同的数量,因为在完成抵押提取操作后,抵押池中的xyeld代币将异常减少。
攻击前,MasterChef中的xyeld代币数量为242.017807511865297458:
攻击后,MasterChef中的xyeld代币数为0.000000000000000001:
第二轮
攻击者通过提前攻击合同B,将抵押池中的0.009789171908299592 xyeld token抵押,并将推荐人设置为攻击合同a。攻击契约a的攻击完成后,控制攻击契约a在抵押池中获得奖励。由于balanceof函数用于在更新MasterChef合同中的抵押池信息时获取合同中抵押代币的数量,因此获取的数量是恶意减少后的数量。
这将导致xyfld抵押贷款池中的accyeldpershare变量异常增加:
这是一个巨大的奖励:
第三轮
在奖励分配过程中,由于计算的奖励金额远远超过硬币的实际金额,因此本合同中的所有yeld代币都会转移到攻击合同B中。通过获得奖励获得的奖励代币金额为3031.194777597579576657耶尔德。
同时,由于攻击合同B的推荐人是攻击合同a,当攻击合同B收到奖励时,将向攻击合同a发放推荐奖励,奖励金额按被推荐人获得奖励的2%计算。由于传入uu,未决数量是一个异常大的值,因此攻击契约a获得的推荐奖励也是一个异常大的数量。通过攻击契约获得的推荐奖励为:
4995853249752.8950658397722805591耶尔德
**,攻击者使用quickswap将所有yeld代币兑换成USDC、wet和matic。
事件复盘
我们需要注意什么 Case Review
此事件与之前的safedollar攻击类似,使用相同的攻击技术。有两个区别:第一,攻击者没有选择使用闪电贷款获得大量资金,而是投资了29.75 wETH作为攻击的初始资金;第二个是主厨合同中的推荐和奖励机制,它将这种攻击的危害无限放大。
当MestChanf抵押贷款池被设计时,通货紧缩和通货膨胀代币没有出现,因此开发者没有考虑这些代币的可能影响。在代码开发过程中,一些项目方直接使用旧的MasterChef代码,并添加通货紧缩通胀代币或奖励作为辅助代币,从而导致各种恶意攻击或异常。目前MasterChef morage pool存在两类问题:一是没有对通胀和通缩代币进行特殊处理,没有检查实际转入合同的代币数量是否与函数调用时填写的代币数量相同;第二,奖金代币作为抵押代币添加,导致奖励计算异常。
造成这两类问题的根本原因在于,在计算奖励时,利用余额函数获取抵押金额。建议项目方在开发MasterChef类抵押池代码时使用单独变量作为抵押数量的记录,然后在计算奖励时使用此变量获取抵押代币数量,而不是使用balanceof函数。
文章标题:YELD价格跳水至零:对PolyWeld攻击的分析
文章链接:https://www.btchangqing.cn/305912.html
更新时间:2021年07月29日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。