PAR:项目方遇见“打桩机”?被攻击约40次损失170万美元!Paraluni安全事件分析_USD

2022年3月13日,成都链安链必应-区块链安全态势感知平台舆情监测显示,Paraluni合约遭受攻击,损失约170万美元,成都链安技术团队对此事件进行了相关分析。

#1总述

我们以第一笔攻击交易0xd0b4a1d4964cec578516bd3a2fcb6d46cadefe1fea5a2f18eec4c0a496e696f9为例:

地址列表

攻击地址:

0x94bC1d555E63eEA23fE7FDbf937ef3f9aC5fcF8F

攻击合约:

0x4770b5cb9d51EcB7AD5B14f0d4F2cEe8e5563645

ParaProxy:

CZ回应下架MITH:项目方运营存在问题,币安团队有权按照合作条约行事:12月16日消息,CZ解释“下架MITH”相关理由称,MITH的价格已远低于刚发布时的水平,该项目的网站处于离线状态。项目方官推已经近2年没有发布推文或更新社区消息。相信Binance团队在这件事上做出了正确的决定,并完全按照Binance所拥有的权利行事。

根据CZ提供的合作协议条例,一旦项目方代币价格连续15天低于0.13美元,或存在任何代币、项目方相关不利于Binance用户的事实事件,Binance都将有权扣除全部或任何部分的押金存款作为额外费用。

据此前报道,MITH官方表示,币安宣布下架MITH。作为MITH上线的一部分,Binance需要200,000 BNB存款,但从未退还。MITH代表Mithril社区要求Binance归还这笔押金,以便Mithril可以继续运营。鉴于Binance已单方面决定终止合作关系,MITH请求退还其200,000 BNB存款。[2022/12/16 21:49:02]

0x633Fa755a83B015cCcDc451F82C57EA0Bd32b4B4

CoinList 在代币销售中为项目方核心贡献者和 CoinList 社区成员上线了优先排队功能:CoinList 在代币销售中为社区成员和项目方核心贡献者上线优先排队功能,优先排队功能为邀请制。CoinList 表示,优先排队区的成员将会有更高几率获取代币,但不保证分配,其中,社区成员由 CoinList 官方根据积分系统定向邀请,优先队列人数将少于销售注册总数的 1%。[2021/6/25 0:05:31]

ParaImpl:

0xA386F30853A7EB7E6A25eC8389337a5C6973421D(MasterChef)

UGT:

0xbc5db89CE5AB8035A71c6Cd1cd0F0721aD28B508

优盾钱包团队:区块链技术服务商要差异化满足不同区域项目方需求:据官方消息,在“优盾有约——狂欢六城,安全无忧”系列活动启动会上,优盾钱包团队表示:区块链技术服务商要主动对接线下资源,差异化满足全国不同区域项目方需求。

此次线下系列活动将覆盖全国六大省市:上海、成都、深圳、北京、海南、合肥,旨在与全国区块链从业者共话行业发展趋势,并向嘉宾重点推荐数字资产管理解决方案。

优盾钱包是领先的企业级数字资产管理系统,以安全完善的技术重新定义数字资产钱包,为比特币、以太坊等100多种币种提供API接入;顶级私钥BOSS自主掌握,子私钥动态计算不触网,硬件加持,纯冷操作;多级财务审核策略,资产动向、操作日志一目了然;海量地址统一管理,余额一键自动归集。[2020/8/10]

UBT

0xcA2ca459Ec6E4F58AD88AEb7285D2e41747b9134

火币李林:项目方申请火币上币时,披露红杉资本等顶级VC投资信息,将加速上币审核流程:火币创始人李林刚在朋友圈申明:从昨天开始,突然被很多朋友问到交易所上币申请会不会针对红杉资本有特别的政策。感觉有点突然,现申明如下,1.虽然火币是红杉资本投资的企业,但火币不能保证所有红杉资本投资的项目都会在火币list。公平公正对待所有的项目,是交易所的基本立场。2.投资人和股东背景确实是项目上币审核的一个指标,对于像红杉等这种全球顶级的vc投资的项目,在交易所上币审核时会得到加分。3.项目方在申请火币上币时,最好也重点披露一下是否接受过类似红杉这种顶级vc的投资,我们会直接联系vc做一些基础的尽调,提升上币审核效率,加速上币审核流程。[2018/5/8]

