返回部落格

Solana rBPF 中發現新的整數溢位漏洞

Code Auditing
2021年12月30日
閱讀約 3 分鐘

最近,我們的漏洞檢測系統在 Solana 的 rBPF(即所有 Solana 去中心化應用程式所運行的虛擬機:https://github.com/solana-labs/rbpf)中發現了一個嚴重問題。經過仔細調查,我們發現這是一個整數溢位漏洞,該漏洞可被利用來導致整個 Solana 網路崩潰。我們已向 Solana 安全團隊回報此漏洞,該團隊隨即採取行動確認並修復了該漏洞。截至本文撰寫時,幾乎所有驗證者節點都已收到補丁並升級至最新版本,這意味著現在進行公開披露是安全的。

eBPF 與 rBPF

擴展 Berkeley 封包過濾器(eBPF[1])最初是為在核心中過濾封包而開發的。由於 eBPF 的安全性、效率和可擴展性,它現在被用於網路、追蹤、性能分析等 多個領域[2]。考慮到 eBPF 的強大能力,Solana 也選擇將其作為智慧合約的執行引擎。為了在 Solana 上構建去中心化應用程式(dApps),開發者需要使用 Rust 開發其智慧合約,隨後會將其編譯為 eBPF 位元組碼。

為了託管 Solana 的去中心化應用程式,需要一個精確的 eBPF 虛擬機。在這種情況下,Solana 使用了 rBPF,這是一個用 Rust 編寫的 eBPF 虛擬機。然而,該虛擬機(即 rBPF)是否健壯、安全且精確尚不清楚。一旦 rBPF 內部存在安全問題,所有包含 rBPF 的驗證者都可能受到影響,從而對整個 Solana 網路造成巨大損失(例如 DDoS 攻擊)。

漏洞根源

我們開發了一種用於定位 rBPF 漏洞的工具。該工具目前仍在積極開發中。在此過程中,我們在 rBPF(版本 0.2.16)中發現了一個嚴重的問題,它可能會導致整個網路癱瘓。

具體而言,檔案「elf.rs」中的函式「load」用於解析並驗證 ELF 檔案(智慧合約)。首先,「load」函式會讀取 ELF 結構並呼叫「relocate」函式來設定被呼叫者的偏移量。然而,在「relocate」函式中,屬性「sym.st_value」是直接從 ELF 檔案 中檢索的。如果「st_value」足夠大,在計算「addr」(即「sym.st_value」與「refd_pa」的總和)時就可能會觸發整數溢位。

在這種情況下,攻擊者可以建立一個惡意的 ELF 檔案作為智慧合約,從而觸發整數溢位。隨後,每個驗證者都會執行該目標 ELF 檔案,而 rBPF 將會因「add with overflow」錯誤而恐慌(panic)。

此時,rBPF 將會卡住,後續的交易將無法執行,從而導致拒絕服務(DoS)攻擊。我們觀察到,由於在載入 ELF 檔案時發生了整數溢位,節點卡在了「Finalizing transaction」(結束交易)階段,如下所示。

此問題是在 https://github.com/solana-labs/rbpf/pull/200 中引入的,這意味著 rBPF 從 0.2.14 版本開始就存在此漏洞。我們發現了此問題,並於 2021 年 12 月 6 日向 Solana 安全團隊回報。Solana 在我們回報後的幾小時內,透過使用安全數學(safemath)機制修復了此問題。修復內容位於 https://github.com/solana-labs/rbpf/pull/236。在本文撰寫時(2021/12/30),超過 86% 的驗證者已經升級到最新版本。

[1] https://en.wikipedia.org/wiki/Berkeley_Packet_Filter

[2] https://ebpf.io/

時間軸

  • 2021/12/06:向 Solana 安全團隊回報問題
  • 2021/12/06:漏洞已修復
  • 2021/12/30:發布此漏洞的相關資訊
  • 2022/01/28:分配了 CVE-2021–46102 編號
訂閱最新動態
超越智能合約:Web3中的網域與DNS營運安全
Security Insights

超越智能合約:Web3中的網域與DNS營運安全

合約審計止步於合約本身。我們針對 DefiLlama TVL 前 100 名背後的 100 個網域,執行了八項基於 SEAL 的 DNS 與註冊商檢查——共 800 項檢查,僅有一個網域全數通過。以下是大多數專案缺失的四項關鍵控制,以及它們在用戶入口點的重要性。

Web3攻擊面:滲透測試概覽

Web3攻擊面:滲透測試概覽

加密機構保留所有傳統攻擊面,並疊加資金處理鏈。本文為測試人員提供系統的實用抽象:四組件模型——應用、授權與簽名、區塊鏈互動、基礎設施,說明各組件職責、代表性實現及繼承的攻擊面。並將web3特有範疇分為五大攻擊面:生產與自動化運維、簽名意圖、審批與提款鏈、資金邏輯、鏈上交易與已部署合約。

損失約2,300萬美元:Cosmos EVM、Moonwell 遭利用 | BlockSec Weekly
Security Insights

損失約2,300萬美元:Cosmos EVM、Moonwell 遭利用 | BlockSec Weekly

報告期間(2026/08/22 - 2026/08/30)內,共涵蓋5起區塊鏈安全事件,損失約2,270萬美元;Tectonic遭抽走約7,400萬至1.195億美元,其中大部分因Cronos回滾至攻擊前狀態而消除。重點事件為橫跨六條鏈的Cosmos EVM漏洞系列(實際損失約570萬美元),於TAC Chain追蹤發現,一個共享餘額同步漏洞串聯下溢與上溢攻擊,抽乾質押池。報告亦分析Moonwell的抵押品計算與預言機價格操縱組合攻擊、Tectonic針對低流動性抵押品的預言機價格與憑證代幣匯率操縱組合攻擊、Ajna清算業務邏輯漏洞,以及Solana上的Rain Card合約漏洞系列,涉及Ed25519簽名驗證繞過(Avici、Tria等)。

Web3 最佳安全審計方

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

BlockSec 審計