针对本次事件,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 立场无关。本文内容仅用于信息分享,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。