1. 首页
  2. 区块链资讯

以小博大 简析SushiSwap攻击事件始末

2020 年 11 月 30 日,据慢雾区情报,以太坊 AMM 代币兑换协议 Sushi Swap 遭遇攻击,损失约 1.5 万美元。慢雾平安团队第一时间介入剖析,并以简讯的形式分享,供人人参考。

靠山提要

Sushi Swap 项目中 Sushi Maker 合约的作用是用于存放 Sushi Swap 中每个买卖对发生的手续费。其中手续费会以 SLP (流动性证实) 的形式存放在合约中。Sushi Maker 合约中有一个 convert 函数,用于将从每一个买卖对中网络的手续费通过挪用各自买卖对的 burn 函数获得对应的代币,然后将这些代币转换成 sushi 代币,添加到 Sushi Bar 合约中,为 Sushi Bar 中抵押 sushi 代币的用户增添收益,而此次的问题就出在 Sushi Maker 合约。

攻击流程

1、攻击者选中 Sushi Swap 中的一个买卖对,如 USDT/WETH,然后添加流动性获得对应的 SLP (USDT/WETH 流动性证实,以下简称 SLP),使用获得的 SLP 和另外的少量 WETH 建立一个新的 Sushi Swap 买卖对,然后获得新代币池的 SLP1 (WETH/SLP(USDT/WETH) 流动性证实,以下简称 SLP1)转入  Sushi Maker 合约中。

2、挪用 Sushi Swap 的 convert 函数,传入的 token0 为第一步获得的 SLP,token1 为 WETH。挪用 convert 函数后,Sushi Maker 合约会挪用 token0 和 token1 组成的代币池的 burn 函数燃烧 SLP1,燃烧掉攻击者在第一步中打入 Sushi Maker 合约中的 SLP1,获得 WETH 和 SLP。

以小博大 简析SushiSwap攻击事件始末

晚间必读5篇 | Eth2拉开序幕 为何显卡大户却在加码挖矿?

晚间推荐阅读:1.外汇市场融合数字资产会是一种新趋势吗?2.合规化或带来新一轮加密货币交易所“行业洗牌”?3.Eth2拉开序幕 为何显卡大户却在加码挖矿?

3、 Sushi Maker 合约的 convert 函数紧接着会挪用内部的 _toWETH 函数将 burn 获得的代币转换成 WETH,由于在第二步 Sushi Maker 合约通过 burn 获得了 SLP 和 WETH。其中 WETH 无需转换,只需转换 SLP。此时,转换将会通过挪用 SLP/WETH 买卖对举行转换,也就是攻击者在第一步建立的买卖对。由于 Sushi Maker 合约在转换时会将所有的 balanceOf (token0) 转换成 WETH,这里传入的 token0 为 SLP,于是合约将合约中所有的 SLP 通过 SLP / WETH 买卖对举行兑换 (兑换的 SLP 包罗 USDT/WETH 买卖对每次 swap 发生的收益和在第二步合约通过 burn 函数获得的 SLP )。而 SLP / WETH 代币池是攻击者建立的,攻击者只需在初始化的时刻添加少量的 WETH,就可以在 Sushi Maker 买卖对举行兑换的历程中,用少量的 WETH 换取 Sushi Maker 合约中对应买卖对的所有的 SLP。

以小博大 简析SushiSwap攻击事件始末

4、攻击者使用 burn 函数在 SLP/WETH 买卖对中燃烧掉自己的 SLP1, 拿到大量的 SLP 和小量的 WETH,并继续对其他流动性池重复该历程,连续赢利。

总结

攻击者使用 SLP 和 WETH 建立一个新的代币池,使用新代币池的 SLP1 在 Sushi Maker 中举行 convert,使用少量的 SLP 将 Sushi Maker 合约中的所有 SLP 转到自己建立的代币池中,即将对应买卖对一段时间内的所有手续费收入囊中。并对其他买卖对重复这个历程,连续赢利。

By :  yudan@慢雾平安团队

原创文章,作者:链大大,如若转载,请注明出处:http://www.chaindada.com/chain/26630.html