北京时间2022年3月13日上午9:04,CertiK安全技术团队监测到Paraluni'sMasterChef合约遭到攻击,大约170万美元的资金通过多笔交易从该项目中被盗。
下文CertiK安全团队将从该项目的操作及合约等方面为大家详细解读并分析。
漏洞交易
攻击者地址:https://bscscan.com/address/0x94bc1d555e63eea23fe7fdbf937ef3f9ac5fcf8f
交易实例:https://bscscan.com/tx/0x70f367b9420ac2654a5223cc311c7f9c361736a39fd4e7dff9ed1b85bab7ad54
比特币矿企CleanSpark 7月开采575枚比特币:金色财经报道,比特币矿企CleanSpark,Inc.发布了截至2023年7月31日的月份未经审计的比特币挖矿和运营更新。7月份开采的比特币575枚,2023年至今开采的比特币4,070枚,截至7月31日的BTC总持有量1,061枚。
7月份售出43枚BTC,部署矿机87,936台,当前算力9.0EH/s。该公司于2023年7月出售了43枚比特币,平均每枚比特币价格约为29,300美元。BTC的销售收入约为130万美元。7月份每日开采的BTC平均为18.6枚,最高达到21.1枚。[2023/8/2 16:14:31]
合约地址
Masterchef合约:https://bscscan.com/address/0xa386f30853a7eb7e6a25ec8389337a5c6973421d#code
Consensys发布ETHCC和ETHGlobal Paris关于Web3未来的5大要点:金色财经报道,Consensys团队总结了从ETHCC和 ETHGlobal Paris收集到的关于web3未来的5个最关键的要点:1. Layer 2 继续扩展以太坊作为关键基础设施;2. web3 中的社交媒体正在成熟并获得关注;3. 账户抽象将通过改善用户体验吸引大量用户;4. 早该将重点从基础设施转向应用程序开发;5. 互操作性至关重要,协议必须相互支持且兼容。
该团队表示,以太坊的未来是光明的,ETHCC 和 ETHGlobal的活动和公告凸显了几个重要的增长领域,包括通过 Layer 2 解决方案持续扩展以太坊。以 Lens V2 公告??为例,去中心化社交网络的成熟和吸引力也表明了网络开放和去中心化社交层的进展,以及其他值得注意的技术发展。[2023/7/28 16:03:10]
攻击流程
Parallel-Heiko赢得Kusama平行链#10卡槽竞拍:10月6日消息,Parallel-Heiko赢得Kusama平行链#10卡槽竞拍,总筹集202793个KSM,10472人参与。官方将会为在Crowdloan期间为Parallel和Heiko社区提供帮助的社区成员给予奖励。据悉,在获得卡槽后,团队将会开启一些功能的执行、测试和上线,在完成这些功能上线后,将会很快开启Crowdloan奖励的释放。在官方Referral推出之前的contribution(<10K KSM),都将会被分配5%的奖励作为早鸟奖励。在硬顶200K KSM后贡献的KSM,官方也将会按照同样的奖励比例给予大家奖励,比例仍然为1 KSM=200 HKO。[2021/10/6 20:09:11]
注意,这个攻击流程是以下面这个交易为基础的:https://bscscan.com/tx/0x70f367b9420ac2654a5223cc311c7f9c361736a39fd4e7dff9ed1b85bab7ad54
DeFi项目Yield宣布完成1000万美元融资,Paradigm领投:DeFi项目Yield今日宣布完成1000万美元融资,Paradigm领投,Framework Ventures、Symbolic Capital Partners、CMS Holdings、Variant和DeFi Alliance参投。(Decrypt)[2021/6/23 0:01:16]
准备阶段:
攻击者部署了两个恶意的代币合约UGT和UBT。
在UBT代币合约中,有两个恶意的函数实现:
1.在"transferFrom()"函数中,攻击者实现了对MasterChef的"deposit()"函数的调用,以存入LP代币。
2.一个"withdrawAsset()"函数,将调用Masterchef的"withdraw()"来提取存入的LP代币。
攻击阶段:
攻击者利用闪电贷获得了156,984BSC-USD和157,210BUSD。
攻击者向ParaPair发送通过闪电贷获得的BSC-USD和BUSD代币,并收到155,935枚LP代币作为回报。
然后,攻击者调用"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相关的各种社群预警信息。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。