币久网-虚拟货币交易,BTC比特币价格,数字资产交易

币久网

慢雾:简析 SushiSwap 第二次被攻击始末

背景

2021 年 1 月 27 日,据慢雾区情报,SushiSwap 第三遭遇攻击,此次问题为 DIGG-W比特币 买卖对的手续费被攻击者通过特殊的方法薅走。慢雾安全团队在收到情报后立马介入有关事件的剖析工作,以下为攻击有关细节。

SushiMKR 是什么

SushiMKR是 SushiSwap 协议中的一个要紧的组件,其用于采集 SushiSwap 每一个买卖对的手续费,并通过设置每一个代币的路由,将不同买卖对的手续费最后转换成 sushi 代币,回报给 sushi 代币的持有者。这个过程就是发生在SushiMKR合约上。

说说恒定乘积

恒定乘积的公式非常简单,在不计算手续费的状况下,恒定乘积的公式为

也就是说每次兑换,其实都是遵循这个公式,及买卖前后 K 值不变,在兑换的过程中,因为要维持 K 值不变,公式的形式会是这个样子

其中 X 代表卖掉的代币,Y 代表要购买的代币,那样每次能兑换到的代币数目会是这个样子

从公式上可以看到,当输出代币 Y 的兑换数目上限取决于 Y 代币的数目,而和 X 代币数目的大小无关,反过来讲,假如要卖掉的 X 代币数目非常大,但 Y 代币的数目非常小,那样就会导致很多的 X 代币只能兑换出少量的 Y 代币,而这个兑换价格相比正常的买卖价格会偏离不少,这就是所谓的滑点,是本次攻击中的重要。

攻击步骤

2020 年 11 月 30 日,SushiSwap 就曾由于SushiMKR的问题出现过一次攻击,本次攻击和首次攻击相似,但步骤上有不同。相较于旧合约,在新的合约中, 手续费在兑换的过程中会通过 bridgeFor 函数为不同买卖对中的代币探寻特定的兑换路由,然后进行兑换。

其中,bridgeFor 函数的逻辑如下:

依据 bridgeFor 的逻辑,大家不难发现,假如没手工设置过特定币种的 bridge,那样默认的 bridge 是 W以太币,也就是说,在未设置 bridge 的状况下,默认是将手续费兑换成 W以太币。而 DIGG 这个币,就是正好没通过 setBridge 设置对应的 bridge 的。

但这里还有一个问题,就是在 swap 的过程中,假如这个买卖对没有,兑换的过程是失败的。本次攻击中,DIGG-W以太币 这个买卖对刚开始并没有,所以攻击者预先创建一个 DIGG-W以太币 的买卖对,然后添加少量的流动性。这时假如发生手续费兑换,依据前面说的恒定乘积的特质,因为 DIGG-W以太币 的流动性极少,也就是 DIGG-W以太币 中的 W以太币 上限非常小,而SushiMKR中的要转换的手续费数目相对较大,如此的兑换会致使巨大的滑点。兑换的过程会拉高 DIGG-W以太币 买卖对中 W以太币 兑 DIGG 的价格,并且,DIGG-W以太币 的所有 DIGG 手续费收益都到了 DIGG-W以太币 买卖中。通过察看 DIGG-W以太币 买卖对的流动性状况,流动性最大的时候也才只有不到 2800 USD的流动性,这个结果也能和公式的推导相互验证。

攻击者在SushiMKR完成手续费转换后,因为 DIGG-W以太币 买卖对中 W以太币 兑 DIGG 的价格已经被拉高,致使少量的 W以太币 即可兑换很多的 DIGG,而这个 DIGG 的数目,正是 DIGG-W比特币 买卖对的大多数手续费收入。

概要

本次攻击和 SushiSwap 首次攻击类似,都是通过操控买卖对的兑换价格来产生获利。但过程是不同的。首次攻击是由于攻击者用 LP 代币本身和其他代币创建了一个新的买卖对,并通过操纵初始流动性操控了这个新的买卖对的价格来进行获利,而这次的攻击则借助了 DIGG 本身没对 W以太币 买卖对,而攻击者创建了这个买卖对并操控了初始的买卖价格,致使手续费兑换过程中产生了巨大的滑点,攻击者仅需用少量的 DIGG 和 W以太币 提供初始流动性即可获得巨额收益。

有关参考链接如下:

SushiMKR 归集手续费买卖:

https://以太币erscan.io/tx/0x90fb0c9976361f537330a5617a404045ffb3fef5972cf67b531386014eeae7a9

 

攻击者套利买卖:

https://以太币erscan.io/tx/0x0af5a6d2d8b49f68dcfd4599a0e767450e76e08a5aeba9b3d534a604d308e60b

DIGG-W以太币 流动性详细情况:

https://www.sushiswap.fi/pair/0xf41e354eb138b328d56957b36b7f814826708724

Sushi 首次被攻击解析:

https://mp.weixin.qq.com/s/-Vp9bPSqxE0yw2hk_yogFw

我们的缺点麻烦您能提出,谢谢支持!