By:?yudan@慢雾安全团队
背景
2021年1月27日,据慢雾区情报,SushiSwap再次遭遇攻击,此次问题为DIGG-WBTC交易对的手续费被攻击者通过特殊的手段薅走。慢雾安全团队在收到情报后立马介入相关事件的分析工作,以下为攻击相关细节。
SushiMaker是什么
SushiMaker?是SushiSwap协议中的一个重要的组件,其用于收集SushiSwap每个交易对的手续费,并通过设置每个代币的路由,将不同交易对的手续费最终转换成sushi代币,回馈给sushi代币的持有者。这个过程就是发生在?SushiMaker?合约上。
Digital Insights Ventures 创始人:为了使Web3成功,人们需要了解辅助系统将如何蓬勃发展:金色财经现场报道,在Coinlive举办的峰会上,新加坡区块链协会 (BAS) 可持续发展与影响小组委员会创始主席兼Digital Insights Ventures 创始人 Krishna Ramachandra 以主题演讲“Web3 和人工智能 (AI):助力去中心化技术的代币化和可持续性。”他分享了 Digital Insights 采用的核心见解:交互、互操作性、集成和互连。
此外,他还谈到了网络的语义,并解释说Web3,当你分解它时,它只是指你对数据使用方式的控制。他解释说,为了使Web3成功,人们需要了解辅助系统将如何蓬勃发展。他在演讲结束时说,如果有影响力或权力的人不帮助可持续发展的叙述,我们将永远不会看到Web3的全部力量。[2022/12/22 22:00:35]
说说恒定乘积
HashKey Group 获香港证监会发放的运营虚拟资产交易平台的牌照:11月10日消息,HashKey Group 旗下公司 Hash Blockchain Limited(HBL)已获香港证监会发放的牌照,批准其通过第一类(证券交易)及第七类(提供自动化交易服务)牌照运营虚拟资产交易平台,为专业投资者提供服务。
据悉,HBL 旗下机构级虚拟资产交易平台 HashKey PRO 将为专业投资者提供比特币、以太坊等加密货币,以及稳定币、证券型代币及其他创新资产等自动化交易服务,其持有的客户资产由持有香港信托或公司服务提供商(TCSP)牌照的 HashKey Custody Services Limited 托管。
此前,HashKey Group 已获香港证监会及日本金融厅发放的虚拟资产运营牌照,也获得了新加坡金融管理局基于支付服务法下豁免的运营资格。(hashkey.com)[2022/11/10 12:42:27]
恒定乘积的公式很简单,在不计算手续费的情况下,恒定乘积的公式为
STEPN与日本通讯巨头LINE加密子公司达成合作:8月8日消息,STEPN运营商Find Satoshi Lab Limited与日本通讯巨头LINE旗下加密货币和区块链子公司LINE Xenesis签署谅解备忘录,将使用LINE的专有区块链“LINE Blockchain”在日本提供本地化的“MoveandEarn”服务。[2022/8/9 12:11:47]
也就是说每次兑换,其实都是遵循这个公式,及交易前后K值不变,在兑换的过程中,由于要保持K值不变,公式的形式会是这个样子
其中X代表卖掉的代币,Y代表要购买的代币,那么每次能兑换到的代币数量会是这个样子(具体的推导过程就不演示了:D)
Shiba Inu计划推出二层网络、稳定币、卡牌游戏等一系列新产品:7月7日消息,SHIB首席开发者Shytoshi Kusama发文透露,其计划通过一种名为SHI的去中心化稳定币、一种名为TREAT的奖励代币以及一款用于元宇宙的可收藏卡牌游戏来扩展Shiba Inu的生态系统。
去中心化稳定币SHI的具体运行机制未披露,但其计划在2022年晚些时候推出。TREAT是SHIB元宇宙即将推出的奖励代币,将与Shiba收藏卡牌游戏相关联,该代币还将帮助为柴犬的稳定币提供平衡。Kusama为透露TREAT具体是如何运行的,但称TREAT是供应量是有限的。
作为该计划的一部分,开发人员正在开发生态系统自己的第二层协议Shibarium,该协议将支持原生应用的部署和开发,包括名为BONE的GAS代币。该团队正在单独构建一个以10万块地块作为虚拟房地产的元宇宙项目,可收藏卡牌游戏将涵盖在Shiba的元宇宙中。(CoinDesk)[2022/7/7 1:56:59]
从公式上可以看到,当输出代币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
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。