SharkTeam:合約精度計算漏洞與安全建議
發表於 2024-02-20 15:51 作者: SharkTeam
SharkTeam:合約精度計算漏洞與安全建議
近幾個月,連續發生多起安全事件與合約开發過程中的價格精度計算漏洞有關,損失金額已超千萬美元,MIN_SPELL 650萬美元、RadiantCapital 450萬美元、Onyx Protocol 210萬美元等,均是因爲計算時精度出現了問題導致關鍵變量計算錯誤從而被攻擊。
SharkTeam將這類安全事件進行了總結,並給出行之有效的安全建議,希望後續協議可以引以爲戒,保護用戶加密資產安全。
1. MIN_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:合約精度計算漏洞與安全建議
地址:https://www.coinsdeep.com/article/96185.html
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。