普通用戶錢包與智能合約錢包在訪問 EVM 地址的不同,不是第一次也不會是最後一次發生錯誤。本文源自以太坊開發者 Kelvin Fichter 推特,由動區專欄作者 BlockBeats 編譯及整理。
(前情提要:造市商Wintermute爆「2,000萬枚OP」遭竊!駭客發百萬給 V 神,OP大跌25%)
6 月 9 日,Optimism 在社交媒體上公佈,由於與加密貨幣做市商 Wintermute 合作過程中的溝通與技術失誤,目前已有 2,000 萬枚 OP 被駭客控制。起初,由 Optimism 基金會向 Wintermute 發送 2000 萬枚OP 用於做市,而後 Wintermute 發現其提供的接收地址是 Layer1 地址,在 Wintermute 將其轉向 Layer 2 前,攻擊者已搶先使用不同的初始化參數將其部署。截至目前,駭客已拋售約 100 萬枚被盜OP。
對此事件,以太坊開發者 Kelvin Fichter 解釋了漏洞被攻擊的原因,他表示,智能合約帳戶與 EOA 不同,普通 EOA 用戶可以訪問任意 EVM 鏈的帳戶,但智能合約帳戶不能。以下文字整理於 Kelvin Fichter 在社交媒體的發言。
需要說明,此事件不是 Optimism 或 Gnosis Safe 中任何漏洞的結果,而是源於在舊版本的 Gnosis Safe 中做出的(合理的)安全假設。
舊版本的 Gnosis Safe 工廠合約是通過沒有鏈 ID(非 EIP-155 交易)的交易部署的。這意味著可以在以太坊以外的鏈上重置這些交易。在某些方面,這真的很有用。這意味著可以將同一工廠部署到每條鏈上同一地址上。正如現在工廠被部署到 Optimism。
不幸的是,在使用這個較舊的工廠合約時,Gnosis Safe UI 有時會使用 createProxy 函數,該函數通過 CREATE 而不是 CREATE2 創建多重簽名。與 CREATE2 不同,通過 CREATE 創建的合約地址不是基於用於創建合約的程式碼,而僅基於創建者地址的 nonce。這意味著攻擊者可以將舊的 Safe 工廠部署到 Optimism 並開始重新觸發createProxy 函數以在 L2 上創建多重簽名。
但是,由於 createProxy 使用 CREATE 而不是 CREATE2,因此攻擊者能夠初始化這些多重簽名,從而使它們歸攻擊者所有。
用戶通常假設他們可以在以太坊上訪問的任何帳戶也可以在其他基於 EVM 的鏈上訪問。對於 EOA 帳戶(也稱為非合約帳戶),這通常是正確的。但這不一定適用於智能合約帳戶。可以使用完全不同的程式碼在不同鏈上的相同地址創建合約,從而產生完全不同的所有者。
像這樣的誤解會在現實世界中產生嚴重的後果。上週,Wintermute 接受了 2000 萬個 OP 代幣的貸款,借給他們認為可以在 L2 上訪問的 L1 多重簽名錢包。這個 L2 地址是攻擊者後來部署的多重簽名之一。
這些是多鏈世界的成長之痛。很不幸,但它強調了為多鏈用戶設計系統的重要性。CREATE2 和確定性部署至關重要,尤其是對於合約錢包。
如果你在以太坊上使用多重簽名錢包,我強烈建議你花時間了解錢包的安全屬性,以及你是否會在以太坊以外的鏈上控制該錢包。
📍相關報導📍
Consensys的智能合約建議:代幣設計、發行的30個注意事項
Cosmos最大交易所Osmosis遭漏洞攻擊!損失超500萬鎂,已停止出塊;OSMO大跌15%
讓動區 Telegram 新聞頻道再次強大!!立即加入獲得第一手區塊鏈、加密貨幣新聞報導。
LINE 與 Messenger 不定期為大家服務