20 万美元 UniLend 黑客事件:问题出在哪,DeFi 该如何改进?

中级1/22/2025, 4:23:33 PM
UniLend平台因漏洞遭到攻击,约20万美元(占总价值锁仓TVL的4%)资金被盗。攻击者利用闪电贷存入6000万USDC,篡改了抵押品的计算方式,并利用健康检查环节的合约漏洞,虚增了抵押物的价值,最终提取了60个stETH。问题的根源在于userBalanceOfToken函数的实现缺陷。UniLend已经修复了漏洞,暂停了V2版本的存款,并提供了赏金以追回资金。这起事件突显了DeFi平台在安全方面的脆弱性,也强调了智能合约审计的重要性。

UniLend简介

@UniLend_Finance是一个去中心化的无许可货币市场协议,通过智能合约为用户提供借贷服务。

在UniLend平台上,用户可以将其加密货币作为质押物投入网络,借用其他加密资产。为了确保借贷安全,借贷者通过支付利息来获得资金,而借出者则根据每个区块的复合年化收益率(APY)赚取利息。

UniLend 如何运作

UniLend协议V2主要通过以下三个技术功能来运作:

1、双资产池模型

UniLend为每个ERC20/ERC20兼容的资产对设置了独立的双资产池。这样一来,一个资产的波动不会影响到其他资产,从而增加了安全性和稳定性。用户可以在多个区块链上创建和管理不同的借贷池,涵盖多种资产。

2、供应与借款机制

  • 供应:用户将ERC20代币存入指定池中,并获得代表其独特流动性位置的非同质化代币(NFT)。这些NFT存储了关于提供资产的详细信息,并可根据需要转让或赎回。提供的资产将根据池的使用情况和市场需求赚取可变利息。
  • 借款:借款时,用户需提供过度抵押的加密资产。协议会自动执行抵押比率,并允许通过治理调整。借款利息按区块积累,基于池的使用率来决定,确保借款始终有足够的保障。

3、 利率模型

UniLend采用动态利率模型,通过使用率(U)来设定利率,公式如下:

Ux=借款x借款x+现金x

借款利率:

借款利率x=10%+(Ux×30%)

当使用率越高时,利率就会相应上升,以平衡供需。

  • 供应利率:

供给利率x=借款利率x×Ux×(1−S)

这样一来,供应商可以确保获得持续的回报,同时平台也能保持盈利。

这三大功能共同运作,打造出一个安全、高效且可扩展的去中心化货币市场。

攻击详情分析

2025年1月12日,UniLend协议的一个安全漏洞被攻击者利用,导致UniLend池中约20万美元的资金被盗。攻击者通过操控抵押物的计算,错误评估了用户的健康因子,从而使得攻击者能够在没有足够抵押的情况下提取60个stETH代币。

被盗的资产包括60个stETH代币,攻击者利用协议对用户代币余额的错误计算来实现这一操作。

攻击详细过程

1.漏洞启动

攻击者通过闪电贷启动了攻击,向UniLend池存入了大量的USDC。具体来说,他们存入了6000万USDC,从而大幅增加了他们在池中的抵押物。

闪电贷是一种无需抵押物的借贷方式,借款人在同一笔交易内必须归还借款。通过这一机制,攻击者无需事先拥有资金,就能获得所需的USDC,从而在人为膨胀的抵押物基础上发起攻击。

2. 抵押计算的操控

在存入USDC后,攻击者开始借入stETH代币。协议会根据池中用户的代币余额来计算抵押物的价值。然而,由于实现上的漏洞,协议错误地使用池合约中的当前代币余额来进行计算,而非基于健康因子检查时实际转移的代币数量。结果,用户的代币余额被高估,尤其是在流动性较大的池中。

这一操控的根本原因在于userBalanceOfToken函数。在流动性较大的池中,即使实际的借出份额较少,该函数仍可能返回较高的借出余额。这种高估使得攻击者获得了比实际拥有更多的抵押物,从而能够借出超过其实际抵押物的stETH代币。

