老调重弹,浅谈 “通缩型代币” 兼容性问题

By:flush@慢雾安全团队

据慢雾区情报,MDEX的XSquid和HT代币池子中HT代币在没有进行swap的情况下被频繁抽取,慢雾安全团队对此介入分析,并将简要分析分享如下。

攻击核心

本次攻击的核心在于利用XSquid映射通缩型代币的模型,在转账后会发生通缩,自身合约所获取的balanceOf与通过Mdexpair池所获取到的reserve不匹配的问题,使得攻击者可以抽取池中的HT代币。

攻击细节

21Shares推出适用于Lido DAO流动性质押平台的交易产品:金色财经报道,加密交易产品提供商21Shares推出适用于Lido DAO的流动性质押平台交易所交易产品21Shares LidoDAO ETP(LIDO),这是一种无息、开放式证券。每个系列的产品都与一个指数或特定的基础资产LidoDAO相关联。这些产品面向包括法国、德国和葡萄牙在内的22个欧盟国家的公众提供,并在SIXSwiss Exchange、BX Exchange和Stuttgart Exchange等多家交易所进行交易。ETP目前的管理资产(AUM)为100,000美元,而21Shares的总资产管理规模超过11亿美元。21Shares将该产品归类为风险最高的第7类别,标注为“高风险”的几类:保本市场风险、监管风险、二级市场风险、异常事件发生风险、股票价值快速变动风险。[2023/6/12 21:32:10]

由链上分析工具我们可以看到,这笔交易中Mdexpair池最终向攻击者转移了0.003枚WHT代币,而链上的交易记录显示还有很多笔这样的交易与之相同。

OpenSea官网BUG修复,CryptoPunks 24小时交易量已正常显示:1月7日消息,OpenSea 官网“Collection stats”页面数据 BUG 已修复,CryptoPunks 系列 NFT 24 小时交易量已正常显示为 604 ETH。[2023/1/7 11:00:04]

接下来我们仔细观察这笔交易的细节,这是一个XSquid和HT的MdexPair池,在对XSquid进行swap转账前pair合约通过getReserves接口所获取到池子中_reserve0为1010.505640800917497232。但在下一步通过XSquid合约的balanceOf获取pair余额后我们却发现结果为1010.5060773394782,数量上存在明显的差异。

成都链安:whaleswap.finance项目遭受攻击,至少损失5,946 个BUSD和5964个USDT:6月21日消息,据成都链安“链必应-区块链安全态势感知平台”安全舆情监控数据显示,whaleswap.finance项目遭受攻击,成都链安技术团队分析发现原因可能是因为whaleswap.finance Pair合约的K值校验存在问题。每当用户在进行交换时,K值校验中传入的参数量级存在问题,造成K值校验失效。攻击者先通过闪电贷借一笔BSC-USD,之后归还闪电贷时K值校验参数量级为10000^4。而K值校验时采取的参数校验量级为10000^2,导致K校验失效。[2022/6/21 4:41:57]

但是在最后一次更新reserve之后并没有用户向合约中进行转账。于是我们就可以定位到,是在balancOf获取时造成的误差。于是我们开始查看XSquid合约,并定位到balanceOf函数合约的715行。通过函数的一步步跟踪balanceOf。

其中balanceOf调用了tokenFromReflection来获取。而tokenFromReflection函数中传入的是所映射的rAmount.div(currentRate)。currentRate又是由_getRate函数决定的。通过_getRate我们接着跟踪到?_getCurrentSupply函数。

根据一步步的定位我们发现,合约中代币的_tTotal总量是不会发生变化的,最终影响_getCurrentSupply输出结果的是由于_rTotal值的变化而造成的。从合约我们发现XSquid是映射通缩型代币,而在每一次转账时计算_rTotal都会由?_reflectFee产生通缩使得_rTotal值减少,而造成currentRate因此减少,而?rAmount.div(currentRate)增大,最终造成所获取到的balanceOf大于getReserves所获取到的值。

这样就造成了一种假象,使得池子认为外部又多打入了XSquid进来。这时攻击者只需要调用MdexPair合约的swap函数根据上诉计算的差额来抽取代币,或者是调用skim函数直接转走代币。由此,可从池子中抽离这一小部分“多余”而不属于他的HT。对此,我们可以在每次转账最后通过调用sync函数强制准备金与余额匹配同步更新,来避免以上不匹配的问题。

总结

此次抽池的核心问题在于“通缩映射型代币”与项目合约不兼容所导致的。而代币与DeFi项目合约代码不兼容所导致的安全问题已是重复出现的老问题了,慢雾安全团队再次提醒:由于DeFi项目需要多个合约间进行交互,在进行设计时项目方应充分考虑不同合约间交互的兼容性问题,并确保交易对与项?是相互兼容的。

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

银河链

FTT新公链战事:破局之道源于自上而下

摘要 新公链的扩张是一条自上而下的道路:自上层应用传导至底层技术、由生态应用的繁荣提振公链用例爆发的路径。总市值占比的变动体现了比特币原生叙事和无数种新公链叙事的分野,也是群体和机构的新进资金对原教旨和新共识的投票.

酷币下载MonoX:另一种DeFi2.0,资本效率新范式

扒开近期Crypto世界的热点词汇,发现市场已经被三大热词占领:Gamefi、WEB3.0、MEME。以至于曾经的“救世主”DeFi成为了OLDMONEY,但这却又是一级、二级投资者始终无法回避的一个领域.

[0:0ms0-1:421ms