JulSwap闪电贷攻击分析

创宇区块链安全实验室
创宇区块链安全实验室 机构得得号

2021年05月31日 专注构建区块链安全生态,致力于让人类进入安全的区块链世界。

摘要: 5 月 28 日, BSC 链上 DEX 协议、自动化的流动性协议的 JulSwap 遭到闪电贷攻击。

事件起因

2021 年 5 月 28 日,有消息称 BSC 链上 DEX 协议、自动化的流动性协议的 JulSwap 遭到闪电贷攻击,知道创宇区块链安全实验室 第一时间展开分析并将攻击结果简讯分享给大家,供参考研究。

事件分析

攻击者交易:
https://bscscan.com/tx/0x1751268e620767ff117c5c280e9214389b7c1961c42e77fc704fd88e22f4f77a
攻击合约地址:
0x7c591aab9429af81287951872595a17d5837ce03 

1. 通过交易记录可以看出攻击者通过闪电贷借到70000个 JULB 代币,然后调用 JULB-WBNB 的交易对进行兑换得到1400个 BNB,这时攻击合约中就有了1400个 WBNB。
2. 随后攻击合约调用JulProtocolV2合约(0x41a2F9AB325577f92e8653853c12823b35fb35c4)的 addBNB 函数进行抵押挖矿。该函数的功能就是通过转入 WBNB,合约会计算出相应需要多少 JULB 代币进行添加流动性挖矿,随后会记录转入的 WBNB 的数量用于抵押挖矿,函数代码如下所示。

3.由于闪电贷兑换了 WBNB,所以 JulProtocolV2 合约错误的计算出了14.4w个 JULB 代币能与515个 WBNB 去交易对中添加流动性,并把 lp 代币转入了 JulProtocolV2 合约。此时攻击合约还剩下885个 WBNB。
4.攻击者再用剩下的 WBNB 兑换为 JULB,由于 pair 中添加了大量的 JULB 代币的流动性,所以在兑换时只需要363个 WBNB 就可以兑换出7w个 JULB 代币用于还贷,合约还剩下885-363=522个 WBNB,最后把这些 WBNB 转入钱包地址,攻击者就完成了一次闪电贷套利。

事件后续

JULBSWAP 的 CEO 在 twitter 中发推文称此次事件由于闪电贷造成的兑换套利,官方将在后续更换新的版本并尝试开始回购 JULB 代币用于补偿用户。后续事件如果有新进展,实验室将会持续跟进,同时我们提醒各大项目方在 defi 项目中一定要做好代码审计测试,特别是在一些原有功能需求的更改上一定要做好数据测试和安全控制。



作者:创宇区块链安全实验室;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章内容问题,请发送至邮箱:linggeqi@chaindd.com

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 创宇区块链安全实验室 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信