2022年3月13日,成都链安链必应-区块链安全态势感知平台舆情监测显示,Paraluni合约遭受攻击,损失约170万美元,成都链安技术团队对此事件进行了相关分析。
#1总述
我们以第一笔攻击交易0xd0b4a1d4964cec578516bd3a2fcb6d46cadefe1fea5a2f18eec4c0a496e696f9为例:
地址列表
攻击地址:
0x94bC1d555E63eEA23fE7FDbf937ef3f9aC5fcF8F
攻击合约:
0x4770b5cb9d51EcB7AD5B14f0d4F2cEe8e5563645
ParaProxy:
何一:Binance上币逻辑尽量兼顾大部分用户需求,对Launchpad的项目方钱包和做市商账号有监控:6月4日消息,Binance 联合创始人何一在社交平台与社区探讨 Binance 上币标准时表示,Binance 上币不是某一个人说了算,在上币逻辑上尽量兼顾大部分用户需求,只是谣言和诋毁更有传播度,欢迎各位大 v 把今年上的所有项目,挨个拉出来做分析对比。
此外,针对个别币种上架 Binance 后表现不佳以及部分小币种暴涨暴跌现象,何一表示 Binance 对 Launchpad 的项目方钱包和做市商账号有监控,Launchpad 项目 Token 目前要求项目方 Token 多方托管,作为互相监督的一部分。[2023/6/4 21:14:50]
0x633Fa755a83B015cCcDc451F82C57EA0Bd32b4B4
成都链安:ApolloX 项目方因签名系统缺陷被攻击,损失约160万美元:金色财经消息,据成都链安“链必应-区块链安全态势感知平台”安全舆情监控数据显示,ApolloX 项目遭受攻击,根据成都链安技术团队分析,发现ApolloX签名系统存在缺陷,攻击者利用签名系统缺陷生成了255个签名,总共从合约中提取了53,946,802$APX,价值约160万美元,目前被盗金额通过跨链已打入以太坊0x9e532b19abd155ae5ced76ca2a206a732c68f261地址。此前,ApolloX代币APX在今日19:00左右从0.054美元快速跌至0.019美元,闪跌约60%。[2022/6/9 4:11:35]
ParaImpl:
0xA386F30853A7EB7E6A25eC8389337a5C6973421D(MasterChef)
CVN项目方声称从未参与人人影视字幕组的产品运营等实际业务:CVN意识价值网络发微博称,近日因人人影视涉嫌版权问题被查处的信息在社区不断散布,为避免媒体朋友与投资人产生疑惑,现CVN基金会作出如下声明:
1. CVNT项目方于2018年9月在海外注册了非证券属性的基金会用于整个项目的独立运营管理经营,发起的主要愿景便是解决内容版权问题。
2. CVNT项目方自立项以来从未参与人人影视字幕组的产品运营、内容分发、硬盘售卖、服务器管理等实际业务。
3. 人人影视作为国内最早最具影响力的公益字幕翻译组织,发生如此情况,CVN基金会深表遗憾,在国内海外文娱内容普及的大时代背景下,人人字幕组的消逝是一种遗憾。但时代是在变革与进步的,面对版权问题我们将会通过技术革新为社会提供支持,将人人以往的分享延续下去,版权是对内容生产者的尊重,从根本上保护版权利益也是我们的使命与职责。
4. 本公告为媒体和投资人清晰地陈述客观事实,避免不必要、不属实的内容传播。如有媒体或个人散播不实言论,本基金会将追究其法律责任。[2021/2/3 18:48:33]
UGT:
行情 | 大量以太坊项目方选择抛售 数量超往常近4倍:今日根据令牌大师微博分享图片称,以太坊近期持续下跌,大量项目方因此选择抛售ETH。据统计8月27日至9月3日的这一周,已经抛售了将近进16万个ETH,而在此前平均每周也只维持在近4万左右,增长了近4倍。[2018/9/12]
0xbc5db89CE5AB8035A71c6Cd1cd0F0721aD28B508
UBT
0xcA2ca459Ec6E4F58AD88AEb7285D2e41747b9134
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合约来进行重入攻击的防范。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。