1.前言
北京时间2022年03月13日,知道创宇区块链安全实验室监测到BSC上Paraluni项目遭到攻击,黑客获利约170万美金。知道创宇区块链安全实验室将对本次事件深入跟踪并进行分析。
2.分析
2.1基础信息
攻击者地址:0x94bc1d555e63eea23fe7fdbf937ef3f9ac5fcf8f
攻击者合约:0x4770b5cb9d51ecb7ad5b14f0d4f2cee8e5563645
攻击交易哈希:0x70f367b9420ac2654a5223cc311c7f9c361736a39fd4e7dff9ed1b85bab7ad54
Masterchef合约:0xa386f30853a7eb7e6a25ec8389337a5c6973421d
Paradigm称SEC目前的框架不适合于加密货币:金色财经报道,加密货币投资公司Paradigm表示,目前SEC的披露框架 \"不适合 \"加密货币市场。美国证券交易委员会一直在监管的传统证券与加密货币资产之间的区别归结为技术。Paradigm指出,在比较股票和债券与加密货币时,有一个明显的区别。传统上,股票或债券的所有者在最初出售股票或债券的法律实体中拥有权益。Paradigm声称,加密货币的情况并非如此,其资产不与发行者的价值挂钩,因为它们独立存在。该文件概述了一个框架,将更好地监管加密货币市场。这包括承认 \"加密资产的运作、交易和结算的技术'栈'与证券交易的技术'栈'非常不同\"。任何监管也应该承认,加密货币 \"可以以与传统证券不同的方式累积价值\"。[2023/4/22 14:19:40]
UBT代币合约:0xca2ca459ec6e4f58ad88aeb7285d2e41747b9134
Bitpanda加入Visa Partner Connect计划:3月24日消息,奥地利金融科技独角兽Bitpanda加入Visa Partner Connect计划,这使得金融机构、银行和金融科技公司能够迅速向最终客户提供加密货币、股票/ETF、贵金属和大宗商品等资产类别的交易和投资服务。在这次合作之后,Bitpanda技术解决方案将开始扩大其在欧洲以外的投资基础设施。
此外,Bitpanda的基础设施被设置为一个模块化系统,通过单一API集成使合作伙伴能够从中选择,例如储蓄计划、资产到资产互换、加密货币质押、碎片化股票、完整的区块链服务等。 加密货币托管由受FCA监管的机构级托管提供商Bitpanda Custody提供。
目前其合作伙伴包括德国数字银行N26、法国货币应用程序Lydia、英国金融科技Plum和意大利开放银行提供商Fabrick等。(Finextra)[2023/3/24 13:24:03]
UGT代币合约:0xbc5db89ce5ab8035a71c6cd1cd0f0721ad28b508
区块链支付公司Partior完成由渣打银行牵头的A轮融资:金色财经报道,区块链支付技术公司Partior宣布完成A轮融资,本轮融资由渣打银行全资附属公司SCOHL领投,SCOHL同意按每股认购股份2.573美元认购于Partior的认购股份,总认购价为2333.28万美元,以收购Partior 25%股权。创始股东摩根大通、星展银行和淡马锡参投。交易金额尚未披露,正等待监管部门批准。这家新加坡初创公司正在开发基于区块链的银行间支付网络,并有望支持八种货币美元、新加坡元、英镑、欧元、澳元、日元、离岸人民币和港元。每家银行都负责网络上自己的节点,渣打银行将成为欧元结算银行之一。[2022/11/3 12:13:45]
2.2项目背景
Paraluni项目是新加坡ParallelUniverse基金会发布的一个基于币安智能链的匿名项目,用户可以通过与masterChef合约交互进行质押代币获取流动性收益。
纳斯达克上市公司CleanSpark购买22680台比特币矿机:金色财经报道,纳斯达克上市公司CleanSpark已签署合同购买22680台比特币矿机,以满足“迫切需求”并提高生产能力。该公司已从比特大陆购买了7200台Sj19 Pro蚂蚁矿机,并与另一家未透露名字的加密货币挖矿设备经销商签署了购买15,480台矿机的合同。[2021/4/16 20:24:46]
2.3攻击流程
为了使得攻击流程更加清晰,我们将本次攻击分为两个阶段进行分析。
预攻击阶段
1.攻击者创建部署两个代币合约UBT和UGT。UBT:改写transferFrom函数,实现对MasterChef的deposit()函数和withdrawAsset()函数的调用。UGT:ERC20代币标准的代币合约2.攻击者使用闪电贷从pancakeSwap借出156,984BSC-USD和157,210BUSD。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等操作都需要慎重考虑,合约审计、风控措施、应急计划等都有必要切实落实。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。