以太坊交易 以太坊交易
Ctrl+D收藏以太坊交易
ads

Aave经历了惊魂一刻,这个漏洞几乎成了危机

作者:

时间:2/1/2021 7:20:36 PM

Aave经历了惊魂一刻,这个漏洞几乎成了危机。

注:今天,DeFi安全审计公司Trailofbits公开了Aave贷款协议迄今为止存在的严重漏洞,发现该问题后,Aave迅速修复该漏洞,避免了危机。

原文来自Trail,ofBits:

12月3日,着名的DeFi贷款协议Aave配置了V2版本,尽管我们没有被雇佣来看代码,但第二天我们简单地审查了。很快,我们发现了影响AaveV1和V2版合同的漏洞,报告了这个问题。在把我们的分析发给Aave的一个小时内,他们的团队修复了这个漏洞,减轻了潜在的影响。如果利用这个漏洞,这个问题会破坏Aave,影响外部DeFi合同的资金。

5家不同的安全公司审查了Aave代码库,其中有使用形式验证的公司。但是,这个漏洞并没有被这些公司注意到。这篇文章描述了这个问题和这个漏洞是如何逃脱检查的等其他经验教训。除此之外,我们还在研发一款新型的Slither检测仪,它可以识别这个漏洞,从而为以太网坊社区提高安全性。

Aave使用delegatecall代理模式,这一点我们在过去的文章中已经详细讨论过了。简而言之,每个组件分为两个合同:(1)包括实现的逻辑合同,(2)包括数据,代理使用delegatecall与逻辑合同交互。逻辑合同执行代码时,用户与代理合同交流。这是delegatecall代理模式的简化表示

灰度CEO说明天早上会发布好消息。网民推测AAVE或LINK信托在线:1月25日,灰度CEOMichaelsonnenshein推测,第二天早上会带来好消息。一些网民推测灰度或宣布在线AAVE和LINK信托。[2021/1/25:24:26]

在Aave中,LendingPool(LendingPool.sol)是使用delegatecall代理的可升级组件。

我们发现的漏洞依赖于这些合同的两个功能

可直接调用逻辑合同函数,包括初始函数

贷款池具有自己的delegatecall功能

这种升级模式的限制之一是代理商不能依赖逻辑合同的结构函数。因此,状态变量和初始设置必须在公共初始函数中执行。

在LendingPool中,初始函数设置提供者的地址(_addressesProvider):

BiKiETF区域目前在线LTC5L/5S、NEAR3L/3S、AAVE3L/3S交易对象:BiKiteTF区域目前在线LTC5L/USDT、LTC5S/USDT、NEAR3L/USDT、NEAR3S/USDT、AAVE3L/USDT、AAVE3S/USDT

BiKi发表了ETF5L/5S,即锚定目标的5倍以上和5倍空出某种数字资产的指数基金,现在BTC5L/5S、ETH5L/5S、BCH5L/5S、XRP5L/5S、LTC5L/5S、BSV5L/5S等主流货币和Defi人气货币,与杠杆相比,无需贷款,操作简单,无爆仓、无保证金等特点。[2021/1/18:26:18]

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

以下内容:

初始化允许在同一交易中多次调用调节器

isConstructor()代理执行代码所需

revision>lastinitializedRevision允许在合同升级时再次调用初始功能

AaveMarketConsultantlithli:V2版主页在线不是终点,Aave给用户带来更多惊喜,12月07日晚,Gate.io主办的直播采访节目《酒局货币去》邀请AaveMarketConsultantlithlith:最近的直播共享。直播期间LilithLi与Gate.io合作伙伴酒就AavelV2版主网进行了探讨和交流。LilithLi表示,这次AaveV2版的主要网络在抵押品贷款、闪电贷款、gas费等方面进行了新的升级,用户可以省去复杂的多次交易过程,直接用抵押品资产偿还的闪电贷款也可以批量完成,大幅度提高效率LilithLi指出,本次AaveV2版的主要在线不是终点,接下来将向用户提供更多精彩的活动,期待给用户带来更好的服务体验。详情请单击原文链接。[2020/12/714:30:17]

通过代理,预计会正常工作,但(3)也允许任何人直接在逻辑合同中调用initialize函数。逻辑合同一旦部署:

revision为0x2(LendingPool.sol#L56)

lastinitializedRevision为0x0

Aave新建议支持DMG成为抵押代币资产:据官方消息,DeFi货币市场协议DMM去中心化自治组织DMMTDAO联合创始人Corey向DeFi贷款协议Aave提出新建议,Aave支持DMG作为抵押代币资产。[2020/12/614:08:32]

脆弱性是,任何人都可以在LendingPool逻辑合同中设置_addressesProvider。

LendingPool.liquidationCall直接委托调用的地址:

允许任何人启动LendingPool逻辑合同,设置控制地址提供者,执行任意代码,包括selfdestruct。

利用漏洞的场景:任何人都可以破坏贷款池的逻辑合同。以下是简化的视觉表示

就问题本身而言,任何人都可以破坏逻辑合同,阻止代理人执行贷款池代码。

火币开放AAVE/USDT仓库杠杆交易:刚才,官方公告称火币全球站开放AAVE/USDT仓库杠杆交易。[2020/11/1921:19:21]

但是,在代理合同中使用OpenZeppelin会加剧这个问题的严重性。我们在2018年写的博客文章中强调,没有代码的合同委托调用(delegatecall)不执行任何代码就能恢复成功。我们最初发出警告,但OpenZeppelin没有在其代理合同中修复退货函数

代理人委托调用被破坏的贷款池逻辑合同,代理人不执行任何代码就会成功。

Aave可以更新代理商,指向另一个逻辑合同,因此这个漏洞的利用不会持续。但是,在可以利用这个脆弱性的时间范围内,调用这个贷款池的第三者合同,虽然有些代码被执行,但实际上没有被执行。这将打破许多外部合同的基本逻辑。

所有AToken(AToken):AToken.redeem调用pool.redemUnderlying(AToken.sol#L255-L260)。因为调用什么都不做,所以用户不接受基础资产就会烧掉AToken

WETHGateway(WETHGateway.sol#L103-L111):存款会存入网关,随后任何人都可以盗取存款资产;

基于Aave信用委托v2(MyV2)的代码库(MyV2CreditDelegation.sol)

如果我们发现的问题被利用,Aave以外的许多合同将受到各种方式的影响。很难确定完整的名单。我们没有试图这样做。该事件强调了DeFi组合的潜在风险,以下是我们发现的一些受影响的合同

DefiSaverv1(AaveSaverProxy.sol)

DefiSaverv2(AaveSaverProxyV2.sol)

PieDao-pieven(InterestingRecipe.sol#L66)

幸运的是,在我们报告这个漏洞之前,没有人利用它。Aave向两个版本的贷款池调用了initialize函数,保证了合同的安全

LendingPooltV1:0x017788ded30fd859d295b90d41a19393f423修复时间:2020年12月4日0734:26pmUTC。

LendingPool.V2:0x987115c38fd9fd2aa2c6fd1718451d1677186。修复时间:2020年12月4日0753:00PMUTC。

从长远来看,合同部署者应该:

在所有逻辑合同中添加结构函数,使initialize函数无效

检查delegatecall代理fallback函数中是否有合同

仔细检查delegatecall陷阱,使用slither-check-upgradeability

Aave的代码库经过形式化验证,块链领域的趋势之一是安全特性被认为是圣杯。用户可能会根据这些特性的存在,尝试排序各种合同的安全性。我们认为这很危险,会导致错误的安全感。

Aave形式化验证报告显示,LendingPool视图函数(例如,无副作用)和池操作(例如,操作成功后返回true,不返回)的属性。例如,验证的属性之一是:

但是,如果逻辑合同被破坏,属性可能会被破坏。如何验证这一点?虽然不能访问定理证明书和使用的设定,但是proof没有考虑升级性,或者prover不支持复杂的契约交流的可能性很高。

这在代码验证中很常见。可以通过假设整体行为来证明目标组件中的行为,但在多合同设置中证明属性具有挑战性和时间,必须进行权衡。

形式化验证技术很棒,但用户必须意识到复盖范围很小,有可能错过攻击媒体。另一方面,自动化工具和人工审查有助于开发人员以较少的资源提高代码库的安全性。了解每一种解决方案的优势和局限性,对于开发商和用户来说都是至关重要的。现在的问题是个好例子,Slither可以在几秒钟内发现这个问题,接受训练的专家可能会立即指出,但是用安全特性检查需要很大的能量。

Aave积极反应,发现问题后迅速修复该漏洞。虽然避免了危机,但是最近被黑客攻击的其他受害者并没有那么幸运。在配置代码并暴露在对抗环境之前,我们建议开发者:

看这里的检查表和训练

将Slither添加到您的持续集成管道中,并查询其所有报告;

给安全公司适当的时间审查系统

请注意升级性。至少请审查合同升级的反模式、合同转移的工作方式和OpenZeppelin的升级性

我们希望通过分享这个信息和与这个问题相关的Slither检测器来防止类似的错误。

注:今天,DeFi安全审计公司Trailofbits公开了Aave贷款协议迄今为止存在的严重漏洞,发现该问题后,Aave迅速修复该漏洞,避免了危机。

原文来自Trail,ofBits:

revision。

标签:

火币热门资讯
如何用TEE构建加密货币网络?

如何用TEE构建加密货币网络? 本文是《块链技术手册》系列的第二篇,目标是让读者知道链是如何构建的,也能理解加密货币项目的网络结构。 第二个选题之所以选择TEE,是因为TEE是非块链领域的硬件,是我们生活中不知道的硬件,比如英特尔2015年以后的CPU有TEE。

2/1/2021 7:21:54 PM
技术周刊|GavinWood发表了波卡平行链的在线顺序

技术周刊|GavinWood发表了波卡平行链的在线顺序。 本周的技术周刊包括以太网、波卡和Filecoin三个网络的技术新闻。 以太网坊月活跃开发人员数在3年内增加了215% 加密货币风险投资公司Electric、Capital发布开发人员报告,数据显示,截至10月底以太网坊月活跃开发人员数为2325人,比2017年同期的738人增加了215%。

2/1/2021 7:21:22 PM
解密动态成员的许多签名如何确认共识

解密动态成员的许多签名如何确认共识。 注:本文已于2015年3月大量修改。旧版本可以在那里。 https://download.wpsoftware.net/bitcoin/dold-pos.pdf找到。 2009年,中本聪创造了比特币[Nak09]。比特币是网络货币系统,可以实现点对点的数字货币转账。

2/1/2021 7:21:01 PM
Aave经历了惊魂一刻,这个漏洞几乎成了危机

Aave经历了惊魂一刻,这个漏洞几乎成了危机。 注:今天,DeFi安全审计公司Trailofbits公开了Aave贷款协议迄今为止存在的严重漏洞,发现该问题后,Aave迅速修复该漏洞,避免了危机。 原文来自Trail,ofBits: 12月3日,着名的DeFi贷款协议Aave配置了V2版本,尽管我们没有被雇佣来看代码,但第二天我们简单地审查了。

2/1/2021 7:20:36 PM
以太网坊如何完成从1到2的转变?

以太网坊如何完成从1到2的转变? 原文标题:介绍|eth1->eth2。 编辑注:本文是Vitalik于骁2020年。10月19日,在以太网研究者论坛上发表的帖子建议将他设想的Eth1列表转换成单片信标链的子系统过程,说明开发者和用户对这个过程有什么感觉。确切地说,这不是针对Eth1的提案。

2/1/2021 7:20:13 PM
存储状态引起的惨案Cover协议被黑色简单分析

存储状态引起的惨案Cover协议被黑色简单分析。 by:kong@慢速安全队。 慢雾区信息显示,2020年,12月29日,Cover谈判价格暴跌。慢雾安全队首先跟进相关事件进行分析,分析简化过程如下。

2/1/2021 7:19:47 PM
技术周刊|以太网广场扩张方案Optimism计划于1月15日开始主网软件

技术周刊|以太网广场扩张方案Optimism计划于1月15日开始主网软件。 本周的技术周刊包括以太网、波卡、Filecoin和BSN的技术新闻。 以太网坊2.0当铺地址馀额超过220万张。 欧科云链OKLink数据显示,目前以太网广场2.0存款合同地址已收到2200450.0首ETH,质量超过220万张。

2/1/2021 7:19:33 PM
ads