1.向CakeSwap(0x7EFaEf62)中通过闪电贷借贷224BSC-USD,224BUSD

2.把第1步借到的代币向Para-LP(0x3fD4FbD7)中添加流动性,并将获得的222枚流动性代币的接收地址指定为UBT(0xcA2ca459)地址,这一步是为了后续的重入做准备。

图1初始准备

3.攻击合约(0x4770b5cb)调用ParaProxy合约的depositByAddLiquidity函数,添加流动性代币抵押挖矿,此处传入的pid为18,对应的Para-LP(BSC-USD/BUSD)0x3fD4FbD7a83062942b6589A2E9e2436dd8e134D4,但是token0,token1传入的地址为UGT、UBT的地址,数量为1e18。

图2重入攻击

4.此处原本正常的逻辑为:添加流动性,并将流动性代币存入pid为18的流动性抵押池,但是本函数在代码中并未检查添加的流动性token0、token1得到的流动性代币是否与pid对应的流动性代币地址一致,导致了攻击的发生。注意,并不是所有的流动性池抵押都有该风险,由于第2524行代码,pool的ticket需要为零地址才能够通过该检查。

但是攻击者通过控制执行逻辑,实际执行的逻辑为:第2505,2506行将攻击者指定的1枚UGT、1枚UBT代币转入ParaProxy合约。然后在第2535行代码用于添加流动性,并在第2537行检查添加的流动性代币数量。

此时,vars.oldBalance为初始流动性代币数量。攻击者为了通过第2537行的检查,在添加流动性的过程中,进行了重入攻击。由于在添加流动性时调用了攻击者构造的恶意代币的transferFrom函数,攻击者在transferFrom函数中才将流动性通过deposit函数存入ParaProxy合约。这也是第2步时攻击合约将流动性代币接收地址指定为UBT合约的原因所在。

在重入过程中,UBT合约存入了真正的LP代币222枚,并计入ParaProxy的账本中。在重入完成后,ParaProxy合约地址新增了222枚LP代币,ParaProxy合约将其视为攻击合约添加的LP,并计入账本中。至此,UBT合约和攻击合约都新增了222枚LP的存取记录。

图3ParaImpl合约相关代码

重入相关过程如下图所示:

图4攻击流程示意图

5.UBT合约和攻击合约分别调用withdraw函数,从ParaProxy合约提取221枚LP,并归集到攻击合约,由攻击合约将LP移除流动性并获取对应的BSC-USD以及BUSD

6.归还闪电贷225枚BSC-USD,225枚BUSD,并将获利的221枚BSC-USD、225枚BUSD发送到攻击者地址。整个攻击交易执行完成。

#2总结建议

攻击者一共执行了约40次攻击,共获利约170万美元。截止发稿时,攻击者通过跨链协议将其转到以太坊网络中,并将其中的660枚ETH转入Tornado.Cash,另外5枚ETH转入了0xDd52CE617cAF1b7C8cEaCC111DE2f1c54E20C1b0地址。

本次攻击主要由合约代码中存在逻辑缺陷以及存在资金操作的关键函数未进行防重入导致。建议合约开发者在开发过程中进行完整的测试以及第三方审计,并养成使用Openzeppelin库的ReentrancyGuard合约来进行重入攻击的防范。

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

大币网

中币ESG:科普 | 区块链如何优化ESG的流程?_DEF

2022年2月22日,万向区块链推出智能楼宇碳足迹监测系统——“万碳居”,“万碳居”不仅能够可视化实时监测楼宇碳排放数据,帮助政府和企业立足精准可信的碳排数据,规划双碳路径.

[0:15ms0-4:655ms