Jimbos Protocol损失750万美元:如何防范闪电贷攻击?

 2023-05-29 15:26:13发布 2023-08-30 12:28:02更新

5月28日,Jimbos protocol的JimboController合约遭受黑客攻击,黑客获利约750万美元。

根据官网介绍,Jimbos Protocol 是部署在 Arbitrum “反应集中流动性” 的实验协议,Jimbos Protocol 推出的主要代币 $JIMBO 旨在不同情况下定期重新平衡其协议的流动性,以提高资金利用效率。

本次攻击主要利用了JimboController合约中的漏洞,它允许任意人使用shift函数让合约执行移除和添加流动性操作,使其高位接盘。

截止发文时,被盗资金还未被攻击者转出,4048 枚ETH仍在攻击地址中:

(https://etherscan.io/address/0x5f3591e2921d5c9291f5b224e909ab978a22ba7e)

Jimbos protocol称,他们目前正与安全研究专家通力合作,以把遗失的资金收回来。

这些专家曾协助Euler Finance追回超过2亿美元。同时他还特别强调:倘若攻击者不能归还资金,他们将在下周一下午4点之前与执法部门取得联络。

闪电贷攻击的原理,是利用DeFi协议提供的闪电贷功能,即用户可以在一笔交易中借入和还回任意数量的资金,而无需提供任何抵押或信用。

这样一来,用户就可以利用大量的资金进行套利或者操纵市场,从而获取利润。

如果交易失败或者无法还款,那么整个交易就会被撤销,而不会造成任何损失。

这就给了黑客一个机会,他们可以利用闪电贷借入大量资金,然后在同一笔交易中对DeFi协议进行攻击,并在最后还回资金。

闪电贷攻击并不是一种新的现象,它已经存在了很长时间,并且造成了很多DeFi协议的损失。

 

什么是闪电贷

对于一笔普通贷款,贷方通常想要某种抵押品,以确保拿回自己的本金,另外,借款合同通常需要一段时间才能获批,借款人要在几周、几个月或几年的时间内连本带利偿还贷款。

闪电贷恰好与此相反,资金借出和归还都在几秒钟内完成,借贷瞬间在一个区块链交易空间中发生。

正是因为智能合约的创新性,才能够实现闪电贷,智能合约能够制定借贷条款,并代表借款人使用贷款资金进行即时交易。产生利润的闪电贷通常要收取0.09%的费用。

如果借款人不偿还本金,或者交易没有盈利,闪电贷智能合约中设定的条件就无法满足,交易就会逆转,就像从未发生过一样,资金会返还给贷款人。

所以,至少在理论上,对借贷双方来说,这样风险最小。

总而言之,闪电贷拥有以下三种特点:

1、无需抵押。借方无需提供抵押品,会在数秒之内归还贷款。

2、速度快。借贷发生在同一笔交易中。

3、具有创新性。智能合约设定闪电贷的具体条款,进行借贷。

 

为何闪电贷如此受欢迎?

闪电贷最早是由DeFi前身开源银行Marble于2018年推出。

Marble 宣称“闪电贷可以帮助交易者从 Marble 银行贷款,在一家去DEX(去中心化交易所)中买币, 在另一家 DEX 以较高价格卖出代币,一笔自动化交易就可以让您将套利收益收入囊中。”

闪电贷得益于开创性去中心化借贷平台Aave,于2020年1月进入以太坊网络。

交易员之所以喜欢闪电贷,是因为可以用来从套利机会中获利,比如当一个代币在不同市场中有不同价值。

1%价值差异可能看起来不是很大,但如果用大量闪电贷套利,利润十分可观。迄今为止,Aave处理过最大一笔闪电贷金额达到2亿美元。

一些交易员已经成功利用闪电贷对新代币进行投机,而不必拿自己资金冒险。

而且,闪电贷能够将多个智能合约交易捆绑在一起,可以降低交易费用,单笔费用加起来金额会相当大。

 

常见的闪电贷平台

提到闪电贷,你可能会立刻联想到Aave,这家公司是闪电贷的发明者和领导者。

由于闪电贷的资金本身有低风险的特性,较高的需求立刻涌现了一大批闪电贷平台。提供闪电贷服务的头部平台还有:

Uniswap

一个去中心化的交易平台,提供闪电贷服务。用户可以通过Uniswap借用任何支持的代币,并在同一笔交易中进行兑换、做市、套利等操作。

Compound

一个开源的借贷协议,支持多种数字资产的借贷和借款,提供闪电贷服务。用户可以通过Compound借用任何可用的资产,并在同一笔交易中进行还款、抵押、借款等操作。

MakerDAO

一个去中心化的稳定币平台,支持DAI稳定币的发行和交易,提供闪电贷服务。用户可以通过MakerDAO借用DAI,并在同一笔交易中进行还款、兑换、偿还清算罚金等操作。

dYdX

一个去中心化交易所,提供闪电贷服务和开放式借贷市场。用户可以通过dYdX借用任何可用的资产,并在同一笔交易中进行还款、交易、杠杆等操作。

除此之外,常见的还有Nuo、Fulcrum、bZx、DeFiMoneyMarket、ETHLend等。

这些闪电贷平台在功能上都提供了无抵押、即时借贷的服务,细节上的差异更多的是体现在平台的安全性、用户体验和手续费上。

一个常见的闪电贷操作逻辑有四步,必须在同一个区块中完成:

1.发送交易请求,并上传智能合约

2.向协议发送代币

3.上传的智能合约使用代币交互

4.归还代币给协议

 

为什么闪电贷会成为黑客攻击的工具

之所以会有黑客利用闪电贷来对DeFi平台进行攻击,获取利益,主要有一下两个原因:

1、黑客攻击需要大量的前置资金(例如操纵 Oracle 币价格)。如果你在1000万美元的ETH投资获取为正的投资回报,这可能不算作是套利交易。

2、短期贷款可以最大程度地减少攻击者的污点。

如果你有一个如何以1000万美元的ETH操纵Oracle币的想法,即使个人拥有足够数量的ETH,但可能也不想用自己的资金来冒险。

如果自己的ETH可能沾染污点,交易所有可能会拒绝我的存款,洗钱难度大大增加、有风险。

但如果用闪电贷贷出1000万美元,就没有太多人在意,各方都会有利益,且dYdX的抵押品池不会被认为是有问题的,dYdX的污染在某种程度上消失了。

 

如何防止闪电贷攻击

在DeFi还没有成熟的时间段内,闪电贷攻击仍将持续不断,成为悬在人们头上的一把达摩克利斯之剑。

不同的闪电贷攻击影响的范围也不同,有的可能导致某个看起来毫不相干的DeFi协议暴雷,有的可能波及众多用户。

首先,最直接也最简单是,限制或禁止闪电贷功能,但也是最不现实的方法。

因为闪电贷本身并不是一种恶意的功能,它也可以为用户提供很多有益的服务,比如套利、做市、抵押等。而且,在去中心化的环境下,很难对闪电贷进行限制或禁止,因为用户可以自由地选择使用哪些协议和服务。

其次,增加闪电贷的成本或风险。这是一种比较可行的方法,它可以通过增加闪电贷的手续费、利率、抵押率等方式来实现。这样一来,就可以降低闪电贷的吸引力和可行性,从而减少黑客的动机和机会。

还有,优化智能合约的设计和审计。这是一种最根本也最有效的方法,它要求DeFi协议开发者在设计和编写智能合约时,要考虑到各种可能的攻击场景和漏洞防范和修复。

比如使用assert()强制不变性,小心整数除法的四舍五入,记住Ether可以被强制发送到账户,不要假设合约创建时余额为零,记住链上的数据是公开的,明确标明函数和状态变量的可见性,使Fallback函数尽量简单等。

同时,也要对智能合约进行充分的测试和审计,使用一些自动化的工具和方法来检测和修复可能存在的漏洞。

可以概括为以下6点

1.质押挖矿功能和借贷合约做分离,不要将用户抵押的代币转移到借贷合约或者记录变量做运算。

2.借贷时添加特殊重入锁,借贷时不允许抵押。

3.项目在价格获取时采用多数据源的形式,数据对比后减小价格误差。

4.移除流动性时应当先销毁LP,再进行其它调用。

5.奖励的产生尽量采用隔区块或者时间差的形式,可以有效避免闪电贷攻击。

6.项目逻辑问题是导致黑客利用闪电贷放大套利最常见得情况。因此,项目在上线前要做好安全审计和测试,保证项目安全性。

总的来说,DeFi作为区块链领域的重要创新和应用,在其发展过程中为用户带来了诸多便利和收益。

然而,也正因为其开放、去中心化的设计,DeFi协议常常面临着许多安全风险,而Jimbos Protocol事件则是一个典型的例子。

事实上,网络攻击者往往会利用DeFi平台的资产流动性和短期收益性等特点,进行各种攻击手段,如代码bug、智能合约漏洞等,从而导致用户的资产损失。

为此,有效保障DeFi协议的安全性迫在眉睫,并需要采取针对性的防范和应对策略,才能确保其正常运行并为用户带来可靠的利益。

具体而言,防范DeFi攻击需要从源头入手,包括加强合约审计、规范模块开发、加强社区治理等方面。此外,还需要完善安全机制和保障措施,如智能合约自动化精准检测、多重认证等安全机制,以及社区诚信审核、安全基金等保障措施等。

只有重视DeFi协议的安全性问题并积极采取有效措施加以防范,才能实现其去中心化、开放、透明、公平的理念,为区块链技术的发展和普及做出重要贡献。

推荐阅读