零时科技 | Discover 闪电贷攻击事件分析

此次攻击事件主要通过闪电贷资金控制价格,导致兑换数量波动,对于此类安全事件,建议不要使用外部可控的资金数量来获取价格......

get.jpg

0x1 事件背景

零时科技区块链安全情报平台监控到消息,北京时间 2022年6月6日 Binance 链上 Discover 智能合约遭到闪电贷攻击。零时科技安全团队及时对此安全事件进行分析。

0x2 攻击者信息

  • 攻击者钱包:

0x446247bb10B77D1BCa4D4A396E014526D1ABA277

  • 攻击者合约:

0x06b912354b167848a4a608a56bc26c680dad3d79

0xfa9c2157cf3d8cbfd54f6bef7388fbcd7dc90bd6

  • 攻击交易:

0x8a33a1f8c7af372a9c81ede9e442114f0aabb537e5c3a22c0fd7231c4820f1e9

0x1dd4989052f69cd388f4dfbeb1690a3f3a323ebb73df816e5ef2466dc98fa4a4

  • ETHpledge合约:

0xe732a7bD6706CBD6834B300D7c56a8D2096723A7

0x3 攻击分析

攻击者主要的攻击交易流程:

  1. 通过PancakeSwap闪电贷分别借款 2100枚 USD 和 19810 枚 USD。
  2. 将 2000 枚 USD 转移至 ETHpledge 合约0xe732a。ETHpledge 合约返回 62,536 枚 Discover。
  3. 将 19,810 枚 USD 归还闪电贷至 BSC-USD-Discover。
  4. 将 62,536 枚 Discover 换取USD,获得 16,336 枚 USD。
  5. 归还 2,100 枚 闪电贷借款,将剩余的 USD 兑换为 BNB,获利离场。

0x4 漏洞细节

ETHpledge.team

ETHpledge.pledgein方法作用是,调用者转入USDT资金后收到一定比例的Discover代币,这里转入USDT资金在pledgein方法执行,接收Discover代币的逻辑在ETHpledge.team方法实现,获取价格逻辑在ETHpledge.getprice方法实现。

漏洞解析

攻击者调用ETHpledge.pledgein方法之前通过闪电贷借到大量USDT资金,使得 usdt.balanceOf 资金变少,之后调用ETHpledge.pledgein方法将少量USDT转入,随后调用ETHpledge.getprice方法获取价格,由于usdt.balanceOf 减少,所以_price变小,_swapprice变小,最终转账数量的curTamount变量增大。从而兑换的Discover代币数量增加。

在兑换了大量Discover代币后,攻击者随后迅速归还了数量较多的一笔USDT闪电贷借款。随后使用Discover代币正常兑换出较多的USDT。

0x5 资金流向

目前黑客已将获利的 49 枚 BNB 转移至 Tornado.Cash混币平台。

0x6 总结

此次攻击事件主要通过闪电贷资金控制价格,导致兑换数量波动,对于此类安全事件,建议不要使用外部可控的资金数量来获取价格,避免闪电贷攻击影响官方及用户资产,此外合约上线前应进行全面安全审计,将可能发生的安全风险规避掉。

点赞 0
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
零时科技
零时科技
0xbD0b...A354
专注区块链生态安全