ETH:如何通过恒定乘积黑掉 SushiSwap ?简析 SushiSwap 第二次被攻击始末

背景

2021 年 1 月 27 日,据慢雾区情报,SushiSwap 再次遭遇攻击,此次问题为 DIGG-WBTC 交易对的手续费被攻击者通过特殊的手段薅走。慢雾安全团队在收到情报后立马介入相关事件的分析工作,以下为攻击相关细节。

SushiMaker 是什么

SushiMaker 是 SushiSwap 协议中的一个重要的组件,其用于收集 SushiSwap 每个交易对的手续费,并通过设置每个代币的路由,将不同交易对的手续费最终转换成 sushi 代币,回馈给 sushi 代币的持有者。这个过程就是发生在 SushiMaker 合约上。

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

谷歌搜索趋势:如何购买黄金和比特币的搜索量激增:金色财经报道,在美国银行业动荡期间,谷歌趋势显示与黄金收购相关的搜索量显着激增,搜索查询在 2023 年 4 月的第一周达到满分 100。同样,搜索两周前,即 2023 年 3 月 20 日,术语“如何购买比特币”达到了相同的分数。除了黄金,谷歌趋势数据还显示,人们对黄金的兴趣在搜索词“如何购买比特币”中的排名也有所上升,根据 90 天的统计数据,在 2023 年 3 月 20 日达到了 100 的高分。Bitcoin.com News数据显示,从 3 月中旬到 4 月,搜索查询“比特币”也在增加。[2023/4/28 14:32:37]

也就是说每次兑换,其实都是遵循这个公式,及交易前后 K 值不变,在兑换的过程中,由于要保持 K 值不变,公式的形式会是这个样子

恒生电子:联盟链的创新空间应集中在如何更好地服务中小和小微企业方面:金色财经报道,6月23日,恒生电子区块链发展部运营经理林晗做客金色财经举办的“联盟链-创新场景应用的偶然与必然”为主题的金色沙龙第64期活动。林晗表示中国的区块链研究和专利成果,从一开始就比较集中在区块链技术的应用和落地,也就是产业区块链方面。现阶段联盟链适用于与具体细分产业相结合的场景,比如说产业金融领域,例如产业金融区块链平台范太链。联盟链的创新空间应是集中如何利用区块链解决小微企业的信任问题、更好提升小微企业运营效率来开展。因为区块链能解决的一个核心痛点是信任问题,与本身就具有信任背书能力的大企业相比,在产业中往往是小企业才需要解决信任问题。区块链作为一种划时代意义的记账技术,其最大的价值是应该被用来与实体产业结合,促进社会发展。[2021/6/23 0:00:23]

电商巨头Shopify CEO正考虑如何将Shopify与DeFi生态系统整合:电商巨头Shopify首席执行官Tobi Lutke正在考虑如何将其公司与去中心化金融(DeFi)生态系统整合。Lutke昨日在推特上发布了一条消息,询问DeFi社区Shopify在日益增长的金融领域中可以扮演什么“角色”。(Cointelegraph)[2021/4/4 19:43:56]

其中 X 代表卖掉的代币,Y 代表要购买的代币,那么每次能兑换到的代币数量会是这个样子(具体的推导过程就不演示了 :D)

从公式上可以看到,当输出代币 Y 的兑换数量上限取决于 Y 代币的数量,而和 X 代币数量的大小无关,反过来说,如果要卖掉的 X 代币数量很大,但是 Y 代币的数量很小,那么就会造成大量的 X 代币只能兑换出少量的 Y 代币,而这个兑换价格相比正常的交易价格会偏离很多,这就是所谓的滑点,是本次攻击中的关键。

大咖零距离 | 行情巨震 如何合理配置币圈资产:3月30日16:00,由金色盘面主办、BTSE交易所独家赞助的《大咖零距离》正式开播。届时BTSE联合创始人/CPO BrianWong,将在《大咖零距离》直播间分享《行情巨震,如何合理配置币圈资产》,敬请关注,欲进群观看直播扫描海报二维码报名即可![2020/3/30]

