宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > 币安下载 > 正文

BlockSec DeFi攻击分析系列之三偷天换日:深度剖析Akropolis攻击事件-ODAILY

作者:

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

去中心化金融(DeFi)作为区块链生态当红项目形态,其安全尤为重要。从去年至今,发生了几十起安全事件。

BlockSec作为长期关注DeFi安全的研究团队(https://blocksecteam.com),独立发现了多起DeFi安全事件,研究成果发布在顶级安全会议中(包括USENIXSecurity,CCS和Blackhat)。在接下来的一段时间里,我们将系统性分析DeFi安全事件,剖析安全事件背后的根本原因

往期回顾:(1)我为自己代言:ChainSwap攻击事件分析(2)倾囊相送:Sushiswap手续费被盗

0xffffffff.前言

北京时间2020年11月12日夜晚。DeFi聚合器Akropolis遭受攻击,黑客通过Flashloan+重入的攻击方式,盗取了存储在Akropolis中价格超过2,000,000美元的数字资产。本文将以一笔攻击交易为例,深度解读此次攻击的原理。

时间:Nov-12-202012:04:02PM+UTC#11242695

阅读建议:

如果您刚刚接触DeFi(Ethereum),可以从头看器,但是文章比较长,看不下去记得点个关注再走。

如果您对Akropolis等DeFi聚合器项目比较了解,可以直接从「0x2攻击分析」开始。

0x0.背景介绍

Fireblocks与支付巨头FIS合作为机构级用户提供加密入口:金色财经消息,机构加密托管提供商Fireblocks宣布与支付巨头FIS合作,前者将为FIS的6400个机构级用户提供访问大型加密交易平台、流动性提供者、借贷服务商和DeFi应用程序的入口。(CoinDesk)[2022/4/13 14:22:36]

2020年可谓是去中心化金融的元年。随着DeFi生态的不断发展,越来越多的DeFi项目上线以太坊。普通用户可以选择自己喜欢的DeFi项目进行投资以获得收益。但是随着DeFi市场的急剧扩张,普通用户面临的一个问题就是在众多DeFi项目中如何选择投资的目标,他们需要有人来帮助他们来进行投资。在这种情况下,一系列资产托管平台、投资组合平台应需而生。Akropolis就是众多资产托管平台中的一个:

普通用户将个人的数字资产投入到Akropolis中,由Akropolis确定投资方向,优化投资策略。Akropolis获得投资收益之后,将收益按比例分配给投资Akropolis的普通用户。以现实中的金融活动举例子,Akropolis就像是基金,其所投资的DeFi项目就是股票,基民购买基金,基金持有股票,获得收益后将收益分配给基民。

0x1.Akropolis机制

为了便于理解,我们首先简要地介绍一下和此次攻击相关的两个实体合约:Protocolcontract和Akropoliscontract

Protocol:Protocol可以简单地理解为:用户将手中的token投资到Protocol中,获得Protocol的份额,等到将来Protocol中的资产升值了,那么用户便可以从Protocol获取到一定的收益

Akropolis:之前我们讲过,由于ETH上的DeFi项目太多了,如果用户要投资多个项目,要么不知如何抉择,要么操作难度比较大,所以Akropolis扮演了一个投资聚合器的角色:Akropolis绑定了多个DeFi投资项目,用户可以很方便地通过Akropolis使用手里的token进行投资:用户只需要简单的调用Akropolis的函数,指定想要投资的protocol,那么Akropolis就会去帮你在不同的protocol中完成投资。

报告:Block.one旗下加密货币交易所Bullish涉嫌内幕操纵:9月4日消息,来自法务金融分析公司IntegraFEC的报告显示,EOS母公司Block.one在ICO期间存在一系列可疑交易,故意推动了EOS的价格,诱使其他人购买ICO代币。如果调查结果属实,这将违反美国1933年的证券法和1934年的交易法。在2017年和2018年的11个月里,一家鲜为人知的软件制造商Block.one为一种新的加密货币EOS进行了首次代币发行,筹集了超过40亿美元,几乎比此前任何其他ICO都多。2019年,美国证券交易委员会因未注册ICO而对Block.one处以2400万美元的罚款。2020年,EOS代币持有者去年起诉Block.one,称此次出售为“欺诈计划”,并声称该公司违反了证券法。(beincrypto)[2021/9/4 23:00:43]

总体的交互逻辑如图所示:

Akropolis提供了两个外部接口:functiondeposit(address_protocol,addressmemory_tokens,uint256memory_dnAmounts)和functionwithdraw(address_protocol,addresstoken,uint256dnAmount,uint256maxNAmount)

Akropolis.depositfucntion:deposit函数的功能是:

用户调用deposit。

Akropolis先计算Protocol中有多少的token:nBalanceBefore。

BlockFi CEO:监管机构的兴趣对加密生态系统有利:BlockFi首席执行官Zac Prince同意美国参议员Elizabeth Warren的观点,即加密行业存在很多噪音。不过,他预计法规带来的清晰度将对生态系统产生积极影响。 普林斯将监管机构对加密货币的兴趣描述为该技术的自然演变,他表示,像周三参议院银行委员会听证会这样的讨论对加密行业来说总体上是非常积极的趋势。他说,穿过树林很容易错过森林,并强调加密货币是一种为数百万人创造了大量财富的资产类别。“它是过去十年中七年来表现最好的资产类别,”他说。普林斯指出,加密行业正在全面创造许多新工作岗位,并表示,“这是我们希望在美国继续发生的事情。”[2021/6/11 23:31:17]

Akropolis将用户的token转入到Protocol中。

Akropolis再计算protocol中token的数量:nBalanceAfter。

得到用户投资的数量:nDeposit=nBalanceAfter-nBalanceBefore。

通过用户投资的数量计算得到用户投资份额。

Akropolis.depositToProtocol函数:

Blockstream首席执行官:比特币不需要大量衍生项目:金色财经报道,Blockstream首席执行官Adam Back认为,比特币就足够了,不需要大量的衍生项目。他指出,创新者应该专注于比特币,因为比特币是模块化的,人们可使用它构建任何想要的东西,比特币是用于互联网的电子现金。此外,Back表示,中本聪不该公开自己的身份,这是不明智的。然而,Back认为,即使中本聪回来,也无法控制比特币的发展,比特币的去中心化程度足以拒绝中本聪的观点。[2020/8/12]

Akropolis.distributeYieldInternal函数和Akropolis.updateProtocolBalance函数:

Protocol.normalizedBalance函数:

注意,Protocol.normalizedBalance中的_registeredTokens=。deposit函数中使用到的distributeYieldInternal函数和updateprotocolBalance函数的功能都是查询当前Protocol函数中所有代币的余额,注意这里面normalizedBalance的意思是对余额归一化处理。

Block.one发文回顾近期EOSIO版本更新:Block.one近日发布EOSIO版本最近更新回顾,并表示将在发布最新版本的同时,对早期版本进行各种 Bug修复和稳定性更新补丁。

1. EOSIO-explorer v1.2.0:2020年5月5日,发布eosio-explorer v1.2.0,并将其更新为EOSIO v 2.0.5。

2. EOSIO v 2.0.5:2020年4月21日,发布EOSIO v 2.0.5。此版本中的更新包括安全性,稳定性和其他更改。

3. EOSIO-swift v0.4.0:2020年4月14日,发布 eosio-swift v0.4.0。

4. Elemental Battles(元素之战):2020年4月27日,发布Elemental Battles v1.1.12,并将其更新为 EOSIO v 2.0.5。(MEET.ONE)[2020/6/18]

用户可以调用deposit函数,通过指定Protocol和token以及token的amount,将一定数量的代币存入到和Akropolis中,Akropolis根据用户存入的代币数量给用户返还Akropolis的LPToken。随后使用用户投资的token投入到Protocol中。

withdrawfucntion:

用户通过调用withdraw函数,取出之前通过deposit函数存入的token,获取利息。

0x2.攻击原理

我们注意到,在Akropolis.deposit函数中,要先计算beforeBalance,然后调用token的transferFrom函数,将token转到Protocol中,最后计算afterbalance,正常逻辑下这种计算方式是正确的,但是如果攻击者提供的token地址是一个恶意地址,那么在这种情况下,实际有效的token并没有转到Protocol账户中,并且Akropolis.deposit没有防止重入的机制。这样就使得攻击者可以利用1.token地址未经校验,2.deposit函数没有放重入机制来对Akropolis进行攻击。攻击流程图如下:

STEP1:

攻击者首先调用Akropolis.deposit函数,传递的token地址参数是一个恶意合约地址。函数内部首先计算balanceBefore1,然后由于攻击者传递进来的token合约地址是攻击者伪造的faketoken,所以Akropolis紧接着调用了fakeToken.transferFrom函数。

STEP2:

在fakeToken.transferFrom函数中,该合约再次调用Akropolis.deposit,传递的token地址就是真实的DAI的地址,所以在第二次调用deposit的逻辑是一个正常逻辑:攻击者存入一笔DAI,然后Akropolis根据balanceAfter2-balanceBefore2为攻击者mint出对应的LPtoken。注意:这里面balanceBefore2=balanceBefore1。

STEP3:

在step2结束后,交易控制流返回到第一次的deposit之中,注意:这时候Akropolis计算了balanceAfter1并且balanceAfter1=balanceAfter2,然后根据step1中的balanceBefore1计算出balance之差,再一次给攻击者mint出LPtokens。

虽然在整个交易中攻击者只给Protocol传进去一笔约$25k的DAI,但是由于重入的机制,导致的第二次deposit之后balanceBefore1没有及时更新,使得Akropolis在函数控制流返回到第一次deposit函数中的时候以为攻击者又给Protocol转移了$25k的DAI。从而给用户再一次mint出对应的LPtokens。

Others

总体而言,攻击者通过重入+构造恶意token合约的方式,在仅仅花费$25kDAI的情况下使得Akropolis以为攻击者存入了$50kDAI,最后取出这50kDAI,完成攻击,获利25kDAI。

Step3中我们提到了其实balanceAfter2比balanceAfter1小1,这个原因是在deposit的后续操作中会将用户传递进来的token注入到Curve的池子之中,而Curve的合约中会检查Curve之中Token的余额变化,如果说池子的余额没有变化,那么Curve就会执行revert。所在faketoken的transferFrom函数中一定要往protocol之中转一笔钱,不过数量不限。

可以看出在faketoken的transferFrom函数中攻击者向Protocol转了1个DAI。

0x3.总结

由于Akropolis并没有对用户传递进来的token参数进行校验,加上deposit函数没有防重入,导致攻击者利用伪造的tokencontract重入deposit函数,从而达到偷天换日,鱼目混珠,使用少量的DAI换出大量的DAI的效果。

BlockSec团队以核心安全技术驱动,长期关注DeFi安全、数字货币反和基于隐私计算的数字资产存管,为DApp项目方提供合约安全和数字资产安全服务。团队发表20多篇顶级安全学术论文(CCS,USENIXSecurity,S&P),合伙人获得AMiner全球最具影响力的安全和隐私学者称号(2011-2020排名全球第六).研究成果获得中央电视台、新华社和海外媒体的报道。独立发现数十个DeFi安全漏洞和威胁,获得2019年美国美国国立卫生研究院隐私计算比赛(SGX赛道)全球第一名。团队以技术驱动,秉持开放共赢理念,与社区伙伴携手共建安全DeFi生态。

https://www.blocksecteam.com/

contact@blocksecteam.com

标签:LISAKROPOLIPOLISLIS价格AkromaPOLI币atlas币和polis币

币安下载热门资讯
【Deribit期权市场播报】0805——ETH上涨-ODAILY

今天收录于话题 #每日期权播报播报数据由Greeks.live格致数据实验室和Deribit官网提供。以太坊涨势强劲,一举突破2700美元,目前已经接近519回调后的波动区间上限,本轮反弹已有50%有余,各期限IV上浮至100%上方.

1900/1/1 0:00:00
大盘重回四万六,一众狗币们还会回来吗?-ODAILY

2021年上半年,动物币的火爆令人印象深刻,当时SHIB的价格已经从4月初的0.00000006美元飙升至的0.00004美元,现在又至0.000007;LBank也是首批引入狗币和SHIB的平台之一,那么.

1900/1/1 0:00:00
如何评估权益NFT化CHAIR平台的参与价值?-ODAILY

时至今日,全球经济仍然笼罩在新冠疫情的阴霾之下,各国央行开动印钞机对抗疫情,美元持续疲软,传统金融世界都在寻求“避险资产”,不被单一国家控制的去中心化数字化资产或许成为最好的投资品种,开始真正被主流金融所认可、接受和持有.

1900/1/1 0:00:00
数字经济时代下,区块链如何助力数字产业发展?-ODAILY

随着数字经济的发展,区块链作为新型分布式数据库,在推动相关行业的数字化转型进程、促使经济社会发生深刻变革中发挥着至关重要的作用.

1900/1/1 0:00:00
Zignaly奖励即将于8月上线,Zignaly平台上持有ZIG会定期获得奖励-ODAILY

自2021年4月推出以来,Zignaly一直致力于让ZIG成为平台不可或缺的一部分,并通过增加使用场景来给ZIG赋能。算上之前宣布过的基于NFT的保险协议,ZIG的使用场景将不断扩张.

1900/1/1 0:00:00
BlockSec DeFi攻击分析系列之一我为自己代言:ChainSwap攻击事件分析-ODAILY

去中心化金融(DeFi)作为区块链生态当红项目形态,其安全尤为重要。从去年至今,发生了几十起安全事件.

1900/1/1 0:00:00