Popsicle Finance 双花攻击剖析_以太坊
Popsicle Finance 双花攻击剖析
中国北京时间 2021 年 8 月 4 日早晨 6 点(区块链 12955063),Popsicle Finance 新项目下的好几个机池被攻击,损害额度超出两千万美元,是目前为止 DeFi 行业产生的损害金额较大 的每笔攻击之一。根据剖析攻击买卖及新项目编码大家发觉,本次攻击是一个运用新项目的记帐系统漏洞开展数次获取的攻击(Double-Claiming Rewards)。下边大家根据编码和攻击步骤剖析本次攻击。
Popsicle Finance 是一个涉及到好几个链的机池(Yield Optimization Platform)。
客户最先启用 deposit 函数向机池存进一定的流动性,并得到 Popsicle LP Token (下称 PLP Token)做为储蓄的市场份额证实。Popsicle Finance 会将客户给予的流动性存进 Uniswap 等最底层养金鱼的鱼缸并得到盈利。
客户还能够启用 withdraw 函数,依据客户拥有的 PLP Token 所意味着的流动性市场份额,从机池取回来流动性。Popsicle Finance 会将 PLP Token 相匹配的流动性从 Uniswap 等最底层养金鱼的鱼缸中取回来给客户。
最终,客户在机池中存的流动性会伴随着時间造成一定的盈利(Yield),会总计在合约的客户情况中。客户能够启用 collectFees 函数取回来一部分储蓄奖赏。
此次攻击的关键函数恰好是 collectFees 函数。下边大家逐渐剖析其编码。最先得到储存在 userInfo 中的客户情况。在其中客户情况中的 token0Rewards 和 token1Rewards 是因为客户储蓄而积累的奖赏。
下面测算该合约中,相匹配机池的 Token 对的 Balance。假如在合约中有充足的 Balance,就按额度将 Reward 付款给客户;不然会启用 pool.burnExactLiquidity 从最底层 pool 取回来流动性回到给客户。
最终,会将纪录在 userInfo 中的 Rewards 情况开展升级。见到这儿,机池的编码完成或是较为合乎逻辑性的。可是在函数开始大家发觉了 updateVault modifier,这一函数会在 collectFees 的函数体以前运作,系统漏洞可能在 updateVault 有关的函数中。
之上是 updateVault 有关函数的完成。全过程以下:
最先启用_earnFees 向最底层 pool 获得累积的 Fee;
接着启用_tokenPerShare 升级 token0PerShareStored 和 token1PerShareStored 主要参数,这两个主要参数意味着了养金鱼的鱼缸中每一个 share 意味着的 token0 和 token1 的总数,即机池的每一个市场份额计意味着的 Token 对总数;
最终启用fee0Earned 和fee1Earned 升级相匹配到这一客户的储蓄 Rewards (即 user.token0Rewards 和 user.token1Rewards)。
之上是fee0Earned 和fee1Earned 函数的完成,2个函数完成同样,都完成了那样一个公式计算(以_fee0Earned 为例子):
user.token0Rewards = PLP.balanceOf(account) * (fee0PerShare - user.token0PerSharePaid) / 1e18
换句话说,该函数会在原来的 user.token0Rewards 基本上,依据客户有着的 PLP Token 总数测算应给客户派发的 Fee 的市场份额。
但大家注意到这一函数是增加量的,换句话说即便 客户并沒有拥有 PLP Token (PLP.balanceOf(account) 为 0),该函数仍会回到储存在 user.token0Rewards 中记帐的储蓄奖赏。
因而针对全部合约,大家发觉2个关键的逻辑性缺点:
客户的储蓄奖赏是纪录在 user.token0Rewards 和 user.token1Rewards 中的,并不与一切 PLP Token 或别的物品有一切方式的关联。
用以取回来储蓄盈利的 collectFees 函数只是取决于记帐的 user.token0Rewards 和 user.token1Rewards 情况,即便 客户仍未拥有 PLP Token,仍能够取下相匹配的储蓄奖赏。
大家幻想一个攻击步骤:
攻击者向机池里存进一定的流动性,得到一部分 PLP Token。
攻击者启用 collectFees(0, 0),后面一种会升级攻击者的储蓄奖赏,即状态变量 user.token0Rewards 的值,但并沒有真真正正取回来储蓄奖赏。
攻击者将 PLP Token 转入自身操纵的别的合约,再启用 collectFees(0, 0) 升级状态变量 user.token0Rewards。换句话说根据不断运转 PLP Token 并启用 collectFees(0, 0),攻击者拷贝了这种 PLP Token 相匹配的储蓄奖赏。
最终,攻击者从之上每个详细地址启用 collectFees 函数,取回来真真正正的奖赏。这时尽管这种帐户中并沒有 PLP Token,但因为记帐在 user.token0Rewards 沒有升级,攻击者因而得到取下好几份奖赏。
用现实生活中的事例来叙述这一攻击,等同于我向银行存钱,金融机构给了我一张储蓄凭据,但这张凭据沒有防伪标识对策都没有与我关联,我将凭据打印了多份发送给不一样的人,她们每一个人都凭着这一凭据向金融机构取回来了贷款利息。
根据之上的编码剖析,大家发觉了 Popsicle Finance 在机池完成上的系统漏洞。下边大家对攻击买卖开展详细分析,看攻击者是如何运用这一系统漏洞的。
攻击者的整体步骤以下:
攻击者建立了三个买卖合约。在其中一个用以进行攻击买卖,此外2个用以接受 PLP Token 并启用 Popsicle Finance 机池的 collectFees 函数取回来储蓄奖赏。
根据闪电贷从 AAVE 借出去很多流动性。攻击者挑选了 Popsicle Finance 新项目下的好几个机池,向 AAVE 借出去了相匹配这种机池的六种流动性。
开展Deposit-Withdraw-CollectFees循环系统。攻击者一共开展了8 次循环系统,各自攻击了 Popsicle Finance 新项目下的好几个机池,取下了很多流动性。
向 AAVE 偿还闪电贷,并将盈利根据 Tornado Cash 洗黑钱。
此次攻击买卖关键由多个 Deposit-Withdraw-CollectFees 循环系统组成,每一个循环系统的平面图如上图所述所显示。依据大家的剖析,逻辑性以下:
攻击者最先将闪电贷拿来的流动性存进机池里,得到一定量的 PLP Token。
攻击者将 PLP Token 转入攻击合约 2。
攻击合约 2 启用机池的 collectFees(0, 0) 函数,设定合约 2 相匹配的 user.token0Rewards 和 user.token1Rewards 情况。
攻击合约 2 将 PLP Token 转入攻击合约 3。
和攻击合约 2 的实际操作相近,攻击合约 3 启用机池的 collectFees(0, 0) 函数,设定合约 2 相匹配的 user.token0Rewards 和 user.token1Rewards 情况。
攻击合约 2 将 PLP Token 转到攻击合约,后面一种启用机池的 withdraw 函数 Burn 掉 PLP Token,取回来流动性。
攻击合约 2 和攻击合约 3 启用 collectFees 函数,用虚报的 tokenRewards 情况取回来了储蓄奖赏。
依据大家的以太币买卖跟踪数据可视化系统软件(https://tx.blocksecteam.com/)得出的买卖启用图以下,在其中一部分关键买卖用红色字体开展标明:
此次攻击一共盈利:2.56k WETH,96.2 WBTC,160k DAI,5.39m USDC,4.98m USDT,10.5k UNI,盈利总共超出 20,000,000 美金。
在本次攻击以后攻击者根据最先根据 Uniswap 和 WETH 将攻击得到的别的 token 所有换为 ETH,随后根据数次应用 Tornado.Cash 将 ETH 漂白。
IoTeX与以太币主链扩充互联网Polygon宣布进行协作:官方公告,物联网技术区块链平台IoTeX与以太币主链扩充互联网Polygon宣布进行协作,彼此将一同探寻现实世界物联网技术数据信息上链以太币L2可拓展互联网、物联网技术数据信息跨链区块链化,怎样在Polygon网络的200好几个dAPP上运用IoTeX数字货币等。
协作前期,彼此将一同布署IOTX区块链/NFT跨链桥在Polygon网络,包含IoTeX自主创新的可靠硬件配置“Pebble翡翠原石”转化成的“可证实位置信息Proof of presence”NFT等。没多久,IoTeX生态体系的NFT将在根据Polygon网络的NFT平台交易OpenSea上打开买卖。[2021/4/22 10:25:29]
Marlin Protocol与StaFi Protocol战略合作,将联合开发rPOND代币总:官方公告,Layer 0拓展新项目Marlin Protocol与可释放出来质押财产的流动性StaFi Protocol战略合作,彼此将携手并肩处理DeFi的扩展性难点,并且为Marlin的原生态代币总POND开发设计wrapped的rPOND代币总。[2021/1/26 13:36:06]
动态性 | 中间财经频道直播谈及Andreas Antonopoulos经典著作:据CCN信息,安德里亚斯?安东诺平安不动产(Andreas Antonopoulous)的经典著作《掌握比特币》(Mastering Bitcoin)近期被中间财经频道直播强烈推荐,用以详细介绍数字货币和区块链技术。据了解,此书汉化版为《区块链:数字化资产之路》。[2018/10/2
标签:
区块链热门资讯
Art Blocks增长速度超知名NFT平台 生成艺术是不是会引起新的NFT风潮? 一位名字叫做@quantbike的以太币小区组员近期用他的一个Cryptopunks互换了Art Blocks Curated系列产品的15件作品。
2021/8/4 22:26:05灰黑色星期三:Popsicle 和 Wault 被劫走二千多万美金 8月4日,区块链技术做市商 Popsicle Finance 和盈利聚合平台 Wault Finance 连续遭受进攻,各自损害 2,070 万美金和 88.8 万美金。
2021/8/4 22:19:44Vitalik: 抵制过多应用基尼系数 基尼系数 (也被称作基尼指数) 是目前为止最受大家喜爱、最广为流传的用以测量收益不公平的规范,尤其是用于考量在某我国、地域或别的小区的收益或財富不公平。它往往受大家喜爱,是由于它非常容易了解,它的数学定义能够非常容易根据一个数据图表开展数据可视化。
2021/8/4 22:19:24夜间必看5篇 | 全球福布斯:NFT怎样危害商业时代 1.全球福布斯:NFT怎样危害商业时代 NFT的发源一般能够上溯到2012年走红的彩色币。虽然彩色币相对性粗略地和简易,但它是区块链技术在数字货币层面的最开始运用之一。
2021/8/4 22:01:28欲征280亿美金加密贷币税款 美国新基础设施建设法案异议 美国新基础设施建设法案中的加密条文,规定交易中心、别的加密运用融入新的信息内容汇报规定,有可能收交加密贷币税款约280亿美金。而本次异议的聚焦点关键紧紧围绕法案中“经纪人(broker)”一词的界定。
2021/8/4 21:44:47美国证交会现任主席:管控和投资者保护刻不容缓 在周二的Aspen Security社区论坛上,美国股票交易联合会 (SEC) 现任主席 Gary Gensler 注重必须 对加密贷币开展更严苛、更合理的投资者保护。 Gensler说:“现阶段,我们在加密行业沒有充足的投资者保护。坦率地说,在这个时候,它更好像野性的中西部。
2021/8/4 21:43:55