针对本次事件,Beosin 安全团队建议:避免合约的价值计算被外部操控。
封面:Hundred Finance
2023 年 4 月 15 日,据 Beosin-Eagle Eye 态势感知平台消息,Optimism 链上的 Hundred Finance 项目遭受黑客闪电贷攻击,项目方损失超 7 百万美元。据了解,Hundred Finance 是一个去中心化应用程序 (dApp),支持加密货币的借贷,是一种多链协议,在攻击发生之后,其相关代币 HND 也下跌超过 50%。
其实,这不是该项目第一次被攻击,在 2022 年也遭受黑客攻击,区别点是上次黑客是利用重入攻击,这一次黑客却换了另一种方式。跟着 Beosin 安全团队看看黑客是如何攻陷 Hundred Finance 的防线的。
攻击交易
Optimism:
0x15096dc6a59cff26e0bd22eaf7e3a60125dcec687580383488b7b5dd2aceea930x6e9ebcdebbabda04fa9f2e3bc21ea8b2e4fb4bf4f4670cb8483e2f0b2604f451
攻击者地址
0x155da45d374a286d383839b1ef27567a15e67528
攻击合约
0x284abd14f54125064b7bcc3b9be84931fa5c9aac0x978d0ce23869ec666bfde9868a8514f3d2754982
被攻击合约
0x7100cbca885905f922a19006cf7fd5d0e1bbb26c
攻击流程
我们以其中一笔攻击交易进行分析:
0x6e9ebcdebbabda04fa9f2e3bc21ea8b2e4fb4bf4f4670cb8483e2f0b2604f451
1. 攻击者首先使用闪电贷借出 500 个 WBTC,然后调用 redeem 函数赎回之前抵押的 0.3 个 WBTC。
2. 然后攻击合约 1 把 500.3 个 WBTC 发送给攻击合约 2,攻击合约 2 使用其中的 4 个 BTC 铸造 200 个 hWBTC,随后又调用 redeem 函数把这 4 个 BTC 赎回。
这里有个有趣的地方,攻击者可以通过小于 200 个的 hWBTC 赎回之前抵押的 4 个 WBTC,这时候攻击者合约 2 上还剩余极少部分的 hWBTC。
3. 随后攻击合约 2 把 500.3 个 WBTC 发送给 hWBTC 合约,再通过之前剩下的 2 个 hWBTC 借出 1021.91 个 ETH。
4. 最后攻击合约 2 通过使用 1 个 hWBTC,偿还了之前借出的债务,取出了合约中的 500.3 个 WBTC。
5. 后面攻击者也是采用同样攻击手法,来达到获利。
漏洞分析
Beosin 安全团队分析发现本次攻击的主要原因是攻击者可以通过向 hWBTC 合约捐赠大量 WBTC 来操纵 exchangeRate 上涨。更进 getAccountSnapshot 函数,发现 exchangeRateMantissa 的值依靠合约中的 WBTC 的数量。
资金追踪图
Beosin KYT 反洗钱分析平台已对被盗资金进行相关追踪,资金流向图如下图所示。
总结
针对本次事件,Beosin 安全团队建议:1. 避免合约的价值计算被外部操控。2. 项目上线前,强烈建议选择专业的安全审计公司进行全面的安全审计,规避安全风险。
免责声明:作为区块链信息平台,本站所发布文章仅代表作者及嘉宾个人观点,与 Web3Caff 立场无关。本文内容仅用于信息分享,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。