Paraluni被攻击事件分析:一张支票提款两次的作案-ODAILY_QUO:Quontral

北京时间2022年3月13日上午9:04,CertiK安全技术团队监测到Paraluni'sMasterChef合约遭到攻击,大约170万美元的资金通过多笔交易从该项目中被盗。

下文CertiK安全团队将从该项目的操作及合约等方面为大家详细解读并分析。

漏洞交易

攻击者地址:https://bscscan.com/address/0x94bc1d555e63eea23fe7fdbf937ef3f9ac5fcf8f

交易实例:https://bscscan.com/tx/0x70f367b9420ac2654a5223cc311c7f9c361736a39fd4e7dff9ed1b85bab7ad54

Henley&Partners发布加密友好指数,新加坡、瑞士、阿联酋排名前三:9月6日消息,全球居留权和公民身份顾问公司Henley & Partners发布加密财富报告,报告中设计了一项加密友好指数,共有6个维度,包括公众使用率、基础设施使用率、创新和技术、合规环境、经济指数、税收友好性。

其中前三名为新加坡、瑞士、阿联酋,最后三名为纳米比亚、黑山、土耳其。[2023/9/6 13:20:49]

合约地址

Masterchef合约:https://bscscan.com/address/0xa386f30853a7eb7e6a25ec8389337a5c6973421d#code

攻击流程

注意,这个攻击流程是以下面这个交易为基础的:https://bscscan.com/tx/0x70f367b9420ac2654a5223cc311c7f9c361736a39fd4e7dff9ed1b85bab7ad54

ParaSpace已暂停12笔Azuki抵押清算,债务金额接近46万美元:7月3日消息,据官方平台页面显示,NFT借贷协议ParaSpace目前已暂停12笔Azuki相关抵押借贷的清算,全部债务金额接近46万美元。[2023/7/4 22:15:57]

准备阶段:

攻击者部署了两个恶意的代币合约UGT和UBT。

在UBT代币合约中,有两个恶意的函数实现:

1.在"transferFrom()"函数中,攻击者实现了对MasterChef的"deposit()"函数的调用,以存入LP代币。

2.一个"withdrawAsset()"函数,将调用Masterchef的"withdraw()"来提取存入的LP代币。

体育竞赛平台dotmoovs融资84万美元,Spark Digital Capital等参投:dotmoovs宣布获得84万美元投资,Moonrock Capital、Morningstar Ventures、Spark Digital Capital、Ascensive Assets、Rarestone、Building Blocks、AU21、GBV Capital参投。

据悉,dotmoovs是基于区块链和AI系统的点对点(P2P)竞赛平台,用于分析运动员进行体育挑战的视频。[2021/5/13 21:58:01]

攻击阶段:

攻击者利用闪电贷获得了156,984BSC-USD和157,210BUSD。

攻击者向ParaPair发送通过闪电贷获得的BSC-USD和BUSD代币,并收到155,935枚LP代币作为回报。

Miller Value Partners投资组合经理:加密货币空间目前还处于起步阶段:据彭博社消息,Miller Value Partners的一名投资组合经理John Spallanzani表示,加密货币空间目前还处于起步阶段。他列举了最近两周涨势的一系列原因,一是投资者因纳税而卖出加密货币的结束,二是乐观主义的人认为美国监管机构将努力制定可以使加密货币蓬勃发展的指导方针。[2018/4/24]

然后,攻击者调用"depositByAddLiquidity()"函数,将LP代币存入资金池。

1.在调用此函数时:输入参数“_pid”为18,“_tokens”为。

2.因为depositByAddLiquidity()会调用“UBT.transferFrom()”函数,因此MasterChef.deposit()函数会被触发并且向合约存入155,935LP代币。

3.因此,155,935LP代币被存入了两次并且攻击者获得了两份“userInfo”的记录(一次是从UBT,另一次是从攻击者的合约)。

最后,攻击者提取了两次:

1.第一次是通过函数“UBT.withdrawAsset()”。

2.另一个是来自攻击者对“Masterchef.withdraw()”函数的调用。最后,攻击者删除了流动资金并返还了闪电贷。

合约漏洞分析

在函数`MasterChef.depositByAddLiquidity()`中,作为参数传入的`_tokens`可以与池中的编号为`_pid`的tokens不匹配。

`depositByAddLiquidity()`函数通过调用`addLiquidityInternal()`函数,触发了传入恶意代币的“transferFrom”函数,进而导致了重入的问题。因此,同一份LP代币被存入两次。

资产去向

截至3月13日,总共有价值约170万美元的资产被盗。3000个BNB仍然在攻击者在BSC的地址中,235个ETHs则通过Birdge转移到以太坊,并通过Tornado进行洗白。

写在最后

该次事件可通过安全审计发现相关风险:审计可以发现重入问题和外部依赖问题。

同时,CertiK的安全专家建议:

时刻关注函数的外部输入,尽量避免传入合约地址作为参数。

关注外部调用,为所有可能出现重入危险的外部调用函数加上“nonReentrant”修饰函数。

本次事件的预警已于第一时间在CertiK项目预警推特进行了播报。

除此之外,CertiK官网https://www.certik.com/已添加社群预警功能。在官网上,大家可以随时看到与漏洞、黑客袭击以及RugPull相关的各种社群预警信息。

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

金宝趣谈

[0:15ms0-4:772ms