1.前言
北京时间2022年03月13日,知道创宇区块链安全实验室监测到BSC上Paraluni项目遭到攻击,黑客获利约170万美金。知道创宇区块链安全实验室将对本次事件深入跟踪并进行分析。
2.分析
2.1基础信息
攻击者地址:0x94bc1d555e63eea23fe7fdbf937ef3f9ac5fcf8f
攻击者合约:0x4770b5cb9d51ecb7ad5b14f0d4f2cee8e5563645
攻击交易哈希:0x70f367b9420ac2654a5223cc311c7f9c361736a39fd4e7dff9ed1b85bab7ad54
ParallelChain Lab获GEM Digital 5000万美元投资:金色财经报道,数字资产投资公司GEM Digital Limited 已向Layer-1协议开发项目ParallelChain Labs投资了5000万美元,ParallelChain 是一个多合一的去中心化区块链,可处理企业级和零售级用例,旗下有两个可扩展Layer 1平台,分别是公共主网和专用网络。本次投资后,ParallelChain Lab将加速推动公共主网开发并部署权益证明共识机制,是一个跨公共区块链应用程序的隐私、合规性和可扩展性需求解决方案,可以缩小 DeFi 和 CeFi 之间的差距。(bitcoinist)[2022/9/24 7:18:57]
Masterchef合约:0xa386f30853a7eb7e6a25ec8389337a5c6973421d
社交名流、女商人Paris Hilton邀请比尔·盖茨参加她的播客向观众解释NFT:社交名流、女商人Paris Hilton在推特上表示,比尔·盖茨是时候出现在她的播客上,以便他们“轮流解释事情”。本月早些时候,Paris Hilton出现在“今夜秀”中,期间她与主持人Jimmy Fallon谈到了NFT。Hilton为该术语提供了一个高度技术性的定义:基于区块链的数字合约,允许其发行人出售艺术、音乐和体验。她还建议Fallon应该将他的一个笑话作为NFT出售。 该片段在Twitter上疯传,加密货币社区的成员将Fallon在2021年解释NFT与比尔·盖茨在1995年向David Letterman解释互联网进行了比较,当时只有14%的美国成年人可以访问万维网。(U Today)[2021/8/29 22:44:49]
UBT代币合约:0xca2ca459ec6e4f58ad88aeb7285d2e41747b9134
Paragon Coin案被告缺席判决:金色财经报道,参与了2017年Paragon Coin代币销售的投资者希望拿回他们的钱,但找不到该项目背后的名人夫妇。原告律师Donald Enright表示,代表被告的律师已经不再担任他们的律师,且被告人“不履行责任”,因为他们没有出庭并对指控做出回应。根据美国证券交易委员会(SEC)的诉讼文件,Paragon在代币销售期间筹集了大约1200万美元的数字资产。此前报道称,法官裁决该公司2017年的ICO行为违法。[2020/8/20]
UGT代币合约:0xbc5db89ce5ab8035a71c6cd1cd0f0721ad28b508
现场 | Park Hyojin:公共领域使用区块链技术会更有效率:金色财经现场报道,1月28日,managing director of SEJONG Telecom Inc. Park Hyojin在“区块链平昌论坛2019(Blockchain Pyeongchang Forum, BPF2019)”的圆桌论坛上就韩国的地区货币表示,虽然区块链技术可以用于很多领域,但是公共领域使用区块链技术会更有效率。他说,韩国的地区货币是为了活跃地区经济而发行的,截至2018年,韩国60多处自治体发行了总规模为3714亿韩元的地区货币。但是,他指出,现在的地区货币存在四大问题。第一是回转率不够,第二是非法兑换,第三是运营费用,最后是加盟店不够以及流通有问题。[2019/1/28]
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等操作都需要慎重考虑,合约审计、风控措施、应急计划等都有必要切实落实。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。