宇宙链 宇宙链
Ctrl+D收藏宇宙链

Aave经历惊魂一刻,这个漏洞差点酿成一场危机

作者:

时间:1900/1/1 0:00:00

12月3日,知名DeFi借贷协议Aave部署了V2版本,尽管我们并没有被雇佣来查看其代码,但在次日,我们还是对其进行了简单审查。很快,我们就发现了一个影响AaveV1和V2版本合约的漏洞,并报告了该问题。在将我们的分析发送给Aave的一小时内,他们的团队修复了该漏洞,以减轻潜在影响。如果该漏洞被利用,这一问题将破坏Aave,并影响外部DeFi合约中的资金。据悉,有5家不同的安全公司审查了Aave代码库,其中有一些使用了形式化验证。然而,这个漏洞并没有被这些公司注意到。这篇文章描述了这一问题,以及“该漏洞是如何逃过检测”等其它的一些经验教训。此外,我们也在开发一种新的Slither检测器,它可以识别这一漏洞,从而为以太坊社区提高安全性。漏洞

Aave使用了delegatecall代理模式,这一点我们在过去的文章中已经详细讨论过了。简单来看,每个组件被分成了两个合约:包含实现的逻辑合约,包含数据并使用delegatecall与逻辑合约进行交互的代理。在逻辑合约上执行代码时,用户与代理合约进行交互。这是delegatecall代理模式的简化表示:

0x790c开头地址向Aave存入约1850万美元资产并借出1200万枚稳定币:7月5日消息,据Lookonchain监测,0x790c开头巨鲸地址向Aave存入约1850万美元资产,包括8890枚stETH以及18,646枚AAVE,并借出约725.6万枚USDT和505.5万枚USDC。[2023/7/5 22:18:55]

在Aave中,LendingPool是使用delegatecall代理的可升级组件。而我们发现的漏洞依赖于这些合约中的两个功能:可以直接调用逻辑合约的函数,包括初始化函数;借贷池具有其自己的delegatecall功能;初始化可升级合约

这种可升级模式的一个限制是,代理不能依赖逻辑合约的构造函数进行初始化。因此,状态变量和初始设置必须在公共初始化函数中执行。在LendingPool中,初始化函数设置提供者地址:

stETH在Aave内存储量超1亿美元:3月1日消息,stETH 在 Aave 内存储量超 1 亿美元,目前为 108,271,791.63 美元。

此前报道,Aave 已正式支持 stETH 为抵押品。用户可将 stETH 存入 Aave 协议,并将其作为抵押品申请借贷。[2022/3/1 13:30:18]

initializer调节器防止多次调用initialize,它要求满足以下条件为true:

