針對本次事件,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 立場無關。 本文內容僅用於資訊分享,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。