原文标题:《16 万美元资产被盗竟是乌龙事件? | Yeld.finance“闪电贷攻击”事件简析》 事件概览北京时间 2021 年 2 月 27 日, 【链必安-区块链安全态势感知平台(Beosin-OSINT)】 舆情监测到,DeFi 知名项目 Yeld.finance 官方发出通告,表示该项目的 DAI 池遭受到闪电贷攻击,原文链接如下: https://yeldf.medium.com/the-yeld-dai-earn-vault-has-been-hacked-93f27d475b1b 成都链安(Beosin)安全团队第一时间介入响应,对原文中所提及的交易 (0x57b378f8d20d3945ab40cd62aa24063f375bcfc5693c2e788dc193ffa1a5cc3a) 进行分析。经分析后发现,该笔交易为 Yeld.finance 项目自身的策略机制 而导致的资金转移,与 闪电贷攻击 无关。闪电贷攻击表示不背这个锅。 事件分析**图 1 交易信息 如图 1 所示,该笔交易是名为 0xf0f225e0 的用户,调用了 0xe780cab7ca8014543f194fc431e6bf7dc5c16762 合约的 deposit 函数 。经确认,0xef80cab7 合约正是项目方的 DAI 池。该笔交易一共产生了 6 笔 代币转移,分别用 T1 到 T6 表示。那么,这些 代币转移 究竟是什么操作导致的呢?下面通过代码进行分析: 图 2 deposit 函数源代码 很明显,第 538 行代码,产生导致了序号为 T1 的代币转移,将 token (即 DAI)转移到 yDAI 合约。这是一笔普通的代币转账,表示用户存入了 9,377 DAI 到 yDAI 合约。 第 541-553 行代码,是 yDAI 合约用于计算用户存入的 DAI 应返回给用户多少 yDAI,并在第 554 行进行铸币,对应序号为 T2 的代币转账,表示 yDAI 合约向用户铸了 9,306 yDAI 。 然后进入第 555 行的 rebalance 函数 ,分析该函数的逻辑。 图 3 rebalance 函数源码 图 4 recommend 函数 第 732 行代码会计算 newProvider,该函数会调用 recommend 函数 (如图 4 所示),recommend 函数会调用 IEarnAPRWithPool 合约查询 4 个 Defi 项目 DYDX,COMPOUND,AAVE,FULCRUM 中,年利率 (APR) 最高的项目,查询结果如图 5 所示: (责任编辑:admin) |