NBS:Hundred 与 Agave 闪电贷攻击事件分析

1.前言

北京时间 3 月 15 日晚,知道创宇区块链安全实验室 监测到 Gnosis 链上的借贷类协议 Hundred Finance 与 Agave 均遭遇了闪电贷袭击,包括 AAVE 的分支 Agave 和 Compound 的分支 Hundred Finance 。协议损失超 1100 万美元。目前 项目方已暂停其数百个市场。

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

对冲基金Hunting Hill启动数字资产子公司Hunting Hill Digital:金色财经报道,对冲基金 Hunting Hill Global Capital 启动数字资产子公司 Hunting Hill Digital。知情人士表示,其首款产品将为 Crypto 25 Fund,最初管理的资产规模为 2000 万至 2500 万美元,该产品的策略将专注于按市值、流动性和性能排名前 25 位的加密货币。

此前报道,Genesis 前高管 Matt Ballensweig 曾在去年 12 月中旬向一位潜在投资者表示,其筹划的名为 Hunting Hill Digital 的基金已经以 3000 万美元的投后估值从 Bessemer Venture Partners 融资 250 万美元,并正在另外筹集 500 万美元。[2023/5/24 22:15:10]

Hundred Finance被攻击 tx:

“特朗普概念股”Phunware公司接受比特币用于购买Lyte电竞PC:市场消息:“特朗普概念股”Phunware(PHUN.O)公司现在接受比特币用于购买Lyte电竞PC。(金十)[2021/10/29 6:20:16]

0x534b84f657883ddc1b66a314e8b392feb35024afdec61dfe8e7c510cfac1a098

攻击合约:0xdbf225e3d626ec31f502d435b0f72d82b08e1bdd

攻击地址: 0xd041ad9aae5cf96b21c3ffcb303a0cb80779e358

攻击后跨链匿名化:https://etherscan.io/txs?a=0xd041ad9aae5cf96b21c3ffcb303a0cb80779e358

矿工Wang Chun:DeFi用户每天都在支付巨额费用:矿工Wang Chun(F2Pool)今日在推特表示,DeFi用户每天都在支付巨额费用,而且他们要给矿工,挖矿对他们来说一直是一个神话。反之亦然。这是ETH社区的眼泪。[2021/5/29 22:55:07]

Agave被攻击tx:

0xa262141abcf7c127b88b4042aee8bf601f4f3372c9471dbd75cb54e76524f18e

攻击合约:0xF98169301B06e906AF7f9b719204AA10D1F160d6

攻击地址: 0x0a16a85be44627c10cee75db06b169c7bc76de2c

攻击后跨链匿名化:https://etherscan.io/txs?a=0x0a16a85be44627c10cee75db06b169c7bc76de2c

动态 | Brave获选Product Hunt 2019年最佳隐私类产品:知名产品评鉴网站Product Hunt已发布了其2019年“金猫奖“(Golden Kitty)的获奖名单,对23个不同类别的产品进行了评价。在隐私类产品中,区块链浏览器Brave入选并获得第一名。(Coinpost)[2020/1/31]

由于 Hundred Finance 与 Agave 攻击流程与手法类似,因此我们使用 Hundred Finance 进行分析。

Hundred Finance 攻击调用流程

1、攻击者利用合约在三个池子中利用闪电贷借出 WXDAI 和 USDC

动态 | Product Hunt将Binance Academy列为第三大最受欢迎的网站:据bitcoinexchangeguide报道,Y Combinator支持的新产品分享网站Product Hunt将币安教育计划,即Binance Academy列为其榜单上第三大最受欢迎的网站。其他一些排名较高的加密相关产品包括Robinhood的交易工具和Earn.com。[2019/2/19]

2、在 WETH 池子质押借出的部分 USDC

3、利用重入利用一笔质押,超额借出池子中资金

4、重复质押-重入借出步骤,将其他两个池子资产超额借出

5、归还闪电贷

6、获利转移

导致本次问题的根本原因是由于在 Gnosis 链上的官方桥接代币 xDAI 合约中实现了一个对于 to 地址的回调( callAfterTransfer 函数)

合约实现地址:

https://blockscout.com/xdai/mainnet/address/0xf8D1677c8a0c961938bf2f9aDc3F3CFDA759A9d9/contracts

该回调将直接导致重入漏洞的产生,同时由于在 Hundred Finance 团队 fork 的 Compound 版本中没有严格遵循检查-生效-交互(防止重入的另一种方式),进而导致了总借贷量更新晚于重入实现。最终攻击者得以超额借贷。

类似的,对于 Agave 项目方,攻击者利用 liquidateCall 函数内部调用会调用 xDAI 的 callAfterTransfer 方法进行回调,最终导致攻击者能再次进行借贷。

在 Hundred Finance 攻击中攻击者重入的调用路径如下:

在 Agave 攻击中攻击者回调路径(调用 liquidateCall 时内部调用时回调)如下:

此次遭受攻击的两个借贷项目由于错误的引入了存在重入的 token,同时项目方的 fork 的代码没有采用检查-生效-交互模式导致了问题的发生。

我们强调:对于一个优秀的项目的引用必须建立在足够的理解和严谨的开发上,尤其是存在差异化的部分,切忌顾此失彼最终因为一个小的差错导致项目全部的损失。

近期,各类合约漏洞安全事件频发,合约审计、风控措施、应急计划等都有必要切实落实。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金星链

[0:15ms0-0:861ms