2020 年 11 月 30 日,SushiSwap 就曾因为 SushiMaker 的问题出现过一次攻击(详解参阅:以小博大,简析 Sushi Swap 攻击事件始末),本次攻击和第一次攻击相似,但流程上有区别。相较于旧合约,在新的合约中, 手续费在兑换的过程中会通过 bridgeFor 函数为不同交易对中的代币寻找特定的兑换路由,然后进行兑换。

动态 | 200余名全球执法人员参加国际犯罪会议,探讨如何制止加密犯罪:据TheNextWeb报道,本周,根据澳大利亚联邦警察(AFP)的声明,超过200名来自世界各地的执法人员将出席在布里斯班举行的国际犯罪会议,共同探讨寻找加密犯罪的方法。AFP代理局长Justine Gough表示,加密货币和加密通信等技术的进步已经改变了罪犯获取和隐藏资产的方式,抓住并消除犯罪阻止他们获利,是打击有组织的犯罪网络最有效的方法之一。[2019/11/14]

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

根据 bridgeFor 的逻辑,我们不难发现,如果没有手动设置过特定币种的 bridge,那么默认的 bridge 是 WETH,也就是说,在未设置 bridge 的情况下,默认是将手续费兑换成 WETH。而 DIGG 这个币,就是正好没有通过 setBridge 设置对应的 bridge 的。

但是这里还有一个问题,就是在 swap 的过程中,如果这个交易对不存在,兑换的过程是失败的。本次攻击中,DIGG-WETH 这个交易对一开始并不存在,所以攻击者预先创建一个 DIGG-WETH 的交易对,然后添加少量的流动性。这个时候如果发生手续费兑换,根据前面说的恒定乘积的特性,由于 DIGG-WETH 的流动性很少,也就是 DIGG-WETH 中的 WETH 上限很小,而 SushiMaker 中的要转换的手续费数量相对较大,这样的兑换会导致巨大的滑点。兑换的过程会拉高 DIGG-WETH 交易对中 WETH 兑 DIGG 的价格,并且,DIGG-WETH 的所有 DIGG 手续费收益都到了 DIGG-WETH 交易中。通过观察 DIGG-WETH 交易对的流动性情况,流动性最大的时候也才只有不到 2800 美元的流动性,这个结果也能和公式的推导相互验证。

攻击者在 SushiMaker 完成手续费转换后,由于 ?DIGG-WETH 交易对中 WETH 兑 DIGG 的价格已经被拉高,导致少量的 WETH 即可兑换大量的 DIGG,而这个 DIGG 的数量,正是 DIGG-WBTC 交易对的大部分手续费收入。

本次攻击和 SushiSwap 第一次攻击类似,都是通过操控交易对的兑换价格来产生获利。但是过程是不一样的。第一次攻击是因为攻击者使用 LP 代币本身和其他代币创建了一个新的交易对,并通过操纵初始流动性操控了这个新的交易对的价格来进行获利,而这次的攻击则利用了 DIGG 本身没有对 WETH 交易对,而攻击者创建了这个交易对并操控了初始的交易价格,导致手续费兑换过程中产生了巨大的滑点,攻击者只需使用少量的 DIGG 和 WETH 提供初始流动性即可获取巨额利润。

相关参考链接如下:

SushiMaker 归集手续费交易:

https://etherscan.io/tx/0x90fb0c9976361f537330a5617a404045ffb3fef5972cf67b531386014eeae7a9

攻击者套利交易:

https://etherscan.io/tx/0x0af5a6d2d8b49f68dcfd4599a0e767450e76e08a5aeba9b3d534a604d308e60b

DIGG-WETH 流动性详情:

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

Sushi 第一次被攻击详解:

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

By :?yudan@慢雾安全团队

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金星链

UNIDEFI:金色观察|OEC有什么玄机?

DeFi的火热让Cex知道了自己做链的重要性。如果在Cex可以实现DeFi。做自己的链是必要的。目前三大交易所已经都完成了各自链的部署。而如何让自己的链和Cex的属性更好的贴合呢.

[0:46ms0-1:623ms