USH:以小博大,简析SushiSwap攻击事件始末

By:yudan@慢雾安全团队2020年11月30日,据慢雾区情报,以太坊AMM代币兑换协议SushiSwap遭遇攻击,损失约1.5万美元。慢雾安全团队第一时间介入分析,并以简讯的形式分享,供大家参考。背景提要

SushiSwap项目中SushiMaker合约的作用是用于存放SushiSwap中每个交易对产生的手续费。其中手续费会以SLP(流动性证明)的形式存放在合约中。SushiMaker合约中有一个convert函数,用于将从每一个交易对中收集的手续费通过调用各自交易对的burn函数获得对应的代币,然后将这些代币转换成sushi代币,添加到SushiBar合约中,为SushiBar中抵押sushi代币的用户增加收益,而此次的问题就出在SushiMaker合约。攻击流程

天桥资本创始人:BTC应被归类为商品,不受SEC的监管:金色财经报道,SkyBridge Capital 创始人 Anthony Scaramucci 表示,他并没有失去对比特币的热情,比以往任何时候对BTC更加乐观。Scaramucci还批评美国证券交易委员会主席Gary Gensler) 负责的部门管理混乱。Scaramucci 称,我们北部的邻居加拿大有两三个比特币ETF。而我们有 Gary Gensler 和 Elizabeth Warren。BTC应该被归类为商品,不受美国证券交易委员会的监管。[2023/4/17 14:08:56]

1、攻击者选中SushiSwap中的一个交易对,如USDT/WETH,然后添加流动性获得对应的SLP(USDT/WETH流动性证明,以下简称SLP),使用获得的SLP和另外的少量WETH创建一个新的SushiSwap交易对,然后得到新代币池的SLP1(WETH/SLP(USDT/WETH)流动性证明,以下简称SLP1)转入SushiMaker合约中。2、调用SushiSwap的convert函数,传入的token0为第一步获得的SLP,token1为WETH。调用convert函数后,SushiMaker合约会调用token0和token1构成的代币池的burn函数燃烧SLP1,燃烧掉攻击者在第一步中打入SushiMaker合约中的SLP1,得到WETH和SLP。

比特小鹿正设立2.5亿美元基金:金色财经报道,吴忌寒旗下比特小鹿(Bitdeer)正在设立一个规模为 2.5 亿美元的基金,旨在购买比特币矿工的不良资产。Wu的Bitdeer Technologies Holding Co. 计划投资 5000 万美元作为初级部分的一部分,这意味着如果基金亏损,该公司的投资将首先面临风险。比特小鹿的一位代表告诉彭博社,它的目标是从家族办公室、风险投资公司、另类投资基金和其他矿业公司等外部投资者那里再筹集2亿美元。[2022/9/27 5:55:11]

CFTC主席:将增加资源并加大力度处理与加密货币相关的欺诈和操纵案件:金色财经报道,美国商品期货交易委员会 (CFTC)主席 Rostin Behnam 周三表示,商品期货交易委员会 (CFTC) 将增加资源并加大力度处理与加密货币相关的欺诈和操纵案件。在 Chainalysis Links会议的视频评论中,Behnam表示, CFTC正面临着数量激增的此类案件,由于协议漏洞、网络钓鱼攻击、掠夺易受伤害的人以及其他欺诈和操纵计划而导致数千万美元数字资产损失的头条新闻已经变得非常普遍。

去年,该机构提起了 23 起与加密货币相关的案件,占自 2015 年以来涉及数字资产的执法行动总数的近一半。(Coindesk)[2022/5/19 3:26:38]

3、SushiMaker合约的convert函数紧接着会调用内部的_toWETH函数将burn获得的代币转换成WETH,由于在第二步SushiMaker合约通过burn获得了SLP和WETH。其中WETH无需转换,只需转换SLP。此时,转换将会通过调用SLP/WETH交易对进行转换,也就是攻击者在第一步创建的交易对。由于SushiMaker合约在转换时会将所有的balanceOf(token0)转换成WETH,这里传入的token0为SLP,于是合约将合约中所有的SLP通过SLP/WETH交易对进行兑换(兑换的SLP包含USDT/WETH交易对每次swap产生的收益和在第二步合约通过burn函数获得的SLP)。而SLP/WETH代币池是攻击者创建的,攻击者只需在初始化的时候添加少量的WETH,就可以在SushiMaker交易对进行兑换的过程中,用少量的WETH换取SushiMaker合约中对应交易对的所有的SLP。

4、攻击者使用burn函数在SLP/WETH交易对中燃烧掉自己的SLP1,拿到大量的SLP和小量的WETH,并继续对其他流动性池重复该过程,持续获利。总结

攻击者使用SLP和WETH创建一个新的代币池,使用新代币池的SLP1在SushiMaker中进行convert,使用少量的SLP将SushiMaker合约中的所有SLP转到自己创建的代币池中,即将对应交易对一段时间内的所有手续费收入囊中。并对其他交易对重复这个过程,持续获利。

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

金星链

[0:15ms0-0:888ms