故技重施: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@慢霧安全團隊

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

推薦文章

突破傳統預言機:Chaos Labs 發布 Edge,如何保障超 300 億美元交易的安全?

從隱祕中嶄露頭角:Edge Oracle Network 今天,@chaos_labs 推出了 E...

coincaso
17 3天前

mETH協議將迎來爆發:參與Methamorphosis活動,解鎖$COOK空投和重質押收益

mETH協議正在“COOK-ing”。$mETH已經是第四大ETH LST,有50萬枚$ETH被質...

coincaso
21 6天前

Hypernative 榮獲1600 萬美元融資,如何打造 Web3 安全防线

隨着 DeFi 的不斷發展,安全性仍然是該生態系統面臨的重大挑战,每年因安全問題而導致的資產損失高...

coincaso
30 1周前

特朗普強勢入局加密市場!DeFi項目首度曝光,創始團隊引發軒然大波

World Liberty Financial 白皮書中列出的四名團隊成員之前曾在 Dough F...

coincaso
45 1周前

ENA代幣暴跌超80%,算法穩定幣將陷入死亡螺旋?

在加密貨幣的世界裏,算法穩定幣一直是投資者和开發者心中的白月光,它代表着一種理想狀態,即使在最不確...

coincaso
34 2周前

Polymarket獨領風騷,萬字盤點各鏈預測市場現狀

以太坊創始人Vitalik Buterin,近期對公衆對預測市場的普遍誤解進行了深刻闡釋。他堅決地...

coincaso
42 2周前