北京时间7月28日,收益聚合器PolyYeld.Finance遭到攻击,其代币YELD归零,攻击者获利25万美元。
SharkTeam第一时间对此事件进行了攻击分析和技术分析,并总结了安全防范手段,希望后续的区块链项目可以引以为戒,共筑区块链行业的安全防线。
一、事件分析
攻击者地址:
0x56ec01726b15b83c25e8c1db465c3b7f1d094756
0x1bdf24cb4c7395bf6260ebb7788c1cbf127e14c7
动画系列Krapopolis将于9月在FOX首映,提供NFT和粉丝投票:金色财经报道,Fox Network的Animation Domination将推出名为 Krapopolis 的动画系列来扩大其阵容,该系列将于 9 月 24 日在 FOX TV首播,该系列集成了Web3资产以提高观众参与度并奖励粉丝。对于节目的区块链部分,福克斯旗下的 Web3 媒体公司 Blockchain Creative Labs (BCL) 推出了包含 10,420 个数字“Krap Chickens”的 NFT 集合。该仍在铸造的系列在 2022 年动漫展上发布公告后正式推出。到目前为止,收藏家已铸造了 3,696 枚 Krap Chicken。每个“Krap Chicken”NFT 都可以作为 Krapopolis 扩展宇宙的粉丝通行证,并具有剧中描述的特征。[2023/8/12 16:21:47]
从交易详情可以看出攻击者获取的奖励费用异常。
Aave社区发起在Polygon zkEVM主网上部署Aave V3 MVP版本的温度检查讨论:3月3日消息,Aave社区发起关于在Polygon zkEVM主网上部署Aave V3 MVP版本的温度检查治理讨论。目前,社区希望通过该提案讨论,在zkEVML2上部署Aave V3.0.1(MVP V3),将使Aave Governance在该网络上尽早建立战略地位。部署AaveV3开发工作量较小,但为了减少风险,该提案建议限制流入资产,并设置保守的风险参数,使开发和风险服务提供商对zkEVM网络进行更深入的分析。该提案建议只加入三个抵押品(WETH、WMATIC和USDC)和一个可借贷资产(USDC),以减少风险。[2023/3/3 12:40:50]
lpSupply值被操纵为1,导致1300行计算错误。
根本原因在于当前合约的LPToken的余额不是所有用户质押的LPTokn总额,其中还包含攻击者向当前合约转入的LP?Token金额,这导致了lpSuppy被操纵为1的情况,造成了错误的判断和计算。
Polkamarkets公布MVP测试网首周表现:总交易量达465 kETH:波卡生态DeFi和预测市场Polkamarkets公布其MVP测试网首周表现,部分统计数据如下:
- 最大在线用户数:218;
- 购买交易笔数:1147;
- 总交易量:465 kETH;
- 新增总流动性:94 kETH。[2021/5/7 21:35:25]
详细函数分析
攻击者事先给16号池转入1LPToken
攻击者合约0x56ec01726b15b83c25e8c1db465c3b7f1d094756调用balanceOf函数查询lpSupply的值为1
调用updatePool函数
PolkaFund:牛市行情下DeFi进入后挖矿时代:ProverbsGroup(箴言集团)旗下波卡生态基金PolkaFund投研负责人谢光武认为,牛市行情下,DeFi挖矿会持续存在。这轮DeFi项目的爆发,表明目前项目已经不是纯叙事能撑起市值的时代,而是叙事与数据并重,并且越来越看重数据。这意味着项目的发展离不开数据,DeFi挖矿成为项目发展的重要战略选择。谢光武表示,可以重点关注几个未被发掘充分的赛道:1.波卡项目的挖矿和空投。2.BTC的DeFi挖矿。3.衍生品挖矿。4.DeFi和Layer2的联合挖矿,在高gas费限制下,用户体验、开发限制都制约了DeFi的发展,Layer2结合头部DeFi的挖矿项目值得关注。5.交易所公链的挖矿,三大在公链上投入巨额资源和资金证明了其发展的基本逻辑,用户留存、用户转化、产品生态等都将支撑着公链的持续发展。[2021/2/8 19:12:05]
调用balanceOf函数查询lpSupply的值
Satio CEO兼联合创始人Richard Parris:Polkadot公链最大的特点在于社区和协作:金色财经现场报道,在今日金色财经主办的金色沙龙活动现场,Richard Parris发言指出:EOS中超节点的作用与Polkadot中的平行链机制完全不同,但我认为这是正面的。
在我来看,在Polkadot生态中,竞争平行链插槽的项目具有高度差异性,具有不同的技术和目标,它们之间是不可替代的,并且每个项目都应为生态系统带来独特之处。EOS、以太坊和Polkadot之间的最大区别不是系统上的设计,而是社区和协作的重点,这使得项目更受鼓舞,有动力去构建并甘愿成为可相互配合以促进系统整体更为强大的工具。[2021/2/3 18:48:52]
此时由于lpSupply的值为1,判断条件不符,继续执行函数代码
调用getMultiplier函数获取差值
YeldPerBlock值为10000000000000000,allocPoint值为2000,totalAllocPoint值为29000。但下一步中将计算奖励的百分之十铸币给项目方,并未从给用户的奖励中扣除,这将导致通胀。
将铸造给项目方和当前合约地址的Token数量添加到totalSupply
此时YeldReward值为25517241379310344,乘上1e18,再除lpSupply的值1。
执行结束后,accYeldPerShare的值为25517241379310346060896017401670445
返回user.amount的值为249792662487644753291986140279580
计算完成后调用withdraw提取奖励,函数内调用payReferralCommission函数铸造通过上面计算得到的token数量。
事件分析总结,该项目存在多个问题:
项目方收取百分之十的收益时直接铸币并未从用户收益中扣除,导致通胀。
调用Masterchef合约实现推荐机制,即推荐者永久享受被推荐者收益的百分之二,但这百分之二并未从被推荐者收益中扣除。
正常情况下,合约计算收益的逻辑没有错误,lpSupply应该为合约中的总Token数,但攻击者通过操作,使得lpSupply为1,手动执行一次updatePool函数,使其计算出来的参数错误,再使用另外一攻击合约的地址正常质押提取,使得推荐者获得超出其本身应该获得的收益。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。