2020 年 11 月 30 日,据慢雾区情报,以太坊 AMM 代币兑换协议 Sushi Swap 遭遇攻击,损失约 1.5 万美元。慢雾安全团队第一时间介入分析,并以简讯的形式分享,供大家参考。
Sushi Swap 项目中 Sushi Maker 合约的作用是用于存放 Sushi Swap 中每个交易对产生的手续费。其中手续费会以 SLP (流动性证明) 的形式存放在合约中。Sushi Maker 合约中有一个 convert 函数,用于将从每一个交易对中收集的手续费通过调用各自交易对的 burn 函数获得对应的代币,然后将这些代币转换成 sushi 代币,添加到 Sushi Bar 合约中,为 Sushi Bar 中抵押 sushi 代币的用户增加收益,而此次的问题就出在 Sushi Maker 合约。
BXH将于4月2日上线Gate:据官方公告,BXH将于4月2日上线Gate.io(芝麻开门),4月2日16:00开放BXH/USDT交易对,并随后开通提现服务。
BXH是部署在Heco链上的去中心化交易所BXH.com平台通证,BXH.com支持去中心化数字货币交易、流动性挖矿、平台币质押分红等多种模式。平台代币BXH全部由流动性挖矿产生,可在BXH交易场景中广泛使用,同时也是平台DAO社区治理投票凭证。[2021/4/2 19:40:25]
1、攻击者选中 Sushi Swap 中的一个交易对,如 USDT/WETH,然后添加流动性获得对应的 SLP (USDT/WETH 流动性证明,以下简称 SLP),使用获得的 SLP 和另外的少量 WETH 创建一个新的 Sushi Swap 交易对,然后得到新代币池的 SLP1 (WETH/SLP(USDT/WETH) 流动性证明,以下简称 SLP1)转入 Sushi Maker 合约中。
AOFEX永续合约:BTC多空持仓人数比1.17,ETH多空持仓人数比0.88:AOFEX交易大数据显示,截至11月10日14:00,BTC永续合约多空持仓人数比为1.17,市场做多人数占优,基差小于0.5USDT,资金费率趋近于0,24小时成交约3.95亿张;ETH永续合约多空持仓人数比为0.88,市场做空人数占优,基差小于0.05USDT,资金费率趋近于0,24小时成交约2.53亿张。
AOFEX数字货币金融衍生品交易所,旨在为用户提供优质服务和资产安全保障。[2020/11/10 12:11:56]
2、调用 Sushi Swap 的 convert 函数,传入的 token0 为第一步获得的 SLP,token1 为 WETH。调用 convert 函数后,Sushi Maker 合约会调用 token0 和 token1 构成的代币池的 burn 函数燃烧 SLP1,燃烧掉攻击者在第一步中打入 Sushi Maker 合约中的 SLP1,得到 WETH 和 SLP。
朱嘉伟:用三个词形容数字经济未来世界的样子:火币于10月27日~10月28日正式举办“无限未来——2020年区块链大航海时代”行业峰会暨火币集团七周年线上峰会。在本次峰会“鸿蒙初开,区块链世界的崛起和先行者的眺望”主题板块中,火币集团COO朱嘉伟与新加坡新跃大学李国权进行了对话。
对话中朱嘉伟表示,可以用三个词形容数字经济未来世界的样子,一是天下无贼的社会,如果现金都被数字化,大家都能使用数字工具支付,小偷可能就会逐渐消失。二是全球一体的世界,区块链和数字经济的发展是要联通全球各个国家,形成一张高效的全球网络。第三是既清晰又隐私的世界。清晰来源于背后的大数据分析,我们能够清楚地知道每一块钱的来去,并通过加密的机制来保护用户隐私。[2020/10/27]
3、 Sushi Maker 合约的 convert 函数紧接着会调用内部的 _toWETH 函数将 burn 获得的代币转换成 WETH,由于在第二步 Sushi Maker 合约通过 burn 获得了 SLP 和 WETH。其中 WETH 无需转换,只需转换 SLP。此时,转换将会通过调用 SLP/WETH 交易对进行转换,也就是攻击者在第一步创建的交易对。由于 Sushi Maker 合约在转换时会将所有的 balanceOf (token0) 转换成 WETH,这里传入的 token0 为 SLP,于是合约将合约中所有的 SLP 通过 SLP / WETH 交易对进行兑换 (兑换的 SLP 包含 USDT/WETH 交易对每次 swap 产生的收益和在第二步合约通过 burn 函数获得的 SLP )。而 SLP / WETH 代币池是攻击者创建的,攻击者只需在初始化的时候添加少量的 WETH,就可以在 Sushi Maker 交易对进行兑换的过程中,用少量的 WETH 换取 Sushi Maker 合约中对应交易对的所有的 SLP。
4、攻击者使用 burn 函数在 SLP/WETH 交易对中燃烧掉自己的 SLP1, 拿到大量的 SLP 和小量的 WETH,并继续对其他流动性池重复该过程,持续获利。
攻击者使用 SLP 和 WETH 创建一个新的代币池,使用新代币池的 SLP1 在 Sushi Maker 中进行 convert,使用少量的 SLP 将 Sushi Maker 合约中的所有 SLP 转到自己创建的代币池中,即将对应交易对一段时间内的所有手续费收入囊中。并对其他交易对重复这个过程,持续获利。
By : yudan@慢雾安全团队
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。