以下:初始化允许在相同交易中多次调用调节器;isConstructor是代理执行代码所需的;revision>lastInitializedRevision允许在合约升级时再次调用初始化函数;虽然它通过代理,预期可正常工作,但是也允许任何人直接在逻辑合约上调用initialize函数。一旦逻辑合约被部署:revision将为0x2(LendingPool.sol#L56);lastInitializedRevision将为0x0;而漏洞是:任何人都可以在LendingPool逻辑合约中设置_addressesProvider。任意delegatecall

Balancer Labs和Aave合作推出Boosted Pools:12月16日消息,自动化投资组合管理器和流动性提供商 Balancer Labs 宣布与领先的 DeFi 借贷协议 Aave 合作正式推出 Boosted Pools。Balancer 指出,新产品旨在通过存入自动做市商 (AMM) 池的代币收益率来解决资本效率降低的问题。根据 Balancer 的说法,交易者通常只利用 AMM 池中可用流动性的 10%,因为交易规模小于可用流动性,而借助 Boosted Pools,通常处于闲置状态的剩余流动性可以被存入借贷协议,从而使流动性获得额外收益。不同级别的 Boosted Pool 可以带来更深的流动性、更有效的流动性整合以及更高的收益率。[2021/12/16 7:42:25]

LendingPool.liquidationCall直接委托调用由_addressProvider返回的地址:

Aave Protocol V2第五次审计已完成:Aave发推表示,SigmaPrime完成对Aave Protocol V2的第五次审计。[2021/2/1 18:38:00]

这允许任何人启动LendingPool逻辑合约,设置受控地址提供者,并执行任意代码,包括selfdestruct。利用漏洞的场景:任何人都可以破坏借贷池逻辑合约。下面是一个简化的视觉表示:

缺乏存在检查

就问题本身而言,已经是很严重了,因为任何人都可以破坏逻辑合约,并阻止代理执行借贷池代码。然而,在代理合约中使用OpenZeppelin会加剧这一问题的严重性。我们在2018年撰写的一篇博客文章中强调,没有代码的合约委托调用能在不执行任何代码的情况下返回成功。尽管我们最初发出警告,但OpenZeppelin并未在其代理合约中修复回退函数:

Aave 创始人:CBDC的作用旨在确保货币不会成为公共商品:Aave创始人兼CEO Stani Kulechov在推特上表示,如果正确地应用了密码属性(没有后门)并且使用了当前的网络(例如以太坊),CBDC将更多地关注加密货币。 但是,CBDC的作用旨在确保货币不会成为公共商品。幸运的是,由于区块链和DeFi势不可挡,因此会有公共商品货币。 因此,全世界的开发人员可以创造各种形式的货币,并确保与过去由政府控制的垄断进行抗争。如果部分或全部DeFi类似的属性(透明度,不变性,非托管,无许可)被应用,CBDC可以改善国有化货币。 可以肯定的是,无论未来持有国有货币还是公共货币,它们都将与自己的属性竞争。[2020/11/16 20:56:44]

如果代理委托调用了一个已破坏的借贷池逻辑合约,则代理将返回成功,而不会执行任何代码。由于Aave可以更新代理以指向另一个逻辑合约,因此这种漏洞利用不会持久。但在可利用此漏洞的时间范围内,任何调用该借贷池的第三方合约,都将表现为某些代码已被执行,但实际却并未执行。这将打破很多外部合约的基本逻辑。受影响的合约

所有AToken:AToken.redeem调用pool.redeemUnderlying的代码库(MyV2CreditDelegation.sol);如果我们发现的问题被利用,则Aave之外的很多合约都会受到各种方式的影响。确定一份完整的名单是困难的,我们没有试图这样做。这一事件凸显了DeFi可组合性的潜在风险,以下是我们找到的一些受影响的合约:DefiSaverv1(AaveSaverProxy.sol)DefiSaverv2(AaveSaverProxyV2.sol)PieDao–pieoven(InterestingRecipe.sol#L66)修复及建议

幸运的是,在我们报告这个漏洞之前,还没有人利用它。Aave对其两个版本的借贷池调用了initialize函数,从而保证了合约的安全:LendingPoolV1:0x017788dded30fdd859d295b90d4e41a19393f423修复时间:2020年12月4日07:34:26PM+UTCLendingPoolV2:0x987115c38fd9fd2aa2c6f1718451d167c13a3186修复时间:2020年12月4日07:53:00PM+UTC长期而言,合约部署者应:在所有逻辑合约中添加一个构造函数以使initialize函数无效;检查delegatecall代理fallback函数中是否存在合约;仔细检查delegatecall陷阱,并使用slither-check-upgradeability;形式化验证合约并不是防弹的

Aave的代码库经过了形式化验证,区块链领域的一个趋势是,人们会认为安全特性是圣杯。用户可能会尝试根据这些特性的存在与否,对各种合约的安全性进行排序。我们认为这是危险的,它会导致错误的安全感。Aave形式化验证报告列出了LendingPool视图函数以及池操作的属性。例如,已验证的属性之一是:

然而,如果逻辑合约遭到破坏,则该属性可能会被破坏。那如何才能对此进行验证?虽然我们无法访问定理证明或所使用的设置,但很可能证明proof没有考虑可升级性,或者prover不支持复杂的合约交互。这在代码验证中是很常见的。你可以通过对整体行为的假设来证明目标组件中的行为,但是在多合约设置中证明属性是具有挑战性和耗时的,因此必须进行权衡。形式化验证技术很棒,但是用户必须意识到它们覆盖范围很小,并且可能会错过攻击媒介。另一方面,自动化工具和人工审查可帮助开发人员以较少的资源来提升代码库的安全性。了解每种解决方案的优点和局限性,对开发人员和用户而言都至关重要。当前的问题就是一个很好的例子,Slither可以在几秒钟内发现这个问题,受过训练的专家可能会很快指出它,而要用安全特性来检测,则需要付出很大的精力。总结

Aave做出了积极反应,并在发现问题后迅速修复了该漏洞。危机避免了,但最近遭受黑客攻击的其他受害者却没有那么幸运。在部署代码并将其暴露于对抗性环境之前,我们建议开发者:查看这里的检查表和训练;将Slither添加到你的持续集成管道中并调查其所有报告;给安全公司适当的时间来审查你的系统;请注意可升级性,至少请审查合约升级反模式,合约迁移的工作方式,以及使用OpenZeppelin的可升级性;我们希望通过分享此信息以及与此问题相关的Slither检测器来防止类似的错误。

标签:AVEAAVEPOOPOOLaave币能涨到多少钱Aave MANAPOOL价格LinkPool

火币交易所热门资讯
稳定币设计依据:各国央行外汇储备的货币构成

编者按:本文来自去中心化金融社区,Odaily星球日报经授权转载。这是一篇我们自己用来学习基础金融理论的文章。当涉及到DeFi的业务,区块链行业最缺乏的就是基础行业知识.

1900/1/1 0:00:00
星球日报 | 比特大陆和解协议将开始执行,MicroStrategy官网将上线“比特币策略”专页

头条 MicroStrategy官网将上线“比特币策略”专页纳斯达克上市公司、商业智能软件巨头MicroStrategy官网将上线“比特币策略”专页.

1900/1/1 0:00:00
1inch空投没领到?抓紧去用这十个产品

作者|秦晓峰编辑|郝方舟出品|Odaily星球日报 辛辛苦苦一整年,年底却发现,炒币赚得钱,还没别人薅羊毛赚得多。今天上午,去中心化协议1inch宣布发币,并对早期用户进行空投。领到空投的,高高兴兴地发文感谢这份圣诞礼物.

1900/1/1 0:00:00
浅谈波卡平行链插槽拍卖对生态和用户的影响

提到波卡平行链插槽的拍卖,不仅币圈小白懵懵懂懂,很多资深投资者也都对其一知半解,毕竟大部分用户更关注投资标的的价格或者价值成长,对于基础概念并不感兴趣,此外,涉及区块链的知识一般都晦涩难懂,想要深入了解,并非易事.

1900/1/1 0:00:00
灰度正在吞噬比特币,未来走向如何?

数字资产管理者灰度投资不是一般的加密货币公司,这家受监管的公司吸引了大量机构资金,仅在上周,该公司持有的比特币就增加了约5.6万枚,灰度比特币信托基金目前管理的比特币总额为111亿美元,这一总额占比特币总供应量的2.7%.

1900/1/1 0:00:00
星球前线 | 美国财政部提出针对自托管钱包的新报告规则

Odaily星球日报译者|念银思唐 摘要: -美国财政部发布了针对自托管加密钱包的拟议新报告规则。-这些规则将影响钱包持有者,同时也会影响与加密钱包交互的公司。-这一消息早已引发了数周的争议.

1900/1/1 0:00:00