一文简析 SushiSwap 第二次被攻击始末
SushiSwap 再次遭遇攻击,此次问题为 DIGG-WBTC 交易对的手续费被攻击者通过特殊的手段薅走。
By : yudan@慢雾安全团队
背景
2021 年 1 月 27 日,据慢雾区情报,SushiSwap 再次遭遇攻击,此次问题为 DIGG-WBTC 交易对的手续费被攻击者通过特殊的手段薅走。慢雾安全团队在收到情报后立马介入相关事件的分析工作,以下为攻击相关细节。
SushiMaker 是什么
SushiMaker 是 SushiSwap 协议中的一个重要的组件,其用于收集 SushiSwap 每个交易对的手续费,并通过设置每个代币的路由,将不同交易对的手续费最终转换成 sushi 代币,回馈给 sushi 代币的持有者。这个过程就是发生在 SushiMaker 合约上。
说说恒定乘积
恒定乘积的公式很简单,在不计算手续费的情况下,恒定乘积的公式为
也就是说每次兑换,其实都是遵循这个公式,及交易前后 K 值不变,在兑换的过程中,由于要保持 K 值不变,公式的形式会是这个样子
其中 X 代表卖掉的代币,Y 代表要购买的代币,那么每次能兑换到的代币数量会是这个样子(具体的推导过程就不演示了 :D)
从公式上可以看到,当输出代币 Y 的兑换数量上限取决于 Y 代币的数量,而和 X 代币数量的大小无关,反过来说,如果要卖掉的 X 代币数量很大,但是 Y 代币的数量很小,那么就会造成大量的 X 代币只能兑换出少量的 Y 代币,而这个兑换价格相比正常的交易价格会偏离很多,这就是所谓的滑点,是本次攻击中的关键。
攻击流程
2020 年 11 月 30 日,SushiSwap 就曾因为 SushiMaker 的问题出现过一次攻击(详解参阅:以小博大,简析 Sushi Swap 攻击事件始末),本次攻击和第一次攻击相似,但流程上有区别。相较于旧合约,在新的合约中, 手续费在兑换的过程中会通过 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
比推快讯
更多 >>- 以太坊周三的NFT日销售额超713万美元
- 通用验证层Aligned Layer完成2000万美元A轮融资
- 币安已开放BounceBit(BB)Megadrop
- 自推出以来,符文交易占所有比特币交易的68%
- 加密矿企Argo去年开采1760枚比特币,实现5060万美元收入
- IRISnet 3.0升级拟于5月中旬发布,新增LSM支持
- NFT抵押借贷市场Q1交易量超20亿美元创新高,环比增长44%
- 财新:内地投资者目前尚不可参与买卖香港虚拟资产现货ETF
- Web3社区游戏平台Iskra完成战略轮融资,Animoca Brands参投
- 贝莱德确认与Hedera并无商业关系,并未选择Hedera来代币化任何贝莱德基金
- Ki Young Ju:韩国加密交易量全球领先,但却是Web3创业环境最差的国家之一
- 参与OneCoin计划的又一人员被捕,美检方已对其提起诉讼
- 欧盟反洗钱法案通过最终投票,将加强尽职调查措施和对客户身份的检查
- 数据:NFT借贷市场第一季度交易量超 20 亿美元,环比增长 44%
- USDC Treasury销毁超9500万枚USDC
- 美国联邦检察官指控加密混合器 Samurai Wallet 创始人洗钱和未经许可的资金转移罪
- Glassnode:比特币的通胀率现已低于黄金
- 毕马威调查报告:2023年加拿大75%的机构投资者拥有加密资产
- 某交易员向币安转入395枚BTC,或意在出售
- S&P Global:如果美国最新的稳定币法案通过,Tether 主导地位将被削弱
- 数据:符文代币DOG上线4小时内交易额突破100枚BTC
- Polygon Staking钱包地址转出3000万枚MATIC,价值超2100万美元
- TON:已向JVT持有者和ANON交易者空投约2万枚TON
- Chainlink宣布其跨链互操作协议 CCIP 进入全面可用阶段
- 日本金融服务提供商Monex Group 完成对加密资产公司 3iQ 多数股权的收购
- Deribit 衍生品交易所约 94 亿美元的加密货币期权将于本周五到期
- 今日美国9只现货比特币ETF共增持949枚BTC,净流入约6188万美元
- Bitwise CIO:比特币下一次减半时价格或将触及25万美元
- 贝莱德IBIT占该公司全球 ETF 总流量的 24%
- MultiversX 和 Bware Labs 启动资助计划,现已开放申请
- CoinList与Film.io合作推出1100万枚FAN代币的奖励计划
- ETH跌破3200美元
- BTC跌破65000美元
- 部分 Square 用户现可通过 Cash App将美元兑换成比特币,固定费用 1%
- 可扩展区块链Viction推出应用链网络Viction World Wide Chain
- 加密加速器Alliance获Founders Fund“战略性长期投资”
- 比特币减半后BTC和ETH隐含波动率快速下降
- 灰度向Coinbase Prime转入约874枚BTC
- 比特币支付应用Strike向欧洲客户推出服务
- 链游生态系统Tevaera完成500万美元融资
- 彭博社Eric Balchunas:香港三家基金公司BTC/ETH现货ETF费率分别为0.3%、0.6%和0.99%
- 链游平台Puffverse完成300万美元融资
- 贝莱德IBIT持仓超27.4万枚比特币
- 香港证监会已列出几个比特币和以太坊现货ETF及股份代号
比推专栏
更多 >>观点
项目
比推热门文章
- 以太坊周三的NFT日销售额超713万美元
- 通用验证层Aligned Layer完成2000万美元A轮融资
- 币安已开放BounceBit(BB)Megadrop
- 自推出以来,符文交易占所有比特币交易的68%
- 加密矿企Argo去年开采1760枚比特币,实现5060万美元收入
- IRISnet 3.0升级拟于5月中旬发布,新增LSM支持
- NFT抵押借贷市场Q1交易量超20亿美元创新高,环比增长44%
- 财新:内地投资者目前尚不可参与买卖香港虚拟资产现货ETF
- Web3社区游戏平台Iskra完成战略轮融资,Animoca Brands参投
- 贝莱德确认与Hedera并无商业关系,并未选择Hedera来代币化任何贝莱德基金