3. 赎回基础资产

利用膨胀后的抵押物价值,攻击者继续赎回他们的USDC和stETH。攻击者调用了redeemUnderlying函数,销毁了与其存款相关的LP代币。然而,由于健康因子检查发生在代币转移之前,系统错误地认为攻击者拥有足够的抵押物,允许其提取超出实际应得的代币。这一漏洞使得攻击者能够在没有足够抵押物的情况下提取60个stETH代币,实际上是免费获得了这些代币。

如何防止此类攻击

为了避免类似的攻击,UniLend 应该调整 redeemUnderlying函数中的操作顺序。具体来说,应该在把代币转给用户后再进行健康因子检查。这样,协议可以确保用户的实际代币余额准确反映他们的抵押物情况。

区块链安全至关重要,不能忽视。选择 Three Sigma 来保护您的智能合约和 DeFi 协议,Three Sigma 是区块链审计、智能合约漏洞评估和 Web3 安全领域的可靠合作伙伴。

点击此处, 立即审核您的智能合约

结果

UniLend 这次漏洞攻击造成了约 20 万美元的财务损失,影响了 UniLend 池的资金储备,降低了平台的流动性,可能会影响其他用户的借贷活动。

UniLend 协议回应

在攻击发生后,UniLend 迅速采取了措施修复漏洞,并安抚用户情绪。

他们宣布,将向负责任的人员提供 20% 的奖励,以安全归还资金。

相关地址

攻击交易地址:

攻击者地址:

UnilendV2 核心地址:

免责声明:

  1. 本文转载自【X】。所有版权归原作者所有【@trisigmaxyz】。若对本次转载有异议,请联系 Gate Learn 团队,他们会及时处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. Gate Learn 团队将文章翻译成其他语言。未经允许,禁止复制、分发或抄袭翻译文章。

20 万美元 UniLend 黑客事件:问题出在哪,DeFi 该如何改进?

中级1/22/2025, 4:23:33 PM
UniLend平台因漏洞遭到攻击,约20万美元(占总价值锁仓TVL的4%)资金被盗。攻击者利用闪电贷存入6000万USDC,篡改了抵押品的计算方式,并利用健康检查环节的合约漏洞,虚增了抵押物的价值,最终提取了60个stETH。问题的根源在于userBalanceOfToken函数的实现缺陷。UniLend已经修复了漏洞,暂停了V2版本的存款,并提供了赏金以追回资金。这起事件突显了DeFi平台在安全方面的脆弱性,也强调了智能合约审计的重要性。

UniLend简介

@UniLend_Finance是一个去中心化的无许可货币市场协议,通过智能合约为用户提供借贷服务。

在UniLend平台上,用户可以将其加密货币作为质押物投入网络,借用其他加密资产。为了确保借贷安全,借贷者通过支付利息来获得资金,而借出者则根据每个区块的复合年化收益率(APY)赚取利息。

UniLend 如何运作

UniLend协议V2主要通过以下三个技术功能来运作:

1、双资产池模型

UniLend为每个ERC20/ERC20兼容的资产对设置了独立的双资产池。这样一来,一个资产的波动不会影响到其他资产,从而增加了安全性和稳定性。用户可以在多个区块链上创建和管理不同的借贷池,涵盖多种资产。

2、供应与借款机制

  • 供应:用户将ERC20代币存入指定池中,并获得代表其独特流动性位置的非同质化代币(NFT)。这些NFT存储了关于提供资产的详细信息,并可根据需要转让或赎回。提供的资产将根据池的使用情况和市场需求赚取可变利息。
  • 借款:借款时,用户需提供过度抵押的加密资产。协议会自动执行抵押比率,并允许通过治理调整。借款利息按区块积累,基于池的使用率来决定,确保借款始终有足够的保障。

3、 利率模型

UniLend采用动态利率模型,通过使用率(U)来设定利率,公式如下:

