您的位置: > 欧 易 OKX 区块链新闻> 正文

打印本文             

By:九九@慢雾安全团队

2021 年 11 ⽉ 30 ⽇,据慢雾区消息,DeFi 平台 MonoX Finance 遭遇攻击,本次攻击中约合 1820 万美元的 WETH 和 1050 万美元的 MATIC 被盗,其他被盗 Token 包括 WBTC、LINK、GHST、DUCK、MIM 和 IMX,损失共计约 3100 万美元。慢雾安全团队第⼀时间介⼊分析,并将简要分析结果分享如下。

攻击核心

本次攻击的核⼼在于利⽤ swap 合约中没有对池中传⼊和传出代币是否相同作检查,以此利⽤价格更新机制的缺陷,使得攻击者传⼊和传出代币相同时,价格被二次计算并覆盖,导致代币价格不断被推⾼,并以此代币换出池中的其他代币来获利。

相关信息

MonoX 是⼀种新的 DeFi 协议,使⽤单⼀代币设计⽤于流动性池。这是通过将存⼊的代币与 vCASH 稳定币组合成⼀个虚拟交易对来实现的。其中的单⼀代币流动性池的第⼀个应⽤是⾃动做市商系统 - Monoswap,它在 2021 年 10 ⽉时推出。

攻击者地址 1:

0xecbe385f78041895c311070f344b55bfaa953258

攻击者地址 2:

0x8f6a86f3ab015f4d03ddb13abb02710e6d7ab31b

攻击合约 1:

0xf079d7911c13369e7fd85607970036d2883afcfd

攻击合约 2:

0x119914de3ae03256fd58b66cd6b8c6a12c70cfb2

攻击交易 1:

https://etherscan.io/tx/0x9f14d093a2349de08f02fc0fb018dadb449351d0cdb7d0738ff69cc6fef5f299

攻击交易 2:

https://polygonscan.com/tx/0x5a03b9c03eedcb9ec6e70c6841eaa4976a732d050a6218969e39483bb3004d5d

攻击细节

1、首先攻击者调用 Monoswap.swapExactTokenForToken:0.1 个 WETH 换出 79.986094311542621010 个 MONO。

2、接着攻击者利用漏洞移除池子中其他用户的流动性,并为添加攻击合约的流动性以此来获取最大的利益。

这里移除流动性处的漏洞在 Monoswap.sol 中的 471-510 行,移除池中流动性时通过 removeLiquidity 函数调用 _removeLiquidityHelper 函数,而这两个函数都未做调用者和传入的 to 参数的身份验证,所以可直接移除任意用户在池中的流动性。

分析

  • 移除 0x7b9aa6 的流动性,把 1670.7572297649224 个 MONO 和 6.862171986812230290 个 vCASH 转出给 0x7b9aa6;
  • 移除 cowrie.eth 的流动性,把 152.9745213857155 个 MONO 和 0.628300423692773565 个 vCASH 转出给 cowrie.eth;
  • 移除 0xab5167 的流动性,把 99940.7413658327 个 MONO 和 410.478879590637971405 个 vCASH 转出给 0xab5167;

为攻击合约 1 在 MONO 代币流动池创建流动性。

分析

3、紧接着攻击者调⽤ 55 次 Monoswap.swapExactTokenForToken 以此来不断堆⾼ MONO 的价格。

分析

这里攻击的核心是在 Monoswap.sol 中的 swapExactTokenForToken 函数,攻击者传入 MONO 代币使得 tokenIn 和 tokenOut 是相同的代币。

分析

跟到 swapIn 函数中:

分析

可以发现在 swapIn 函数中,调用了函数 getAmountOut 来计算价格。接着跟到 getAmountOut 函数中发现是利用了 _getNewPrice 函数来计算 tokenInPrice 和 tokenOutPrice。

分析

分析

跟到 _getNewprice 函数中,发现当计算 tokenInPrice 时候传入的 txType 参数为 TxType.SELL,此时:

分析

分析

当计算 tokenOutPrice 时候传入的 txType 参数为 TxType.BUY,此时:

分析

如果传入和传出为同一种代币时,价格计算式中的四个变量都相同,所以很容易得出 tokenOutPrice 会比 tokenInPrice 要大。

由于 tokenIn 和 tokenOut 是同一个 token,swapIn 函数在计算完价格后会再次调用 _updateTokenInfo 函数,使得 tokenOutPrice 的更新会覆盖 tokenInPrice 的更新,所以导致这个 token 的价格上涨。

分析

分析

4、最后攻击者调用 swapTokenForExactToken 函数用 MONO 来换出池子中的其他代币。

分析

swapTokenForExactToken 函数中调用了 swapOut 函数,而 swapOut 函数中计算价格是调用的 getAmountIn 函数。

分析

在该函数中由于 tokenInPoolPrice 是取的 MONO 代币在池中的价格,而此价格在之前已被推高,导致 tokenInPrice 变大,计算最后的 amountIn 变小,用更少的 MONO 换出了原来相同数量的 WETH、WBTC、MONO、USDC、USDT、 DUCK、MIM、IMX 等池子中的代币。

分析

5、攻击者最终把攻击获利转入地址

0x8f6a86f3ab015f4d03ddb13abb02710e6d7ab31b。

