故技重施:Hundred Finance 被黑分析

2022-03-17 00:03:36

2022 年 03 月 16 日,據慢霧區消息,Hundred Finance 存在嚴重漏洞遭到攻擊,黑客獲利約 2,363 ETH,慢霧安全團隊第一時間介入分析,並將結果分享如下:

相關信息

Hundred Finance 是一個去中心化應用程序(DApp),它支持加密貨幣的借貸。它是一種多鏈協議,與 Chainlink 預言機集成,以確保市場健康和穩定,同時專門為長尾資產提供市場。

以下是本次攻擊涉及的相關地址:

攻擊者地址:

https://blockscout.com/xdai/mainnet/address/0xD041Ad9aaE5Cf96b21c3ffcB303a0Cb80779E358

攻擊交易:https://blockscout.com/xdai/mainnet/tx/0x534b84f657883ddc1b66a314e8b392feb35024afdec61dfe8e7c510cfac1a098

攻擊者合約:

https://blockscout.com/xdai/mainnet/address/0xdbf225e3d626ec31f502d435b0f72d82b08e1bdd

https://blockscout.com/xdai/mainnet/address/0xbE8fe2aE087aeCcB1E46EF206368421c9212637B

https://blockscout.com/xdai/mainnet/address/0x09b4f2551e9f39fa021a99463e21d6044656a7b9

https://blockscout.com/xdai/mainnet/address/0xf07ac43678b408ff0c86efff99b8d21af3d38c51

https://blockscout.com/xdai/mainnet/address/0x9c4e6edbc45b16e4378b53cd3e261727e103f633

被攻擊合約:

https://blockscout.com/xdai/mainnet/address/0x243E33aa7f6787154a8E59d3C27a66db3F8818ee husdc

https://blockscout.com/xdai/mainnet/address/0xe4e43864ea18d5e5211352a4b810383460ab7fcc hwbtc

https://blockscout.com/xdai/mainnet/address/0x8e15a22853a0a60a0fbb0d875055a8e66cff0235 heth

https://blockscout.com/xdai/mainnet/address/0x090a00a2de0ea83def700b5e216f87a5d4f394fe hxdai

攻擊核心點

在 Hundred Finance 借貸協議的 borrowFresh 函數中,記账是在代幣轉账之後,但市場中 USDC、wBTC、wETH 使用的是 ERC677 類型 token 合約,它是 ERC20 合約的一個擴展,兼容 ERC20 協議標准。ERC677 在 token 進行轉账之後,會回調到目標合約的 onTokenTransfer 方法,這就使攻擊者構造的惡意合約能進行重入攻擊。

具體細節分析

1. 通過 SushiSwap 閃電貸借出 2,096,607.298 USDC、1,723,293.26 wXDAI、1,650,170.47 wXDAI。


      故技重施:Hundred Finance 被黑分析

2. 攻擊者通過攻擊合約向 USDC 借貸合約抵押 1,200,000 枚 USDC,換取 59,999,789.075 枚 hUSDC。


      故技重施:Hundred Finance 被黑分析

隨後通過借貸合約借走 1,200,000 枚 USDC,但是由於借貸合約記账是在轉账之後,因此攻擊者能在轉账的時候同時开始他的攻擊。


      故技重施:Hundred Finance 被黑分析

因為 XDai 鏈上的 USDC、WBTC、WETH 是有轉账後回調步驟,攻擊者在轉完 USDC 之後再次重入到 WBTC 的借貸合約。同時因為上一步借走 USDC 的數據還未記錄,所以攻擊者又順利的借走 16.17030715 枚 WBTC, 此後再次重入到 WETH 的借貸合約,借走 24.715930916595319168 枚 WETH。


      故技重施:Hundred Finance 被黑分析

3. 接着,攻擊者繼續往 USDC 借貸合約轉入 1,964,607 枚 USDC,拿到 98,230,019.558 枚 hUSDC,然後從池子裏面借出 1,748,500.495 枚 USDC,再重入到 xDai 的借貸合約;

隨後,攻擊者轉入大量的 xDai 換出 234,304,737.048 枚 hxDAI,再借出大量的 xDai,再從 USDC 借貸合約借出 4,128,044.631 枚 USDC 之後,攻擊者再一次往 USDC 借貸合約轉入 1,358,759.278 枚 USDC,又獲得 67,937,725.081枚 hUSDC,接着,繼續從 USDC 的借貸合約借出 1,209,295.758 枚 USDC。


      故技重施:Hundred Finance 被黑分析

4. 最後攻擊者歸還從 SushiSwap 借出來的 xDai 和 USDC,剩余的非法獲利轉到攻擊者账戶上。


      故技重施:Hundred Finance 被黑分析

MistTrack

據慢霧 AML 分析,黑客地址將資金從 XDai 跨鏈到以太坊後,將代幣均兌換為 ETH,且在以太坊上的黑客地址初始資金來源於 Tornado.Cash。


      故技重施:Hundred Finance 被黑分析

最後將獲利的 2,363 ETH 分成 32 次轉入 Tornado.Cash,以躲避追蹤。


      故技重施:Hundred Finance 被黑分析

總結

本次攻擊事件是由於在借貸合約中的 borrowFresh 函數沒有在代幣轉账前進行記账並且使用的 token 是有回調機制造成的,進而導致攻擊者可以在轉账之後重入到其他借貸合約。慢霧安全團隊建議使用非 ERC20 標准的 token 合約時,要注意兼容性,合約記账應在代幣轉账之前做好記錄,遵循 Checks-Effects-Interactions 規則,避免再次出現此類安全問題。

By:Victory@慢霧安全團隊

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

Hyperliquid:從史上最有價值空投到高估值警鐘

毫無疑問,Hyperliquid 是近期加密市場炙手可熱的焦點,它通過一場震撼行業的空投,不僅引發...

coincaso
9 1天前

Arthur Hayes 新文聚焦 | 全球貨幣政策的真相,比特幣接下來何去何從?

作為一名宏觀經濟預測者,我試圖基於公开數據和當前事件,作出能夠指導投資組合資產配置的預測。我喜歡“...

coincaso
13 3天前

Ouroboros DeFi:為什么 Usual Money 被低估了?

前言:Ouroboros DeFi 方法論在Ouroboros DeFi收益基金,我們的投資策略始...

coincaso
12 3天前

WEEX 唯客交易所贊助臺北區塊鏈周 支持更多全球用戶Onboard Web3

第三屆臺北區塊鏈周(Taipei Blockchain Week, TBW)於 12 月 12-1...

coincaso
13 3天前

DeFi 3.0正在到來:下一代去中心化金融的演進

DeFi 3.0正逐步成形,多個前沿項目正在引領這一波技術浪潮。$HYPE、$PENDLE、$IN...

coincaso
15 6天前

生息穩定幣協議分析:安全要點與監管難題

穩定幣在加密行業的交易、支付以及儲蓄中佔據至關重要的地位。截至目前,穩定幣市值約 2000 億美元...

coincaso
23 6天前