1.前言
北京时间2022年03月13日,知道创宇区块链安全实验室监测到BSC上Paraluni项目遭到攻击,黑客获利约170万美金。知道创宇区块链安全实验室将对本次事件深入跟踪并进行分析。
2.分析
2.1基础信息
攻击者地址:0x94bc1d555e63eea23fe7fdbf937ef3f9ac5fcf8f
攻击者合约:0x4770b5cb9d51ecb7ad5b14f0d4f2cee8e5563645
攻击交易哈希:0x70f367b9420ac2654a5223cc311c7f9c361736a39fd4e7dff9ed1b85bab7ad54
Paradigm 提出新代币发行机制VRGDAs:NFT 销售价格随需求变化而波动:8月25日消息,Paradigm 发布新文章《Variable Rate GDAs》,称提出了一种新颖的代币(NFT)发行机制,可变利率GDAs(VRGDAs),为Art Gobblers设计的,并在0xMonaco中使用,,当销售需求旺盛时提高价格,当销售需求不足时降低价格,VRGDAs提供了一种使用几乎任何你想要的时间来发行NFT的方法,同时仍然允许用户在任何时候无缝购买。[2022/8/25 12:46:57]
Masterchef合约:0xa386f30853a7eb7e6a25ec8389337a5c6973421d
美国弗吉尼亚养老基金宣布对Parataxis Capital加密基金投资3500万美元:金色财经报道,管理68亿美元的美国弗吉尼亚养老基金宣布对Parataxis Capital的数字收益基金(digital yield fund)投资3500万美元。截止目前,该养老金已投资两个加密收益基金,总额达7000万美元
此前报道,美国弗吉尼亚养老基金宣布对VanEck的新金融收益基金(new finance income fund )投资3500万美元。(thecoinrepublic)[2022/8/6 12:06:22]
UBT代币合约:0xca2ca459ec6e4f58ad88aeb7285d2e41747b9134
Paradigm提出渐进式荷兰式拍卖机制,可将销售分解为一系列荷兰式拍卖:4月5日消息,加密风投机构Paradigm撰文提出渐进式荷兰式拍卖机制(GDA ),工作原理是将销售分解为一系列荷兰式拍卖——一种从高要价开始的拍卖,然后逐渐降低,直到买家出价。GDA 允许用户以节省 gas 费的方式一次购买多个此类拍卖。
Paradigm认为,这是出售没有流动市场的可替代和不可替代代币的有效机制,并举例称,假如 Alice 想要出售 10,000 个 NFT 的集合。她不确定合理价格是多少,可能会选择在一次荷兰式拍卖中将它们全部出售——从高要价开始,然后逐渐降低,直到所有 NFT 都被售出。然而,这样的拍卖可能不是最理想的:买家可能没有足够的兴趣同时购买所有作品。
相反,Alice 可以通过 GDA 一次拍卖一个 NFT。例如,她可能会每分钟为她收藏的一件新作品发起一次新的荷兰式拍卖。这将使市场有更多时间为她的艺术品找到合理的价格。(paradigm)[2022/4/5 14:04:51]
UGT代币合约:0xbc5db89ce5ab8035a71c6cd1cd0f0721ad28b508
上市公司Cleanspark以1940万美元收购比特币矿企ATL Data Centers:总部位于内华达州的上市公司Cleanspark Inc.近期宣布,它将以1940万美元收购美国比特币矿企ATL Data Centers,交易将以股票形式彻底结算。Cleanspark专门从事微电网能源软件。该公司声称,它可以在ATL设施中使用这项技术来节省能源,扩大总发电能力,并减少温室气体排放。
根据一份新闻声明,Cleanspark打算将ATL运营的ASIC比特币矿机数量增加到原来的四倍。到2021年4月,该公司将为该设施再增加30兆瓦的电力,使总容量达到50兆瓦。ATL目前有3471台比特币矿机,其哈希率为190 PH/s。当新矿机全部安装完毕后,Cleanspark预计该设施将把比特币算力提高到0.9至1.4 EH/s。(Bitcoin.com)[2020/12/12 14:59:46]
2.2项目背景
Paraluni项目是新加坡ParallelUniverse基金会发布的一个基于币安智能链的匿名项目,用户可以通过与masterChef合约交互进行质押代币获取流动性收益。
2.3攻击流程
为了使得攻击流程更加清晰,我们将本次攻击分为两个阶段进行分析。
USDT和BUSD向对应的ParaPair添加流动性,获得155,935枚ParaluniLP代币到UBT合约中。此时获取的Lp代币为后续的攻击提供重要支持。
核心攻击阶段
1.调用MasterChef合约中的depositByAddLiquidity函数,传入参数为_pid:18,_token:,_amounts:,表示向18号池子添加1个UGT和1个UBT的流动性。?
2.然后内部调用depositByAddLiquidityInternal函数,该函数的主要作用是调用addLiquidityInternal函数去铸造LP代币,然后调用_deposit函数存入LP代币到用户地址。但是函数并未校验用户传入的_tokens和池子编号为_pid的tokens是否匹配,这就造成攻击者能够利用自己创建部署的恶意代币进行后面重要操作。
3.depositByAddLiquidityInternal再内部调用addLiquidityInternal函数,该函数通过合约中LP代币余额变化计算出需要deposit的数量。
4.其中当addLiquidityInternal函数调用到paraRouter.addLiquidity时,会调用攻击者在预攻击阶段部署的UBT代币合约中的transferFrom函数完成添加流动性操作。
但该恶意合约改写transferFrom后会调用MasterChef的deposit()函数将预攻击阶段第三步获取的LP代币转入masterChef中,此时的masterChef中LP余额已经变化,然后会调用_deposit函数存入LP代币到用户地址,此时获取第一份LP代币。
然后加上恶意合约的transferFrom调用deposit()时也会调用_deposit函数存入LP代币到用户地址,就相当于获取了两份LP代币。
5.攻击者分别调用UBT合约中的withdrawAsset函数和利用攻击合约调用Mastechef合约中的withdraw函数提取两份相同的LP到攻击合约中;
6.最后移除流动性获取31万枚BSC-USD和31万枚BUSD,然后归还闪电贷完成攻击。
3.漏洞核心
本次的攻击主要是MasterCheif合约中的depositByAddLiquidity函数并未校验用户传入的_tokens和池子编号为_pid的tokens是否一致,且外部调用时并未考虑到重入问题添加重入锁,最终导致攻击者能够传入外部恶意代币合约进行重入攻击。
4.总结
知道创宇区块链安全实验室在此提醒,任何有关deposit等操作都需要慎重考虑,合约审计、风控措施、应急计划等都有必要切实落实。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。