以上为以太坊主链上的攻击分析,此外,攻击者除了在以太坊主链上进行攻击外,还在 Polygon 上进行了同样的攻击,攻击手法与以太坊主链上相同,此处不做过多重复的分析。

据慢雾 AML 统计,MonoX Finance 最终损失约 3400 万美元,包括约 2.1K 个 WETH、1.9M 个 WMATIC、36.1 个 WBTC、143.4K 个 MONO、8.2M 个 USDC、 9.1M 个 USDT、1.2K 个 LINK、3.1K 个 GHST、5.1M 个 DUCK、4.1K 个 MIM 以及 274.9 个 IMX。

总结

本次攻击是利用了 swap 合约里没有对池中传入和传出代币作检查,从而利用价格更新机制的问题,由于在 swap 合约中会对池中传入和传出的代币的价格调用同一个函数 _upTokenInfo 来进行更新,而当传入和传出的代币为同一种代币时,第二次调用 _upTokenInfo 函数时,通过价格计算后的更高的 tokenOutPrice 会覆盖掉价格更低的 tokenInPrice,以此来不断推高池中该代币的价格,最后可以换出池中其他的所有代币来获利离场。


 Art Blocks:生成艺术的自动售货机

撰文:程天一

来源:海外独角兽

代码和软件已经占据了我们的生活,但是使用代码创作出的生成艺术在过去很多年中始终被低估。2021 年夏天开始的 NFT 和 Art Blocks 热潮改变了这一点。

Art Blocks 由 Erick Calderon 等人于 2020 年创立,是一个生成艺术的自动售货机,用交易时随机产生的哈希值生成最终作品,颠覆式地改变了生成艺术创作者和收藏者之间的关系

Art Blocks 发行的Chromie SquiggleRingersFidenza都在 NFT 世界引发了生成艺术的投资潮。它们完美体现了生成艺术的“可控随机性”,艺术家需要多次调整脚本,保证上千位用户铸造时随机得到的作品都独一无二且具有美感。Art Blocks 在 2021 年累计交易额超过 10 亿美元,通过版税获得了超过 2500 万美元的收入。在 2021 年 8 月,它完成了一轮 600 万美元的融资。TRUE Ventures 领投,Galaxy Digital 旗下的 VC Galaxy Interactive 和 Collab Currency 等机构参与投资。

随着市场注意力转移,Art Blocks 和生成艺术 NFT 停止了暴涨,每月交易额也从 21 年 8 月的 5.87 亿美元峰值回落,在 10 月后持续低于 1 亿美元。但是 Art Blocks 已经是公认的蓝筹 NFT,成为了 NFT 指数基金不可缺少的 Portfolio。Erick Calderon 也并不慌张,公司的现金流足够支撑多年,他正在加快招聘工程师和塑造公司文化

围绕着生成艺术还有其他有趣的话题:投机者开始退潮,持有 Art Blocks 的更多是收藏者,他们的 NFT 展示需求还远未被满足;此外直接使用 AI 创造的生成对抗网络则有着在元宇宙中发挥作用的想象力。

01.生成艺术简史

对生成艺术最简单的定义是“使用随机性和计划性相结合的代码创作出的艺术”。在创作过程中,艺术家的“人脑”去找到审美趣味和灵感,“电脑”则规模化地将灵感变成可视的艺术。

比如下面这段代码,它出自 Art Blocks 首席创意官 Jeff Davis 之手:

在被执行后,它可以生成这些和色彩有关的艺术品,而且理论上可以产出无限幅:

Jeff Davis 2021 年的作品Color Studies

这类艺术重要的审美趣味来源于其独特的“可控随机性” ——艺术家往往无法预料代码生成的结果,同一段代码两次运行可能得到非常不同的作品,但他们可以通过控制随机性的“大小和位置”为自己保有一定的控制权。

150 亿美元手工艺电商 Etsy 的联合创始人 Jared Tarbell 的另一重身份是生成艺术家,他这样描述“可控随机性”这一概念:

如果是正常编写的程序,它每次都以相同方式运行。但是生成艺术家定义了一个不同的系统,让结果能够随机化。作为创作者,你会为自己程序(产出的作品)感到惊讶。

在理念上,生成艺术跟整个 20 世纪的艺术潮流是一脉相承的。“抽象艺术之父”康定斯基强调几何图形和抽象元素的美,生成艺术作品在视觉上追求的很大程度上正是这种美。

康定斯基 1923 年的作品《圆圈中的圆圈》

在 1960 年代,生成艺术创作已经开始涌现。这既是机械社会向信息社会转变下的自然演进,也是因为使用计算机进行创作的确有其先进性 —— 计算机能有效处理创作中复杂度和规模的增加。

策展人、艺术评论家 Jason Bailey 在《为什么热爱生成艺术》中介绍了下面这幅作品。随着行数增多,作品内方格的旋转角度和位置随机性增大。使用纸、笔创作时,艺术家需要 1 个小时画出这幅画。如果想将这些方格的数量增多 10 倍,又需要额外的 10 小时。但是对于生成艺术家而言,他们只需微调下代码,计算机就可以迅速生成结果。

Art Blocks:生成艺术的自动售货机

撰文:程天一来源:海外独角兽代码和软件已经占据了我们的生活,...

关于我们

支持iOS|android|windows等平台

  • 用户支持
  • 帮助中心
  • 服务条款
微信二维码
欧 易 (OKX) 数字货币交易平台 Powered by OKX
QR code