“单一价值”——Indexed Finance闪电贷安全事件分析

创宇区块链安全实验室
创宇区块链安全实验室 机构得得号

2021年10月16日 专注构建区块链安全生态,致力于让人类进入安全的区块链世界。

摘要: 10月15日,Indexed Finance遭遇闪电贷袭击,损失超1600万美元!

前⾔

10月15日,知道创宇区块链安全实验室 监测到 以太坊上的 DeFi 协议 Indexed Finance 遭遇闪电贷袭击,损失超1600万美元。

知道创宇区块链安全实验室 第一时间跟踪本次事件并分析。

攻击过程简述

分析攻击交易:0x44aad3b853866468161735496a5d9cc961ce5aa872924c5d78673076b1cd95aa

1.首先使用闪电贷通过Uniswap和ShushiSwap获取启动资金

2.通过借贷的AAVE/COMP/CRV/MKR/SNX代币兑换矿池DEFI5中的UNI代币(合约规定不允许转账超过矿池一半的代币存量以及兑换超过三分之一的代币存量,所以黑客进行了多次兑换) 

3.通过将UNI代币用于添加流动性铸造 DEFI5 LP代币

4.向DEFI5矿池 添加SUSHI 代币

5.燃烧DEFI5 LP代币获得AAVE/COMP/CRV/MKR/SNX/SUSHI代币

6.通过将SUSHI代币用于添加流动性铸造 DEFI5 LP代币

7.燃烧DEFI5 LP代币获得AAVE/COMP/CRV/MKR/SNX/SUSHI代币

8.归还闪电贷并将获利转移


漏洞成因分析

通过攻击简述获取有效信息

1.黑客有意控制矿池中UNI代币总量

2.黑客向矿池中添加了新代币SHSHI

3.黑客通过铸造、燃烧LP代币获利

通过源码分析漏洞成因

1.检查源码发现函数 extrapolatePoolValueFromToken 被用于寻找矿池中第一个初始化且具有权重的代币,据官方解释该函数作用于以该代币描述整个矿池的价值——即如果矿池中有 10 个 UNI,权重为 10%,那么该矿池总价值为 100 UNI。

由此黑客控制矿池中 UNI 代币总量得到解释,该行为是为了控制矿池总价值。

2.检查源码发现函数 setMinimumBalance 和函数 gulp 可以添加新代币并获得极大的权重。

由此黑客向矿池添加新代币 SUSHI 得到解释,该行为是为了获得可控且具有极大权重的代币。

综合分析

  • 合约设计中矿池的总价值被矿池中第一个初始化且具有权重的代币用来描述,该代币总量可被攻击者控制

  • 合约中可添加新代币,新代币可占据极大权重,添加新代币方式可被攻击者控制

  • 合约中的资产可通过铸造、燃烧LP代币控制,铸造LP代币方式可被攻击者控制

    综述该漏洞成因就是用一种代币来描述整个矿池的价值,官方也给出了修改方案:取消该模式替换为用矿池中所有代币余额的组合值来描述。

总结

此次攻击属于对矿池价值的单一描述,很容易被他人操控,开发人员应避免此类事件。知道创宇区块链安全实验室提醒各项目方,合约安全作为直接保障资金的防线需要得到最高的重视,合约审计、风控措施、应急计划等都有必要切实落实。

作者:创宇区块链安全实验室;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章内容问题,请联系微信:chaindd123。

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 创宇区块链安全实验室 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信