SharkTeam:合约精度计算漏洞与安全建议
SharkTeam
2024-02-22 07:00
本文约1314字,阅读全文需要约5分钟
SharkTeam将近期多种安全事件进行了总结,并给出行之有效的安全建议,希望后续协议可以引以为戒,保护用户加密资产安全。

近幾個月,連續發生多起安全事件與合約開發過程中的價格精度運算漏洞有關,損失金額已超千萬美元,MIM_SPELL 650 萬美元、RadiantCapital 450 萬美元、Onyx Protocol 210 萬美元等,均為因為計算時精確度出現了問題導致關鍵變數計算錯誤而被攻擊。

SharkTeam 將此類安全事件進行了總結,並給出行之有效的安全建議,希望後續協議可以引以為戒,保護用戶加密資產安全。

1. MIM_SPELL 攻擊事件

發生時間: 2024 年1 月30 日,

損失金額:約650 萬美元,

漏洞原因:合約存在兩個借貸變數elastic 和base,在進行兩者的精確度計算時,都採用了向上取整的方式。這樣操作會使本身計算結果應為0 的參數最後計算得到為1 ,使兩個參數之間的比例失衡,最終能夠超額借出MIM 代幣。

詳細分析:https://bit.ly/3ScR7TK

2. RadiantCapital 攻擊事件

發生時間: 2024 年1 月2 日,

損失金額:約450 萬美元,

漏洞原因:駭客利用了合約中對於新市場尚未進行初始化的漏洞,流動性指數並未初始化,使得駭客可以透過閃電貸函數來操縱其大小,當指數變大後,駭客利用rayDiv 函數中的四捨五入精度問題,由於指數變大,透過四捨五入造成的精度損失上限同樣變大,駭客重複進行存取操作獲利。

3. Onyx Protocol 攻擊事件

發生時間: 2023 年11 月11 日,

損失金額:約210 萬美元,

漏洞原因:與RadiantCapital 攻擊事件類似,也利用了新市場尚未初始化流動性的漏洞,並且在divUint 函數中存在四捨五入的漏洞造成精度損失。

詳細分析:https://bit.ly/47cKeI6

4. WiseLending 攻擊事件

發生時間: 2024 年1 月12 日,

損失金額:約46.5 萬美元,

漏洞原因:合約在計算借貸份額時使用向上取整,攻擊者利用這一點進行重複的訪問操作來提高份額價格,份額價格提升後用自己的份額借走了大量的ETH。

5. HopeLend 攻擊事件

發生時間: 2023 年10 月18 日,

損失金額:約85 萬美元

漏洞原因:駭客最初利用目標資產對應的池中的流動性失衡,操縱與目標資產關聯的hToken 的流動性指數,扭曲其價值。隨後,駭客利用極少量hToken 的抵押品,借入了所有其他標的資產。此後,駭客同樣利用合約分割作業中的rayDiv 函數中存在的四捨五入漏洞,反復存入和提現,耗盡了在Hopelend 攻擊中投入的標的資產。

漏洞總結與安全建議

精確度問題大體是分為兩類:

1.一類是錯誤的向上取整,可能導致本應為0 的參數取到了1 ,使後續計算出現嚴重漏洞;

2.第二類是四捨五入問題,其中特別嚴重的是錯誤使用了rayDiv 函數的項目。

安全建議:

1.針對第一類來說,如果項目邏輯需要向上取整操作,在取整變數為1 或0 等條件下進行多次多樣的重複測試,

2.針對第二類可以採用先乘後除統一精度的方式,譬如使用10** 18 為後綴作為小數點後的數值。

3.無論是哪一種情況,對計算邏輯進行全方面測試,盡可能地考慮到每一種情況,尤其是在不同計算結果有不同的處理邏輯的時候,更需要慎重測試。理論上的邏輯設計與實際的程式碼實現相結合,全方位無死角的對合約函數進行測試。若測試案例可以涵蓋各種變化情況,必然可以避免因為精確度計算所帶來的安全性問題。

About Us

SharkTeam 的願景是保護Web3世界的安全。團隊由來自世界各地的經驗豐富的安全專業人士和高級研究人員組成,精通區塊鍊和智慧合約底層理論。提供包括鏈上大數據分析、鏈上風險預警、KYT/AML、智慧合約審計、加密資產追討等服務,並打造了鏈上智慧風險識別平台ChainAegis,平台支援無限層級的深度圖分析,能有效對抗Web3世界的高階持續性威脅(Advanced Persistent Threat,APT)。已與Web3生態各領域的關鍵參與者,如Polkadot、Moonbeam、polygon、Sui、OKX、imToken、Collab.Land 等建立長期合作關係。

官網:https://www.sharkteam.org

Twitter:https://twitter.com/sharkteamorg

Discord:https://discord.gg/jGH9xXCjDZ

Telegram:https://t.me/sharkteamorg

SharkTeam
作者文库