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

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 合约。

MystenLabs:Sui Capys更名为SuiFrens:金色财经报道,Sui开发公司Mysten Labs发推表示,Sui Capys已更名为SuiFrens,并在测试网上线。Capys现在属于Sui Frens家族中的一员。此前报道,Sui将于5月3日上线主网,此外测试网版本已更新至v0.32.0,新增功能包括为get Balances/Coins系列的端点(例如suix_getBalance)新增二级索引以提升查询效率、将DeepBook包添加到Sui Framework中以允许Sui开发者在DeepBook上构建、启用新的成本表来计算Gas费等。[2023/4/21 14:17:27]

1、攻击者选中 Sushi Swap 中的一个交易对,如 USDT/WETH,然后添加流动性获得对应的 SLP (USDT/WETH 流动性证明,以下简称 SLP),使用获得的 SLP 和另外的少量 WETH 创建一个新的 Sushi Swap 交易对,然后得到新代币池的 SLP1 (WETH/SLP(USDT/WETH) 流动性证明,以下简称 SLP1)转入 ?Sushi Maker 合约中。

美参议员Debbie Stabenow放弃寻求连任,曾牵头SBF支持的加密法案:金色财经报道,美国参议院农业委员会主席、密歇根州民主党人Debbie Stabenow将不会在2024年寻求连任,并将在2025年1月3日任期结束时离开美国参议院。Stabenow是FTX首席执行官Sam Bankman-Fried积极游说的一项法案的作者和倡导者。Stabenow担任参议院农业委员会主席,该委员会对商品期货交易委员会拥有管辖权,商品期货交易委员会是美国比特币的主要监管机构。[2023/1/6 10:24:19]

2、调用 Sushi Swap 的 convert 函数,传入的 token0 为第一步获得的 SLP,token1 为 WETH。调用 convert 函数后,Sushi Maker 合约会调用 token0 和 token1 构成的代币池的 burn 函数燃烧 SLP1,燃烧掉攻击者在第一步中打入 Sushi Maker 合约中的 SLP1,得到 WETH 和 SLP。

OpenSea与Twitter未能达成合作,Magic Eden可能成为Twitter合作伙伴:11月5日消息,据知情人士透露,OpenSea和Twitter讨论了在Tweet Tiles上的合作,但未就条款达成一致。Magic Eden成为可能Twitter的合作伙伴。

此前,Magic Eden超过OpenSea成为月交易量最大的NFT市场。(TheBlock)[2022/11/5 12:19:46]

虎扑联合大象数藏联合发行“孙兴慜”系列数字藏品:金色财经报道,虎扑体育携手大象数藏联合发行:21-22赛季英超金靴得主韩国球星“孙兴慜”系列数字藏品。

本次联合发行藏品内容包括“孙兴慜数字签名金靴”和“金靴奖23个进球纪录”,内容追溯他21-22赛季英超联赛18场比赛凭借23个进球最终斩获金靴奖的历程。[2022/9/27 22:31:20]

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@慢雾安全团队

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

金星链

[0:46ms0-1:152ms