一文简析 SushiSwap 第二次被攻击始末_DIG:ETH

By:?yudan@慢雾安全团队

背景

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

SushiMaker是什么

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

加密初创公司上周获得2.014亿美元的风险投资:金色财经报道,上周风险资本和投资公司向加密项目投入了2.014亿美元,有11家公司宣布进行融资。其中规模最大的两轮融资分别是:面向虚拟世界的初创公司Futureverse融资5400万美元,以及面向开发人员的零知识证明工具提供商RISC Zero融资4000万美元。

基础设施项目在本周的加密寒冬中继续表现出弹性,其中有六轮融资属于这一类别:RISC Zero、Cosmic Wire、Manta Network、Echooo Wallet、Side Protocol和Over Protocol。

在本周的其他风险投资新闻中,《财富》报道称,专注于加密货币的公司Polychain capital在其第四只风险投资基金的初步收盘中筹集2亿美元。Polychain尚未证实这些细节。[2023/7/24 15:55:51]

说说恒定乘积

数字身份生态Aspecta完成350万美元种子轮融资:金色财经报道,由AI驱动,专注于开发者的数字身份生态Aspecta宣布完成350万美元种子轮融资,同时公布其旗舰产品 Aspecta ID 的全球公开测试计划。

Aspecta种子轮融资由A、B两个阶段构成。A阶段于2022年4月完成,由真格基金、奇绩创坛(原YC China)、UpHonest Capital、耶鲁校友基金等机构参与,B阶段于2022年11月完成,由HashKey Capital、Foresight Ventures、SNZ Holding、Infinity Ventures Crypto等机构参与,共募资350万美元。

此外,Aspecta获得了来自Galxe,Mask Network,DoraHacks,CyberConnect,P12等项目方与生态的战略投资与捐赠支持。[2023/3/22 13:19:01]

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

Crypto.com:全球加密货币持有者已突破 4 亿,SBT 用例将是明年市场驱动力:12月29日消息,加密货币交易平台Crypto.com发布文章《2022年回顾与2023年展望》。文中指出,截至2022年11月,全球加密货币所有者数量突破4亿大关,达到4.02亿,月均采用率增长2.9%,预计2023年该指标数据将达到6~8亿。

此外,Crypto.com预计未来一年内将会出现AAA级区块链游戏,灵魂绑定Token(SBT)用例也将增加,并成为另一个市场驱动力。[2022/12/29 22:14:41]

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

彭博社:加密基金Protocol Ventures或将关闭,过去一年可能已损失90%的资金:11月3日消息,据知情人士透露,在数字资产市场下滑后,加密基金Protocol Ventures LP将关闭并返还现金,有关此举的通知已于10月底发送给投资者。其中一名知情人士表示,关闭工作可能会在年底或2023年第一季度完成,Protocol Ventures在过去一年中可能损失了高达90%的资金。Protocol拒绝就该公司的事态发展置评。

据悉,Protocol Ventures是专注于投资加密对冲基金的加密基金,曾投资于BlockTower Capital、Multicoin Capital、Pantera和Electric Capital等公司。(彭博社)[2022/11/3 12:13:07]

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

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

攻击流程

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

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

根据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

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

水星链

ETH3分钟了解Opium协议的风险分级机制_DAI:COPIUM

风险分级是在不同参与者之间有效重新分配风险的直接方法,这种方法广泛应用于传统金融,并可用于当前的DeFi协议,以有效地分散风险。本文介绍的是Opium协议采用的风险分级机制.

[0:0ms0-1:368ms