复制成功

分享至

主页 > 数字货币 >

近期Web3常见的攻击都有什么特点 项目方如何避免这些问题?

2023.10.16

作者:Beosin安全研究专家Sivan

上一篇文章我们介绍了近期区块链生态中发生的骗局类资金安全问题,包括后门以及貔貅盘。除了这些骗局事件,近期安全事件也对整个区块链生态造成了巨大的影响。

最近发生大量的安全攻击事件,这些事件对于项目方来说具有重大影响。攻击事件的发生主要原因之一是业务逻辑设计不当,其中可能存在漏洞或弱点,被黑客利用进行攻击。另外,价格操控也是导致安全攻击事件的因素之一,黑客可能通过操纵价格或市场行为来实施攻击。

本篇文章我们一起来盘点一下近期常见攻击都有些什么特点,以及项目方如何避免这些问题。

一、业务逻辑设计不当

Pair代币意外销毁

近期因为业务逻辑设计不当发生的安全事件,大多都是由于pair代币余额异常导致的。

一些代币项目,会在业务设计中添加交易手续费或代币通缩的功能,也就是在代币转移过程中,会收取相关比例的手续费或者直接销毁部分转移的代币。这本是一个项目的创收或激励用户持有代币或其他有助于项目发展的业务逻辑,但如果代码设计不够完善,便会出现严重的问题。

例如,在转账过程中,有些项目进行额外代币扣除时,没考虑到pair意外扣除将导致严重后果。该类项目的转账函数逻辑一般是发送方和接收方进行正常的代币转移,并且额外扣除某个地址部分费用,用于手续费或销毁。但额外扣除地址为pair时,会导致pair中其中一个代币余额通过非交易的方式变少,k值异常变化,从而使用少量代币便能兑换出大量另一个代币。

以下列项目代码为例:

该代币合约中存在意外销毁pair余额的问题,当代币转移发起者不是pair合约时,会进行更新池子的操作,该更新池子的方式是将pair的代币余额扣除交易金额的1%,再更新储备量。黑客可以通过调用transfer函数自己给自己转账,反复操作,将会使得pair中的一个代币消耗得极少,最后利用极少代币将pair中大量的价值币兑换出来。

近期Web3常见的攻击都有什么特点 项目方如何避免这些问题?

以下是真实安全事件过程:

首先使用2555枚WBNB兑换了1390亿枚Bamboo代币;

近期Web3常见的攻击都有什么特点 项目方如何避免这些问题?

不断通过transfer将代币发送给自己,导致pair中Bamboo代币异常减小;

近期Web3常见的攻击都有什么特点 项目方如何避免这些问题?

使用139B枚Bamboo代币兑换回2772枚WBNB,完成攻击。

近期Web3常见的攻击都有什么特点 项目方如何避免这些问题?

再以另一个意外销毁pair代币的例子说明一下,如下图代码。合约会判断当前交易类型,如果为2(to地址为pair合约,相当于卖币),合约会记录一个交易量的20%作为销毁数量,后续可以调用goDead()函数将pair中这个累积数量销毁,该功能对稳定币价能起部分作用。

但是合约没考虑到一些特殊情况,例如直接向pair里面转币,这时会使得合约误以为用户是在卖币,这部分币可以通过pair的skim函数全部提取出来。相当于pair没有任何变化,再次调用goDead()函数时,却能使得pair中的代币意外减少,重复操作,便能耗尽pair其中一种代币。

近期Web3常见的攻击都有什么特点 项目方如何避免这些问题?

近期Web3常见的攻击都有什么特点 项目方如何避免这些问题?

以下同样是真实安全事件过程:

不停通过transfer与skim操作,将amountToDead值控制得异常大。

近期Web3常见的攻击都有什么特点 项目方如何避免这些问题?

调用goDead()函数将pair中的代币销毁掉。 

近期Web3常见的攻击都有什么特点 项目方如何避免这些问题?

使用少量代币兑换了大量的USDT。

近期Web3常见的攻击都有什么特点 项目方如何避免这些问题?

总结:

代币的transfer函数一定要认真设计代币转移逻辑,一定要避免pair余额意外扣除的情况,pair余额仅在添加流动性、移除流动性以及交易过程中才能改变,并且改变数量尽量不要大于或小于传入数量,才能保障pair资金健康。

二、价格操控问题

免责声明:数字资产交易涉及重大风险,本资料不应作为投资决策依据,亦不应被解释为从事投资交易的建议。请确保充分了解所涉及的风险并谨慎投资。OKEx学院仅提供信息参考,不构成任何投资建议,用户一切投资行为与本站无关。

加⼊OKEx全球社群

和全球数字资产投资者交流讨论

扫码加入OKEx社群

相关推荐

industry-frontier