北京时间7月28日,安全公司Rugdoc在推特表示,收益耕作协议PolyYeldFinance遭到攻击,所有者已宣布合约已被利用并铸造了大量YELD代币。CoinGeckko行情显示,YELD代币价格直线跳水归零,狂跌100%。
事件概览
攻击如何发生Eventoverview
PolyYeldFinance是Polygon网络上的下一代产量农业协议,具有许多独特和创造性的功能,使用户能够获得被动收入。
据悉,项目正在尝试创建一个类似于Yearn的协议,以减少对PolygonNetwork用户、LP提供商和抵押者高价值的代币供应。在2-3个月的时间里,只会铸造62100个YELD代币。
北京时间7月28日,PolyYeldFinance意外遭到黑客“血洗”,被攻击之后,YELD代币价格直线跳水归零,狂跌100%?!
这一次,黑客攻击使YELD代币价格直线跳水归零,可谓损失惨重。成都链安再次提醒各大项目方,一定要注意安全防范工作。
Flare CEO:FIP 01提案旨在改善代币分配模式并鼓励参与网络:1月23日消息,Flare Networks联合创始人兼CEO Hugo Philion近日在推特上分享自己对FIP 01提案的看法。这个存在争议的提案旨在改善代币分配模式,减少通货膨胀,同时鼓励参与网络。
Philion首先承认这个提案可能使一些人感到被Flare背叛。 然后他解释称,他们的意图不是忽视这些感觉,而是解决之前模式的问题,以促进代币从那些不想长期持有的人那里更顺利地重新分配给那些想要长期持有的人。
Phillioin还表示,其设计灵感来自于比特币,并打算用比最初预期更多的代币来奖励那些建设基础设施的人。
Phillioin随后强调,只有XRP持有者因为持有代币而获得FLR。FIP01的设计旨在将负面影响最小化,同时纠正旧的分配模型。Flare是唯一一个围绕XRP生态系统构建的主要VC支持项目,我们也在围绕其他网络进行建设,但我们保留了XRP。社区不明白,说服加密VC系统支持任何涉及XRP的事情是多么不可能。尽管面临困境,他仍然对FIP01抱有信心,因为他相信如果执行得当,Flare可以“为整个行业提供价值,甚至可能扩展该行业”。(U.Today)[2023/1/23 11:27:18]
事件具体分析
英国ASA独立审查发现阿森纳球迷代币促销“轻视”了对加密货币的投资风险:金色财经报道,在俱乐部提出上诉后,一项独立审查维持了英国广告标准局 (ASA) 针对足球俱乐部阿森纳针对其球迷代币的在线广告的裁决。
在周三的一份声明中,监管机构表示,阿森纳已经轻视了对加密资产的投资,并鼓励消费者进行高风险投资,而在一个广告的情况下,没有提及付费粉丝代币的风险。?
该投诉涉及 2021 年 8 月在 Facebook 和俱乐部网站上发布的宣传其粉丝代币 AFC 的内容。该代币授予持有人对某些俱乐部决定的投票权,只能使用公司的加密货币 Chiliz 在 Socios 应用程序上购买。
去年有几家公司因其与加密货币相关的广告而引起了 ASA 的注意,其中包括 Kraken 和 Coinbase。 越来越多的案件促使 ASA 在 3 月份发布了有关加密广告的指南,建议公司明确有关加密资产的某些要点,包括它们不受监管。[2022/8/10 12:15:48]
攻击者如何得手?Eventoverview
整个攻击事件由黑客一手策划。攻击者利用xYELD代币转账时实际到账数量小于发送数量以及MasterChef合约抵押和计算奖励上存在的逻辑缺陷,通过投入大量资金控制MasterChef合约中抵押池的抵押代币数量,进而操纵奖励计算,从而获得巨额的xYELD奖励代币,最后利用QuickSwap套现离场。
dForce:关于“推出支持USX配对LP代币的新Vault”提案已获投票通过:dForce发推称,治理提案DIP024提议推出一个支持USX配对LP代币的新Vault的投票已通过,获得了94.35%的支持。
据介绍,dForce Vault的推出是为了引入各种资产作为抵押品,允许USX以完全不同的风险模型相对孤立抵押品资产进行铸造。
Vaults可以被定制,以独立支持不同的抵押资产。因此,我们建议支持多个流动性对LP代币作为铸造USX的抵押品,并提高资本效率。[2022/3/13 13:53:52]
攻击者地址:
0xa4bc39ff54e1b682b366b57d1f6b114a829f5c01
攻击合约:
A:
0x1BdF24CB4c7395Bf6260Ebb7788c1cBf127E14c7
B:
0x56ec01726b15b83c25e8c1db465c3b7f1d094756
攻击交易:
0x3c143d2a211f7448c4de6236e666792e90b2edc8f5035c3aa992fd7d7daca974
亿万富翁Mark Cuban现持有2500枚PTF代币:2月11日消息,根据以太坊钱包地址信息,达拉斯小牛队老板、亿万富翁Mark Cuban现持有2500枚PowerTrade(PTF)代币。PTF是加密期权交易平台PowerTrade的原生代币。而据悉,加密货币基金管理公司Pantera Capital则是PowerTrade的主要支持者之一。(The Daily Hodl)[2021/2/11 19:33:03]
0x10eeb698a2cd2a5e23d526b2d59d39a15263be018dbbda97dad4f9fa8c70347f
Round1
攻击者首先利用QuickSwap交易对将29.75WETH换成527.695171116557304754xYELD代币。
接下来,攻击者通过攻击合约在一笔交易反复调用MasterChef合约中的抵押提取函数将MasterChef中PID为16的抵押池中的xYELD代币数量减少0到最小值。
金色财经现场报道 Messari首席执行官Ryan Selkis对代币进行分类:金色财经现场报道,今日在Coindesk 2018共识会议上,Messari首席执行官Ryan Selkis对代币进行了分类。他认为加密货币包括BTC,BCH,LTC,XMR和ZEC;功能性代币包括Golem,Filecoin和Augur,cryptokitties可能也包括在内;同时,证券性代币为其包含的资产提供了一些固有权利。[2018/5/16]
由于xYELD代币在转移时,如果recipient地址不是BURN_ADDRESS地址,变量transferTaxRate的值不为0,recipient地址在_isExcluded映射中对应的值不为true,并且发送者不为合约的拥有者,就会收取一定比例的手续费,当前比例为3%。手续费会转移到代币合约中,在满足特定条件后,会将收取的手续费作为流动性添加到对应交易对中去。
而在MasterChef合约中,抵押数量记录的是代币转移的初始数量,而不是实际到账数量。在进行提取操作时,可提取的数量为记录的数量,超出了用户实际抵押到本合约中的数量,因为在完成一次抵押提取操作后,该抵押池中的xYELD代币便会异常减少。
在进行攻击前MasterChef中的xYELD代币的数量为242.017807511865297458:
在进行攻击后MasterChef中的xYELD代币的数量为0.000000000000000001:
Round2
攻击者事先通过攻击合约B在该抵押池中抵押0.009789171908299592xYELD代币,并将推荐人设置为攻击合约A。在攻击合约A攻击完成后,控制攻击合约A在该抵押池中进行奖励领取,由于MasterChef合约中更新抵押池信息时使用的是balanceOf函数获取本合约中抵押代币数量,故获取到的数量是恶意减少之后的数量。
这会造成xYFLD抵押池中accYeldPerShare变量异常增大:
从而使得奖励变为巨额:
Round3
在进行奖励发放时,由于计算出来的奖励数量远超过实际铸币数量,故将本合约中所有的YELD代币转移给攻击合约B,通过获取奖励得到的奖励代币数量为:3031.194777597579576657YELD。
同时,因为攻击合约B的推荐人是攻击合约A,故在攻击合约B领取奖励时会对攻击合约A发放推荐奖励,计算方式为被推荐人获取的奖励的2%。由于传入的_pending数量为异常大的值,故攻击合约A获得的推荐奖励也为异常大的数量,攻击合约获得的推荐奖励为:
4995853249752.895065839722805591YELD。
最后攻击者利用QuickSwap将所有的YELD代币兑换成USDC、WETH和MATIC套现离场。
事件复盘
我们需要注意什么CaseReview
本次事件与之前SafeDollar攻击事件类似,都是使用了相同的攻击手法。不同之处有两点:其一是此次攻击攻击者没有选择利用闪电贷来获取大量资金,而是投入了29.75WETH作为攻击的初始资金;其二是MasterChef合约中推荐奖励机制的问题,正是这个推荐奖励机制将本次攻击的危害无限放大了。
MasterChef类型抵押池设计之时,还没有通缩通胀类代币的出现,故开发者并没有考虑这类代币可能会造成的影响。部分的项目方在进行代码开发时,直接使用了旧的MasterChef代码,并添加了通缩通胀类代币或者奖励作为抵押代币,这便导致了各种恶意攻击事件或异常情况的产生。就目前来看,MasterChef类型抵押池存在两种类型的问题:一是没有对通胀通缩类代币进行特殊处理,没有检查实际转移到合约中的代币数量是否与函数调用时填写的数量相同;二是添加了奖励代币作为抵押代币,导致奖励计算出现异常。
两种类型问题的根本原因还是在于计算奖励时,获取抵押量使用了balanceOf函数来获取。建议项目方在进行MasterChef类型抵押池代码开发时,使用一个单独的变量作为抵押数量的记录,然后计算奖励时,通过此变量来获取抵押代币数量,而不是使用balanceOf函数。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。