By:?yudan@慢雾安全团队
背景
2021年1月27日,据慢雾区情报,SushiSwap再次遭遇攻击,此次问题为DIGG-WBTC交易对的手续费被攻击者通过特殊的手段薅走。慢雾安全团队在收到情报后立马介入相关事件的分析工作,以下为攻击相关细节。
SushiMaker是什么
SushiMaker?是SushiSwap协议中的一个重要的组件,其用于收集SushiSwap每个交易对的手续费,并通过设置每个代币的路由,将不同交易对的手续费最终转换成sushi代币,回馈给sushi代币的持有者。这个过程就是发生在?SushiMaker?合约上。
今日恐慌与贪婪指数为62,等级为贪婪:金色财经报道,今日恐慌与贪婪指数为62(昨日为68),等级为贪婪。
注:恐慌指数阈值为0-100,包含指标:波动性(25%)+市场交易量(25%)+社交媒体热度(15%)+市场调查(15%)+比特币在整个市场中的比例(10%)+谷歌热词分析(10%)。[2023/3/22 13:18:34]
说说恒定乘积
恒定乘积的公式很简单,在不计算手续费的情况下,恒定乘积的公式为
也就是说每次兑换,其实都是遵循这个公式,及交易前后K值不变,在兑换的过程中,由于要保持K值不变,公式的形式会是这个样子
其中X代表卖掉的代币,Y代表要购买的代币,那么每次能兑换到的代币数量会是这个样子(具体的推导过程就不演示了:D)
Ledger推出浏览器插件,支持用户直接交互:金色财经报道,硬件钱包 Ledger 推出浏览器插件,该插件旨在提供与 MetaMask 等加密钱包类似的体验。Ledger 表示它不是一个热钱包,仍是一个允许用户直接交互的冷钱包通过蓝牙使用 DApp。此外,它有两个功能确保用户在与加密应用交互时的安全:分析智能合约并警告用户交易是否可能是恶意的、模拟交易以显示它将如何影响钱包。
Ledger 表示,Ledger Extension 与基于以太坊和 Polygon 的 DApp 和平台兼容,并计划在未来支持更多与 EVM 兼容的链和 Solana。该插件目前仅适用于 Safari 浏览器,未来将推出对基于 Chromium 的浏览器的额外支持。[2023/3/17 13:09:01]
从公式上可以看到,当输出代币Y的兑换数量上限取决于Y代币的数量,而和X代币数量的大小无关,反过来说,如果要卖掉的X代币数量很大,但是Y代币的数量很小,那么就会造成大量的X代币只能兑换出少量的Y代币,而这个兑换价格相比正常的交易价格会偏离很多,这就是所谓的滑点,是本次攻击中的关键。
能源巨头沙特阿美与 droppGroup 签署协议建立 Web3 技术:金色财经报道,能源巨头沙特阿拉伯国家石油公司(沙特阿美)已与Web3技术提供商droppGroup签署了一份谅解备忘录(MoU),以探索共同开发一系列Web3技术,使其工人受益,包括潜在的入职、培训生态系统,以及代币化网络和奖励计划。据悉,这次合作并不是该公司首次涉足区块链技术。2020年初,该公司向基于区块链的商品交易后处理平台Vakt投资了500万美元。droppGroup是一家Web3技术提供商,其技术栈包括人工智能(AI)和机器学习(ML)、扩展现实(XR)、代币化网络和元宇宙环境。[2023/2/21 12:18:21]
攻击流程
以色列注册会计师协会成立针对加密货币监管的专家委员会:7月7日消息,以Chen Schreiber总裁为首的以色列注册会计师协会决定成立一个公共专家委员会以应对加密货币监管。Schreiber表示:“最近的市场事件使监管这一领域的需求变得更加迫切。”
该委员会将由Ofer Malka担任主席,他是高科技行业的先驱,曾任交通部局长。此外还包括曾担任副州检察官的律师Yehuda Sheffer和以色列信息技术商会区块链卓越中心主席Milly Perry博士。
除了私人金融市场的专家外,该委员会没有司法部、财政部、证券管理局或以色列央行等制定监管规定机构的代表。该委员会的目的是提出保护投资者的法规,促进加密领域与其他类型投资一样的公平活动,并充分利用以色列固有的机会。(JPost)[2022/7/7 1:57:39]
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
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。