返回部落格

CVE-2021–39137 野外漏洞利用簡析

Code Auditing
2021年8月28日
閱讀約 2 分鐘

CVE-2021-39137 是一個幾天前被回報並修復的漏洞。然而,並非所有以太坊節點都已套用此修補程式。我們觀察到該漏洞已被一筆惡意交易利用。

攻擊交易

https://tx.blocksecteam.com/tx/0x1cb6fb36633d270edefc04d048145b4298e67b8aa82a9e5ec4aa1435dd770ce4

此交易包含一個位址為 0x4 的 STATICCALL。這是一個預編譯的智慧合約 dataCopy。其參數如下:

inOffset = 0, inSize = 32, retOffset = 7 且 retSize = 32。

0x4 智慧合約

圖 1

由於 STATICCALL 的目標是 0x4 預編譯合約,它將執行圖 1 中的 RunPrecompiledContract 函式。

圖 2

圖 3

根據圖 2/3,0x4 智慧合約僅僅是回傳了 in 指標的參考。

圖 4

圖 5

圖 4 是操作碼 STATICCALL 的程式碼。在第 751 行,args 指向 EVM 記憶體的 [inOffset ~ inOffset + inSize],即 Mem[0:32]。

根據圖 5 以及對 0x04 程式碼邏輯(圖 2/3)的分析,回傳值 (ret) 是與 args 相同記憶體的參考。也就是說,它也指向 Mem[0:32]。

漏洞

在該漏洞程式碼(版本 1.10.7)中,第 762 行將 ret 的內容複製到 Mem[retOffset : retOffset + retOffset],即將 Mem[0:32] 複製到 Mem [7:7+32]。此操作意外地更改了 ret 的內容。這意味著 0x4 預編譯合約的回傳值已被修改。

在修復後的版本(1.10.8)中,它對 ret 進行了複製(第 766 行)。這解決了該漏洞,因為第 767 行的複製操作無法修改 ret 的內容。

CVE-2021–39137 漏洞因節點未及時更新修補程式而遭到惡意交易利用。此缺陷涉及以太坊虛擬機器記憶體操作中的瑕疵,但已在版本 1.10.8 中修復。為確保系統安全,建議所有以太坊節點立即更新至最新版本。

貢獻者

此攻擊分析由 Siwei Wu, Yufeng Hu, Lei Wu, Yajin Zhou@BlockSec 完成

訂閱最新動態
Bitget 3.875億美元鏈下違規事件:超越金鑰與合約的範疇
Security Insights

Bitget 3.875億美元鏈下違規事件:超越金鑰與合約的範疇

2026年9月24日,攻擊者利用第三方安全產品漏洞,獲取內部憑證並偽造提款指令,導致約3.875億美元從Bitget部分營運錢包(涵蓋Ethereum、其他EVM網絡、XRP Ledger、Zcash及TRON)轉出;私鑰及冷錢包未受影響。本文深入梳理事件路徑與資金流向,分析快速轉換為原生資產及生態恢復應對,提出機構縱深防禦框架,並說明授權區塊鏈滲透測試如何驗證跨層假設。

約1130萬美元損失:Multicall Router、Nostra|BlockSec Weekly
Security Insights

約1130萬美元損失:Multicall Router、Nostra|BlockSec Weekly

本報告涵蓋2026/09/14至2026/09/20期間,探討以太坊與Starknet上兩起合計損失約1130萬美元的安全事件。較大一起中,多重呼叫路由器將自身位址接受為分派目標,導致巢狀呼叫以路由器自身已授權身分而非外部呼叫者身分進入Safe錢包的Gateway模組,約2900枚`aEthrsETH`被轉出至攻擊者建立的Uniswap v4池。在Starknet上,Nostra預言機整合僅要求最少一個聚合來源,當三個設定價格來源中僅兩個達成聚合時,操縱的薄池報價與正常報價平均後將`NSTR`估值約49.52美元,支撐約350萬美元以高估抵押品借貸。

损失約3.2億美元:Liquid Network與Symbiosis遭攻擊事件 | BlockSec
Security Insights

损失約3.2億美元:Liquid Network與Symbiosis遭攻擊事件 | BlockSec

本報告涵蓋2026/09/07至2026/09/13,探討兩起造成約3.2億美元損失的安全事件,包括前份報告未提及、發生於2026/09/06的Liquid Network漏洞事件。較大者為該Liquid Network漏洞:Elements中的rangeproof驗證快取藉由雜湊四個欄位(其中兩個長度可變)串接而成金鑰,且未標示欄位邊界,導致某輸出的驗證結果被錯誤套用至另一個未經檢驗證明的輸出,使攻擊者得以憑空創造4,000枚無擔保L-BTC,並將幾乎全數兌回比特幣。在橫跨BNB Smart Chain、Ethereum與Rootstock的Symbiosis跨鏈橋比特幣路徑中,讀取比特幣存款的鏈下程式碼從存款人可自行控制的欄位取得其身份,並在未檢查手續費是否為負值的情況下自存款中扣除,使330聰的存款鑄造出`46,116,860,184.27388234 syBTC`;其須賣出所經之資金池僅有11.26 syBTC,致使流動性提供者與用戶損失約9.97 BTC(約77萬美元)。

Web3 最佳安全審計方

在上線之前驗證設計、程式碼與業務邏輯,對標業內最高安全標準。

BlockSec 審計