ACE:Polygon上收益聚合项目PolyYeld Finance被攻击事件分析_CEB

北京时间7月28日,收益聚合器PolyYeld.Finance遭到攻击,其代币YELD归零,攻击者获利25万美元。

SharkTeam第一时间对此事件进行了攻击分析和技术分析,并总结了安全防范手段,希望后续的区块链项目可以引以为戒,共筑区块链行业的安全防线。

一、事件分析

攻击者地址:

0x56ec01726b15b83c25e8c1db465c3b7f1d094756

0x1bdf24cb4c7395bf6260ebb7788c1cbf127e14c7

Horizo??n将在Polygon上推进Sequence的钱包和开发者堆栈:金色财经报道,Web3基础设施和游戏公司Horizo??n Blockchain Games和Polygon协议的成长和开发团队Polygon Labs宣布结成战略联盟。Sequence是用于项目的Web3钱包和基础设施堆栈,以加速高性能和可定制的 Polygon Supernets的开发。该战略联盟将提供积分以鼓励项目使用Sequence在Polygon Supernets上构建。Sequence将为构建和使用Polygon Supernets、Polygon zkEVM和Polygon PoS的项目提供一套无缝的开发人员工具,包括Sequence钱包、令牌和NFT API、索引器、中继器、节点网关、市场和SDK。[2023/5/18 15:09:54]

从交易详情可以看出攻击者获取的奖励费用异常。

印度电商巨头Flipkart与Meta和Polygon合作,推出元宇宙“Flipverse”:9月24日消息,印度电商巨头Flipkart宣布与Meta和Polygon合作在当地排灯节期间推出元宇宙产品“Flipverse”,消费者可以通过任何手机设备或浏览器访问Flipverse,并且用虚拟化身在元宇宙3D渲染商店内走动、购物。(thewatchdog)[2022/9/24 7:19:07]

lpSupply值被操纵为1,导致1300行计算错误。

日本元宇宙链游PolkaFantasy将在TrustPad上进行虚拟土地销售:10月9日消息,PolkaFantasy是日本NFT跨链市场和元宇宙链游,宣布Fantasy Land Sale将在TrustPad的平台上进行。[2021/10/9 20:16:43]

根本原因在于当前合约的LPToken的余额不是所有用户质押的LPTokn总额,其中还包含攻击者向当前合约转入的LP?Token金额,这导致了lpSuppy被操纵为1的情况,造成了错误的判断和计算。

详细函数分析

攻击者事先给16号池转入1LPToken

攻击者合约0x56ec01726b15b83c25e8c1db465c3b7f1d094756调用balanceOf函数查询lpSupply的值为1

孙宇晨:P网Poloniex将与波场TRON合作,启用全新手续费政策:据最新消息显示,波场TRON创始人兼BitTorrent CEO孙宇晨正在一直播平台直播,孙宇晨表示:“主要有两件事要和大家分享,第一是自2020年6月11日起,P网Poloniex将与波场TRON合作,启用全新手续费政策,用户可使用TRX支付现货和杠杆交易手续费,并享受25%的交易手续费减免;第二是P网Poloniex将启用新的阶梯费率,30日内交易量低于五万美金但在P网持有49美金等值TRX的用户,即可享受优惠费率。”[2020/6/8]

调用updatePool函数

调用balanceOf函数查询lpSupply的值

Chain Capital追投区块链跨链项目Polkadot:近日,Chain Capital宣布对区块链跨链明星项目Polkadot(DOT)追加投资。据了解,2017年时,Chain Capital参与了Polkadot(DOT)的早期投资。Polkadot 是一种异构的多链架构,致力于利用中继技术创建一个可信任、可通信的通用框架,方便不同区块链之间进行通信和数据的传递。据此前报道,Gavin Wood今日在Polkadot社区中表示,DOT最后一轮代币销售方案尚未最终确定,希望在本月底之前确定并沟通最终的代币销售结构,代币销售的同时或许随后会立即上线主网。据了解,Chain Capital是一家成立于2015年的专注于区块链项目投资和数字资产管理的数字基金公司。[2020/3/8]

此时由于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函数,使其计算出来的参数错误,再使用另外一攻击合约的地址正常质押提取,使得推荐者获得超出其本身应该获得的收益。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

区块博客

[0:15ms0-7:428ms