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
理财体验金奖励!