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

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

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

一、事件分析

攻击者地址:

0x56ec01726b15b83c25e8c1db465c3b7f1d094756

0x1bdf24cb4c7395bf6260ebb7788c1cbf127e14c7

Tether首席技术官:P2P加密通信应用Keet将发布移动端:金色财经报道,Tether首席技术官Paolo Ardoino在社交媒体X上称,正在测试新的移动应用程序Keet。真正的P2P语音通话、盲镜像和产品稳定性正在逐步实现。一旦发布,团队将专注于功能、集成和P2P插件市场。

此前报道,Tether、Bitfinex和Hypercore支持的加密平台Holepunch宣布推出免费的点对点即时消息应用Keet Mobile。目前Keet Mobilea lpha初始版本将仅限于短信发送,但计划在几个月内支持音频或视频通话功能。[2023/8/19 18:10:22]

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

The Doggies系列NFT24小时交易量超392万美元,OpenSea交易量排名第6:2月24日消息,据NFTGo.io数据显示,The Doggies系列NFT24小时交易量超392万美元,OpenSea交易量排名第6。该系列NFT将于明日reveal。此前报道,The Doggies系列NFT是美国说唱歌手Snoop Dogg在The Sandbox发售的1万个Avatar化身。该NFT可在The Sandbox中使用,访问Snoop Dogg在The Sandbox构建的元宇宙。[2022/2/24 10:12:25]

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

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

Synthetix Errance:合成资产是一个可以向圈外延伸的赛道:金色财经现场报道,4月10日,金色财经主办的共为创新大会“DeFi的创新进阶”专场于上海举办,会上Synthetix中国社区负责人Errance分享表示,合成资产是一个极度细分的赛道,主要是为用户购买想购买的资产,但用户并不持有该资产,同时可以具备该资产的风险和收益。任何一个资产都可以生产合成资产。合成资产是一个向外延伸的赛道,可以推动Defi破圈。[2021/4/10 20:04:43]

详细函数分析

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

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

火币日本和区块链教育平台PoL合作 共同制作平台币课程:根据官网消息,火币日本与区块链教育平台PoL的运营商techtec进行合作,共同制作平台币课程。

首期课程将以获得日本金融厅许可的数字资产HT为题材,从平台币的运行机制、用途、生态系统等方面制作系统的学习内容。

火币日本负责人表示:“HT是火币全球站发行的去中心化数字资产,自2018年发行以来,致力于在全球范围内搭建部署HT生态系统。希望通过与PoL合作,为公众提供一个学习平台币知识的机会,多方面了解平台币的实用性。”[2020/7/21]

调用updatePool函数

调用balanceOf函数查询lpSupply的值

动态 | Polkadot协议预计将于2019年第三季度发布:据cointelegraph报道,以太坊客户端Parity即将推出的“Polkadot”协议预计将于2019年第三季度发布,该协议是一种试图链接许多不同类型区块链的“para chain”形式。[2019/2/18]

此时由于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:4ms0-3:328ms