北京时间2022年3月13日上午9:04,CertiK安全技术团队监测到Paraluni's MasterChef 合约遭到攻击,大约170万美元的资金通过多笔交易从该项目中被盗。
下文CertiK安全团队将从该项目的操作及合约等方面为大家详细解读并分析。
漏洞交易
攻击者地址: https://bscscan.com/address/0x94bc1d555e63eea23fe7fdbf937ef3f9ac5fcf8f
交易实例: https://bscscan.com/tx/0x70f367b9420ac2654a5223cc311c7f9c361736a39fd4e7dff9ed1b85bab7ad54
LBank蓝贝壳于5月3日20:00首发 CSPR(Casper),开放USDT交易:据官方公告,5月3日20:00,LBank蓝贝壳上线 CSPR(Casper),开放USDT交易,同时并开放充值,资料显示,Casper网络是基于CasperCBC规范构建的第一个实时权益证明区块链。Casper旨在加速当今企业和开发人员对区块链技术的采用,同时确保随着网络参与者需求的发展,其在未来仍能保持高性能。[2021/5/3 21:19:51]
合约地址
Masterchef合约: https://bscscan.com/address/0xa386f30853a7eb7e6a25ec8389337a5c6973421d#code
攻击流程
注意,这个攻击流程是以下面这个交易为基础的:https://bscscan.com/tx/0x70f367b9420ac2654a5223cc311c7f9c361736a39fd4e7dff9ed1b85bab7ad54
首发 | imKey正式支持Filecoin,成为首批Filecoin硬件钱包:12月1日,随着imToken2.7.2版本上线,imKey同步支持Filecoin,成为业内首批正式支持FIL的硬件钱包。Filecoin作为imKey多链支持的优先级项目之一,成为继BTC、ETH、EOS和COSMOS四条公链后的第五条公链。
据悉,imKey团队已在Q4全面启动多链支持计划,计划实现imToken已经支持的所有公链项目,本次imKey升级更新,无需更换硬件,不涉及固件升级,通过应用(Applet)自动升级,即可实现imKey对Filecoin的支持及FIL的代币管理。[2020/12/2 22:52:32]
准备阶段:
攻击者部署了两个恶意的代币合约UGT和UBT。
在UBT代币合约中,有两个恶意的函数实现:
金色首发 EOS超级节点竞选投票率达6.49%:金色财经数据播报,截止北京时间6月13日15:50,EOS投票率达6.49%。EOS引力区和EOS佳能作为两个来自中国的超级节点竞选团队暂居第五和第六名。其中EOS引力区的得票总数为903万,占比2.96%;EOS佳能的得票总数为877万,占比2.87%。此前异军突起的EOSflytomars暂居第17位,得票总数为630万,占比2.07%。目前跻身前30名的超级节点竞选团队中,有八个团队来自中国。[2018/6/13]
1. 在 "transferFrom() "函数中,攻击者实现了对MasterChef的 "deposit() "函数的调用,以存入LP代币。
2. 一个 "withdrawAsset() "函数,将调用Masterchef的 "withdraw() "来提取存入的LP代币。
IMEOS首发 EOS Go公布新增两条复选条件 :据金色财经合作伙伴IMEOS报道:今日,EOS Go在 steemit上公布新增的两条复选条件为:
1. 保证安全的计划:候选节点是否在steemit上发布文章介绍该节点的安全方法和计划,“安全方法”标准是向EOS选民展示安全最佳实践知识和组织实施计划的机会;
2. 立场:描述该节点分享通胀奖励和/或向EOS代币持有人派发股息的立场(候选节点在steemit发布)。主要阐述以下两个问题:
该组织是否会出于任何原因向EOS令牌选民提供支付,包括BP选举和社区建议?
该组织是否有书面的无票付款政策?如果是这样,请提供一个链接。[2018/4/27]
攻击阶段:
攻击者利用闪电贷获得了156,984 BSC-USD和157,210 BUSD。
攻击者向ParaPair发送通过闪电贷获得的BSC-USD和BUSD代币,并收到155,935枚LP代币作为回报。
然后,攻击者调用 "depositByAddLiquidity() "函数,将LP代币存入资金池。
1. 在调用此函数时:输入参数“_pid ”为18,“_tokens ”为[UGT,UBT]。
2. 因为 depositByAddLiquidity() 会调用 “UBT.transferFrom()” 函数, 因此MasterChef.deposit() 函数会被触发并且向合约存入 155,935 LP 代币。
3. 因此, 155,935 LP 代币被存入了两次并且攻击者获得了两份“userInfo” 的记录 (一次是从 UBT, 另一次是从攻击者的合约)。
最后,攻击者提取了两次:
1. 第一次是通过函数“UBT.withdrawAsset()”。
2. 另一个是来自攻击者对 “Masterchef.withdraw() ”函数的调用。最后,攻击者删除了流动资金并返还了闪电贷。
合约漏洞分析
在函数`MasterChef.depositByAddLiquidity()`中,作为参数传入的`_tokens`可以与池中的编号为`_pid`的tokens不匹配。
`depositByAddLiquidity()`函数通过调用`addLiquidityInternal()`函数,触发了传入恶意代币(UBT)的“transferFrom”函数,进而导致了重入的问题。因此,同一份LP代币被存入两次。
资产去向
截至3月13日,总共有价值约170万美元的资产被盗。3000个BNB仍然在攻击者在BSC的地址中,235个ETHs则通过Birdge转移到以太坊,并通过Tornado进行洗白。
写在最后
该次事件可通过安全审计发现相关风险:审计可以发现重入问题和外部依赖问题。
同时,CertiK的安全专家建议:
时刻关注函数的外部输入,尽量避免传入合约地址作为参数。
关注外部调用,为所有可能出现重入危险的外部调用函数加上“nonReentrant”修饰函数。
本次事件的预警已于第一时间在CertiK项目预警推特
除此之外,CertiK官网已添加社群预警功能。在官网上,大家可以随时看到与漏洞、黑客袭击以及Rug Pull相关的各种社群预警信息。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。