往期回顾: 0xffffffff. 前言 北京时间 2020 年 11 月 12 日夜晚。DeFi 聚合器 Akropolis 遭受攻击,黑客通过 Flashloan (闪电贷)+ 重入的攻击方式,盗取了存储在 Akropolis 中价格超过 2,000,000 美元的数字资产。本文将以一笔攻击交易为例,深度解读此次攻击的原理。
0x0. 背景介绍
普通用户将个人的数字资产投入到 Akropolis 中,由 Akropolis 确定投资方向,优化投资策略。Akropolis 获得投资收益之后,将收益按比例分配给投资 Akropolis 的普通用户。以现实中的金融活动举例子,Akropolis 就像是基金,其所投资的 DeFi 项目就是股票,基民购买基金,基金持有股票,获得收益后将收益分配给基民。 0x1. Akropolis 机制 为了便于理解,我们首先简要地介绍一下和此次攻击相关的两个实体合约:Protocol contract和Akropolis contract Protocol: Akropolis: 总体的交互逻辑如图所示: Akropolis.depositfucntion:
用户可以调用deposit函数,通过指定Protocol和 token 以及 token 的 amount,将一定数量的代币存入到和 Akropolis 中,Akropolis 根据用户存入的代币数量给用户返还 Akropolis 的 LP Token。随后使用用户投资的 token 投入到Protocol中。 withdrawfucntion: 0x2. 攻击原理 我们注意到,在Akropolis.deposit函数中,要先计算beforeBalance,然后调用 token 的transferFrom函数,将 token 转到Protocol中,最后计算afterbalance,正常逻辑下这种计算方式是正确的,但是如果攻击者提供的 token 地址是一个恶意地址(即伪造的 token 合约,Akropolis 并没有对 token 地址进行验证),那么在这种情况下,实际有效的 token 并没有转到Protocol账户中,并且Akropolis.deposit没有防止重入的机制。这样就使得攻击者可以利用 1. token 地址未经校验,2.deposit函数没有放重入机制来对 Akropolis 进行攻击。攻击流程图如下: **** 1:
**** 2:
**** 3:
虽然在整个交易中攻击者只给Protocol传进去一笔约 $25k 的 DAI,但是由于重入的机制,导致的第二次deposit之后balanceBefore1没有及时更新,使得 Akropolis 在函数控制流返回到第一次deposit函数中的时候以为攻击者又给Protocol转移了 $25k 的 DAI。从而给用户再一次 mint 出对应的 LP tokens。 Others 总体而言,攻击者通过重入+构造恶意 token 合约的方式,在仅仅花费 $25k DAI 的情况下使得 Akropolis 以为攻击者存入了 $50k DAI,最后取出这 50k DAI,完成攻击,获利 25k DAI。 Step 3 中我们提到了其实balanceAfter2比balanceAfter1小 1,这个原因是在 deposit 的后续操作中会将用户传递进来的 token 注入到Curve的池子之中,而Curve的合约中会检查Curve之中 Token 的余额变化,如果说池子的余额没有变化,那么Curve就会执行revert。所在 fake token 的transferFrom函数中一定要往protocol之中转一笔钱,不过数量不限。 0x3. 总结 由于 Akropolis 并没有对用户传递进来的 token 参数进行校验,加上deposit函数没有防重入,导致攻击者利用伪造的 token contract 重入deposit函数,从而达到偷天换日,鱼目混珠,使用少量的 DAI 换出大量的 DAI 的效果。 BlockSec 团队以核心安全技术驱动,长期关注 DeFi 安全、数字货币反洗钱和基于隐私计算的数字资产存管,为 DApp 项目方提供合约安全和数字资产安全服务。团队发表 20 多篇顶级安全学术论文 (CCS, USENIX Security, S&P),合伙人获得 AMiner 全球最具影响力的安全和隐私学者称号 (2011-2020 排名全球第六). 研究成果获得中央电视台、新华社和海外媒体的报道。独立发现数十个 DeFi 安全漏洞和威胁,获得 2019 年美国美国国立卫生研究院隐私计算比赛 (SGX 赛道) 全球第一名。团队以技术驱动,秉持开放共赢理念,与社区伙伴携手共建安全 DeFi 生态。
—- 编译者/作者:BlockSec 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
[BlockSec DeFi攻击分析系列之三] 偷天换日:深度剖析Akropolis攻击事件
2021-08-03 BlockSec 来源:区块链网络
LOADING...
相关阅读:
- BKEX币客阳光基金守护每一笔合约2021-08-03
- Dfinity应用生态研究分析2021-08-03
- 美国证券交易委员会主席表示他对加密很感兴趣,但不能忽视投资者保2021-08-03
- 新加坡政府发布首份比特币交易所批准函2021-08-03
- [BlockSec DeFi 攻击分析系列之二] 倾囊相送:Sushiswap 手续费被盗2021-08-03