avatar
Rui
關注
Chief eating officer at HashKey Capital, Travel, Foodie, Crypto #Binance GMGN:https://t.co/yKaFrDMkoi Kaito:https://t.co/0RR42Z1YJD
動態
avatar
Rui
05-12
今天,我們一直在跟 @blockaid_ 密切合作,詳細調查昨晚發生的針對 @humafinance v1 協議的漏洞攻擊事件。Blockaid 的事件分析報告非常詳盡(鏈接見第一條回覆),在此不做贅述。 以下是事件 TL;DR 及我們從中學到的關於系統架構和運營的經驗教訓。 👇 TL;DR 攻擊事件: 攻擊者發現了智能合約中的一個漏洞,並從 Polygon 上的三個 v1 老池子中盜取了約 10.1 萬美元的 protocol fee & pool owner fee。 用戶資金: 用戶資金沒有受到任何影響。 風險隔離: 問題出在 Huma EVM v1 合約。與 PST 及 Huma 在 Solana 上所有的智能合約完全無關。 Solana 合約: Solana 上的程序採用了全面重新設計的架構,不包含此次被攻破的邏輯。 當前狀態: 所有 v1 資金池均已暫停。 關鍵的經驗教訓:表面上看,這是 2023 年初上線的 v1 版本中的一個智能合約漏洞,但它凸顯了在協議設計和運營方面的幾個問題: 1. 不要把重要的狀態轉換(state transitions)混在有複雜邏輯的函數里 _updateDueInfo() 和 _getDueInfo() 計算到期款項和各類費用,是 v1 合約中最複雜的部分。將借款人狀態轉換嵌入到這些複雜函數中不是一個明智的選擇。我們後來對這個設計也不太滿意,在 Huma v2 智能合約的設計上放棄了這個方案,採用了更簡單的架構。 2. 堅決剔除不必要的功能。 引入 requestCredit() 是為了支持未來的擴展,但在實際運營中從未用到過。非關鍵函數天生會受到較少的測試和安全審查,從而產生了不必要的攻擊面。在發佈前我們曾討論過要不要把它拿掉,但當時認為沒有大礙就保留了。如果某個函數不是必須,就不應該放進合約裡。 3. 積極關閉不再使用的池子。 保留不再需要的舊池子會產生不必要的風險。今天,開發者和攻擊者攻防雙方都積極使用 AI,一些舊合約沒用經過 AI 審計,可能會有更多的薄弱環節。關停 v1 資金池的工作此前已經在進行中,但沒有放在最高的優先級,我們在這一點上應該更堅決。 這是一個慘痛的教訓。我們應該好好從中學習,以不辜負這高昂的學費。在此分享我們第一時間的反思和經驗教訓,希望能幫助生態別的建設者,尤其是有老合約的項目方,能更有效地提高對黑客的防範。DeFi United, DeFi Strong! 🛡️
Huma Finance
@humafinance
05-11
Earlier today a vulnerability in Huma’s legacy v1 contracts on Polygon was exploited for 101,400 USDC. No user funds at risk and PST is not impacted. Huma’s v2 system on Solana is a complete rewrite and this issue does not apply to v2 systems. The teams were already in the x.com/blockaid_/stat…
HUMA
1.07%
loading indicator
Loading..