一张支票提款两次的作案手法,你一定不陌生!Paraluni 被攻击事件分析

CertiK
企业专栏
热度: 21008

Paraluni's MasterChef 合约遭到攻击,大约170万美元的资金通过多笔交易从该项目中被盗。

分析

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

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

 

漏洞交易

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

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


合约地址

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

 

攻击流程

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

 

准备阶段:

  • 攻击者部署了两个恶意的代币合约UGT和UBT。
  • 在UBT代币合约中,有两个恶意的函数实现:

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

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


攻击阶段:

  • 攻击者利用闪电贷获得了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项目预警推特【https://twitter.com/CertiKAlert】进行了播报。

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

声明:本文为入驻“MarsBit 专栏”作者作品,不代表MarsBit官方立场。
转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。
提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。
免责声明:本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况,及遵守所在国家和地区的相关法律法规。