近日,超級穩定幣協議Curve 受到重入攻擊,造成嚴重損失。以下是MetaTrust Labs 對本次攻擊事件的安全分析及安全建議。## 事件回顧根據Curve Finance 的官方推特,在2023 年7 月31 日,一些使用Vyper 0.2.15 版本編寫的穩定池(alETH/msETH/pETH)受到了重入攻擊。 Curve Finance 表示,該攻擊是由於Vyper 0.2.15 版本存在重入鎖故障(malfunctioning reentrancy locks)導致的,而且只影響了使用純ETH 的池子。目前,Curve 正在評估損失情況,其他池子是安全的。據MetaTrust Labs 的分析,該漏洞是在2021 年8 月至10 月期間引入的,主要由於Vyper 的0.2.15/0.2.16/0.3.0 版本編譯器引起的。漏洞原因是由於編譯器bug 導致生成的字節碼中本該重入保護的方法,重入邏輯不生效導致。根據鏈上數據統計,Curve Finance 穩定幣池黑客攻擊事件已造成Alchemix、JPEG'd、CRV/ETH 池等累計損失5200 萬美元。 Curve Finance 的代幣CRV 也遭受重創,日內下跌超過15% 。## 原因分析Curve Finance 這次被攻擊的原因是,Curve 在使用了Vyper 這個語言寫智能合約時,使用了Vyper 0.2.15 版本,該版本上有一個漏洞是malfunctioning reentrancy locks(重入鎖故障),被攻擊者利用發起了重入攻擊造成損失。 Curve Finance 這次的漏洞是一個Language Specific 的漏洞。Language Specific 的漏洞指的是由於某種編程語言或者編譯器本身存在缺陷或者不兼容性導致的漏洞。這類漏洞往往難以發現和預防,因為它們不是由於開發者的疏忽或者邏輯錯誤造成的,而是由於底層技術平台的問題造成的。這類漏洞也往往會影響到多個項目或者合約,因為它們都使用了同樣的語言或者編譯器。Vyper 是一種基於Python 的智能合約編程語言,旨在提供更高的安全性和可讀性。 Vyper 聲稱自己是一種「安全優先」的語言,不支持一些可能導致安全隱患的特性,如類、繼承、修改器、內聯彙編等。然而,Vyper 也並非完美,它仍然存在一些bug 或者漏洞,可能會影響到合約的安全性。例如,除了本次Curve Finance 遭遇的重入鎖故障之外,Vyper 還曾經出現過數組越界、整數溢出、存儲訪問錯誤等問題。### 安全措施對於Curve Finance 這次的重入攻擊事件,目前已經有一些應對措施被採取或者提出。以下是一些可採取的安全應對措施:* 移出流動性:對於受影響的池子,用戶可以選擇移出流動性,以避免進一步的損失。 Curve Finance 已經在其官網上提供了一個移出流動性的按鈕,方便用戶操作。* 升級編譯器:對於使用了Vyper 0.2.15/0.2.16/0.3.0 版本編譯器的合約,建議升級到最新的Vyper 0.3.1 版本,該版本已經修復了重入鎖故障的問題。同時,也建議使用其他工具或者方法來驗證合約的安全性,如形式化驗證、代碼審計等。* 提高警惕:對於使用了Vyper 或者其他語言編寫的合約,建議提高警惕,關注語言或者編譯器的更新和漏洞修復情況,及時採取必要的措施來保護自己的資產。同時,也建議在使用新語言或者新技術時,謹慎評估其成熟度和穩定性,避免盲目追求新鮮或者高效。### 總結Curve Finance 的重入攻擊事件是一個令人遺憾的安全事故,也是一個引人深思的教訓。在去中心化金融(DeFi)領域,安全永遠是第一要務,項目方應該不斷地提高自己的安全意識和能力,任何一個細節都可能成為攻擊者利用的突破口。跟著我們推特:@MetaTrustLabs網站:metatrust.io
黑洞吞噬:Vyper漏洞讓Curve結結實實翻了一車
近日,超級穩定幣協議Curve 受到重入攻擊,造成嚴重損失。以下是MetaTrust Labs 對本次攻擊事件的安全分析及安全建議。
事件回顧
根據Curve Finance 的官方推特,在2023 年7 月31 日,一些使用Vyper 0.2.15 版本編寫的穩定池(alETH/msETH/pETH)受到了重入攻擊。 Curve Finance 表示,該攻擊是由於Vyper 0.2.15 版本存在重入鎖故障(malfunctioning reentrancy locks)導致的,而且只影響了使用純ETH 的池子。目前,Curve 正在評估損失情況,其他池子是安全的。
據MetaTrust Labs 的分析,該漏洞是在2021 年8 月至10 月期間引入的,主要由於Vyper 的0.2.15/0.2.16/0.3.0 版本編譯器引起的。漏洞原因是由於編譯器bug 導致生成的字節碼中本該重入保護的方法,重入邏輯不生效導致。
根據鏈上數據統計,Curve Finance 穩定幣池黑客攻擊事件已造成Alchemix、JPEG'd、CRV/ETH 池等累計損失5200 萬美元。 Curve Finance 的代幣CRV 也遭受重創,日內下跌超過15% 。
原因分析
Curve Finance 這次被攻擊的原因是,Curve 在使用了Vyper 這個語言寫智能合約時,使用了Vyper 0.2.15 版本,該版本上有一個漏洞是malfunctioning reentrancy locks(重入鎖故障),被攻擊者利用發起了重入攻擊造成損失。 Curve Finance 這次的漏洞是一個Language Specific 的漏洞。
Language Specific 的漏洞指的是由於某種編程語言或者編譯器本身存在缺陷或者不兼容性導致的漏洞。這類漏洞往往難以發現和預防,因為它們不是由於開發者的疏忽或者邏輯錯誤造成的,而是由於底層技術平台的問題造成的。這類漏洞也往往會影響到多個項目或者合約,因為它們都使用了同樣的語言或者編譯器。
Vyper 是一種基於Python 的智能合約編程語言,旨在提供更高的安全性和可讀性。 Vyper 聲稱自己是一種「安全優先」的語言,不支持一些可能導致安全隱患的特性,如類、繼承、修改器、內聯彙編等。然而,Vyper 也並非完美,它仍然存在一些bug 或者漏洞,可能會影響到合約的安全性。例如,除了本次Curve Finance 遭遇的重入鎖故障之外,Vyper 還曾經出現過數組越界、整數溢出、存儲訪問錯誤等問題。
安全措施
對於Curve Finance 這次的重入攻擊事件,目前已經有一些應對措施被採取或者提出。以下是一些可採取的安全應對措施:
總結
Curve Finance 的重入攻擊事件是一個令人遺憾的安全事故,也是一個引人深思的教訓。在去中心化金融(DeFi)領域,安全永遠是第一要務,項目方應該不斷地提高自己的安全意識和能力,任何一個細節都可能成為攻擊者利用的突破口。
跟著我們
推特:@MetaTrustLabs
網站:metatrust.io