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

By:yudan@慢雾安全团队背景

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

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

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

维珍银河董事长:PayPal消息传出后各大银行讨论如何支持比特币:维珍银河董事长Chamath Palihapitiya今晨发推表示,PayPal消息传出后,各大银行都在开会讨论如何支持比特币。它不再仅作为一个选项。[2020/10/22]

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

听证会 | 扎克伯格:还未确定如何处理错误交易的最终政策:金色财经直播报道,在今日听证会上,议员Bil Foster询问了有关如何处理错误交易。扎克伯格说,他不确定是否已经为此制定了政策。已对此有所考虑,但还没有确定”最终政策。[2019/10/24]

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

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

动态 | 电脑安全软件公司:揭示朝鲜黑客如何利用恶意软件入侵加密货币交易:据BeinCrypto消息,电脑安全软件公司Objective-See发布报告,揭示了加密货币交易被朝鲜一个新的恶意软件入侵的细节。这种新的恶意软件由朝鲜黑客组织Lazarus APT集团操作,以一种叫做“JTM交易软件”的客户端交易软件为幌子,主要通过电子邮件分发给毫无戒心的受害者,在被安装后窃取私钥和访问详细信息。[2019/10/16]

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

声音 | 薛蛮子:行业应重点关注如何建立信任机制:著名天使投资人、UT斯达康创始人薛蛮子在“重构新生态”2018全球第五届区块链技术应用论坛上,就区块链投资提到:很多散户依靠对百倍千倍的幻想而去投资数字货币是非常危险的事。同时就区块链监管也提到:如何在倒“洗澡水”的时候怎么又不把“澡盆里的孩子”倒出去,这是个很有技术难度的事情,也是短时间内很难实现的事。个人认为:接下来行业内胡乱“割韭菜”行为肯定行不通了,如何建立信任机制才是行业内应该去做的事情。[2018/7/26]

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

HeroNode创始人刘国平:工业革命以来最大的技术革命——区块链如何实现去中心化:近日,HeroNode 创始人刘国平受邀前往平安总部进行区块链技术演讲。会上,刘国平就“区块链到底是什么”和“区块链有什么特点”两个问题,用通俗易懂的语言深入浅出地进行讲解,并着重介绍了区块链对现有公司业务的挑战。刘国平,区块链应用技术专家、比特币第一批矿工、Hero 移动跨平台框架开发创始人,Hero 理事会会长。曾任职万得资讯、第九城市、点融网等知名互联网公司负责技术研发、并深度参与点融网区块链应用场景开发。[2018/4/2]

根据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/0x0af5a6d2d8b49f68dcfd4599a0e767450e76e08a5aeba9b3d534a604d308e60bDIGG-WETH流动性详情:https://www.sushiswap.fi/pair/0xf41e354eb138b328d56957b36b7f814826708724Sushi第一次被攻击详解:https://mp.weixin.qq.com/s/-Vp9bPSqxE0yw2hk_yogFw

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

链链资讯

[0:15ms0-6:189ms