Ux=借款x借款x+现金x

借款利率:

借款利率x=10%+(Ux×30%)

当使用率越高时,利率就会相应上升,以平衡供需。

  • 供应利率:

供给利率x=借款利率x×Ux×(1−S)

这样一来,供应商可以确保获得持续的回报,同时平台也能保持盈利。

这三大功能共同运作,打造出一个安全、高效且可扩展的去中心化货币市场。

攻击详情分析

2025年1月12日,UniLend协议的一个安全漏洞被攻击者利用,导致UniLend池中约20万美元的资金被盗。攻击者通过操控抵押物的计算,错误评估了用户的健康因子,从而使得攻击者能够在没有足够抵押的情况下提取60个stETH代币。

被盗的资产包括60个stETH代币,攻击者利用协议对用户代币余额的错误计算来实现这一操作。

攻击详细过程

1.漏洞启动

攻击者通过闪电贷启动了攻击,向UniLend池存入了大量的USDC。具体来说,他们存入了6000万USDC,从而大幅增加了他们在池中的抵押物。

闪电贷是一种无需抵押物的借贷方式,借款人在同一笔交易内必须归还借款。通过这一机制,攻击者无需事先拥有资金,就能获得所需的USDC,从而在人为膨胀的抵押物基础上发起攻击。

2. 抵押计算的操控

在存入USDC后,攻击者开始借入stETH代币。协议会根据池中用户的代币余额来计算抵押物的价值。然而,由于实现上的漏洞,协议错误地使用池合约中的当前代币余额来进行计算,而非基于健康因子检查时实际转移的代币数量。结果,用户的代币余额被高估,尤其是在流动性较大的池中。

这一操控的根本原因在于userBalanceOfToken函数。在流动性较大的池中,即使实际的借出份额较少,该函数仍可能返回较高的借出余额。这种高估使得攻击者获得了比实际拥有更多的抵押物,从而能够借出超过其实际抵押物的stETH代币。

3. 赎回基础资产

利用膨胀后的抵押物价值,攻击者继续赎回他们的USDC和stETH。攻击者调用了redeemUnderlying函数,销毁了与其存款相关的LP代币。然而,由于健康因子检查发生在代币转移之前,系统错误地认为攻击者拥有足够的抵押物,允许其提取超出实际应得的代币。这一漏洞使得攻击者能够在没有足够抵押物的情况下提取60个stETH代币,实际上是免费获得了这些代币。

如何防止此类攻击

为了避免类似的攻击,UniLend 应该调整 redeemUnderlying函数中的操作顺序。具体来说,应该在把代币转给用户后再进行健康因子检查。这样,协议可以确保用户的实际代币余额准确反映他们的抵押物情况。

区块链安全至关重要,不能忽视。选择 Three Sigma 来保护您的智能合约和 DeFi 协议,Three Sigma 是区块链审计、智能合约漏洞评估和 Web3 安全领域的可靠合作伙伴。

点击此处, 立即审核您的智能合约

结果

UniLend 这次漏洞攻击造成了约 20 万美元的财务损失,影响了 UniLend 池的资金储备,降低了平台的流动性,可能会影响其他用户的借贷活动。

UniLend 协议回应

在攻击发生后,UniLend 迅速采取了措施修复漏洞,并安抚用户情绪。

他们宣布,将向负责任的人员提供 20% 的奖励,以安全归还资金。

相关地址

攻击交易地址:

攻击者地址:

UnilendV2 核心地址:

免责声明:

  1. 本文转载自【X】。所有版权归原作者所有【@trisigmaxyz】。若对本次转载有异议,请联系 Gate Learn 团队,他们会及时处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. Gate Learn 团队将文章翻译成其他语言。未经允许,禁止复制、分发或抄袭翻译文章。
即刻开始交易
注册并交易即可获得
$100
和价值
$5500
理财体验金奖励!
It seems that you are attempting to access our services from a Restricted Location where Gate is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Thailand, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.