KeyFrame內部研究專用

Rust in Peace: Breaking Rust-based blockchains | Luis Quispe Gonzales (Halborn)

DeFi Security Summit - DSS·12月22日週日·24 min英文

三句話摘要

基於Rust的區塊鏈安全審計:區塊鏈架構運作原理與實際漏洞案例分析。 區塊鏈安全審計需在交易生命週期的每個邊界層(Mempool、共識、執行)進行手動審查與Fuzzing,特別要關注Rust巨集、第三方序列化庫等易引發邏輯漏洞的環節。 區塊鏈各層組件邊界是攻擊面:全節點、驗證者各有獨立Mempool和狀態副本,交易在每個邊界都需驗證。許多漏洞源於某層的驗證邏輯不完整(例如沒檢查序號上界),導致後續層無法攔截。

重點整理

重點
  • 1

    區塊鏈各層組件邊界是攻擊面:全節點、驗證者各有獨立Mempool和狀態副本,交易在每個邊界都需驗證。許多漏洞源於某層的驗證邏輯不完整(例如沒檢查序號上界),導致後續層無法攔截。

  • 2

    虛擬機層執行是模擬而非實時更新:執行層先在沙箱中試運行智能合約代碼,生成根哈希,只有共識層確認所有驗證者根哈希一致才會真實寫入區塊鏈。這保護了安全但也意味著每層都可能引入邏輯漏洞。

  • 3

    共識層負責交易順序,執行層負責優化執行:共識確定誰是Leader、交易的全局順序;執行層在尊重此順序的前提下,對不同資源的交易並行執行以優化效能。順序攻擊(如在真正付款前領取獎勵)的防線在這裡。

  • 4

    Rust特性(巨集、FFI、序列化庫)放大漏洞影響:serde反序列化不當會導致驗證者直接崩潰。Rust的巨集展開複雜,錯誤訊息難以調試,但用cargo expand工具可揭露真相。

實用技巧與重點

乾貨
  • 真實漏洞案例:
  • Sui - Change Epoch批次交易繞過(執行層)
  • 漏洞:系統交易change_epoch本應只由驗證者執行,但驗證函數只檢查單筆交易類型
  • 攻擊方式:將change_epoch包裝在批次交易(batch transaction)中,驗證邏輯失效
  • 結果:攻擊者可將儲存費和計算費改為0,導致所有交易免費
  • Rollup - 高序號交易免費(Mempool)
  • 漏洞:Mempool驗證序號時,只檢查「序號 < 當前序號」會拒絕,但不檢查「序號太高」
  • 攻擊方式:發送1000筆序號為1000的交易,驗證者無法在Mempool阻擋,發送到執行層才被丟棄
  • 結果:攻擊者0費用發送1000筆交易→驗證者消耗資源計算→DDoS整條鏈
  • Sui - 反序列化漏洞(Mempool)
  • 漏洞:serde反序列化函數當遇到預期外的字段時,只回傳錯誤但不崩潰;當字段值為true時,觸發panic
  • 攻擊方式:在交易結構中加入非預期字段並設為true,發送給驗證者
  • 結果:單筆交易導致驗證者停止服務;100筆交易可癱瘓整個區塊鏈
  • 工具與技術:
  • Rust序列化庫:serde(超過800,000人使用)
  • 虛擬機層:Aptos用Move BM、Casper用WebAssembly BM、Sui用Move VM
  • 共識機制:Aptos用HotStuff BFT
  • 調試工具:cargo expand(展開Rust巨集)
  • 測試框架:fuzzing
  • 架構組件術語:
  • Full Node(全節點):任何人可運行的區塊鏈副本,作為relayer角色
  • Validator(驗證者):需質押代幣、參與共識與交易執行的節點
  • Mempool:臨時儲存未確認交易的內存池或磁盤存儲
  • Merkle Tree:確認交易是否在區塊內的高效驗證結構
  • Root Hash:執行層模擬執行後產生的狀態根,驗證者間用此判斷是否達成共識
  • Shard(分片):Casper中區塊鏈的切片,各自產生獨立的root hash

結論

結論

區塊鏈安全審計需在交易生命週期的每個邊界層(Mempool、共識、執行)進行手動審查與Fuzzing,特別要關注Rust巨集、第三方序列化庫等易引發邏輯漏洞的環節。

完整解析

詳細

Luis K Gonzalez來自Halor安全公司,擁有13年多語言開發經驗,最近4年專注Web3安全審計。他透過一個虛擬人物Alice的故事,完整講解了基於Rust的區塊鏈交易生命周期。

Alice決定向流動性池投入資金以賺取獎勵。當她提出領取獎勵的交易(第14筆)時,背後經歷了複雜的多層次驗證過程。首先,她的錢包客戶端構建交易,包含公鑰、簽名和交易數據(地址、payload、Gas費用)。交易被發送到全節點,全節點維護區塊鏈的完整副本,任何人都可運行。全節點不直接執行交易,而是先進行基本檢查(語法、餘額、費用),再將交易加入Mempool(臨時儲存區)。

全節點作為relayer角色,將交易轉發給驗證者。驗證者也維護區塊鏈副本,需要質押大量代幣才能參與。驗證者之間透過Mempool共享協議交換交易,最終所有驗證者的Mempool都含有同一筆交易。接著進入共識層,驗證者選舉出該輪的Leader(選舉標準因共識機制而異)。Leader負責決定Mempool中哪些交易進入區塊,以及它們的順序——這個順序至關重要,因為交易的執行結果可能相互依賴,順序錯誤會導致邏輯漏洞(如在實際轉帳前領取獎勵)。

共識達成後,執行層接手。執行層尊重共識層決定的交易順序,但會對作用於不同資源的交易進行並行執行以優化性能。執行層調用虛擬機層(Aptos用Move BM、Casper用WebAssembly)實際運行智能合約代碼,應用所有權驗證等規則。關鍵點是,此時區塊鏈狀態尚未真實更新,而是在沙箱中模擬。虛擬機執行後,執行層將交易雜湊追加到Merkle樹(每個交易一個雜湊,逐級合併直到得到Merkle根),Merkle根被加入區塊頭。更重要的是,執行層生成根哈希(root hash),代表區塊鏈的整體狀態。不同區塊鏈生成方式不同:Aptos只生成一個,Casper為各分片各生成一個。

執行層將根哈希資訊發送回共識層,共識層與其他驗證者的共識層通訊,確認所有驗證者執行後得到相同的根哈希。若一致,共識層信號執行層執行最終的區塊鏈狀態寫入,儲存層永久記錄。此時Alice的獎勵被扣除,代幣從合約轉到她的帳戶。

從安全視角,Alice、她的客戶端、全節點、驗證者任何一方都可能惡意。區塊鏈安全的最後防線是保護驗證者各層組件的完整性。Halor團隊發現的三個真實漏洞揭示了防禦的薄弱環節。第一個是Sui的Change Epoch系統交易繞過:該交易本應由驗證者單獨控制費用參數,但驗證邏輯只檢查單筆交易類型,未考慮批次交易包裝。攻擊者將Change Epoch放入批次交易,驗證邏輯失效,成功將儲存費和計算費改為零。第二個是Rollup的高序號免費交易:Mempool在驗證序號時,只拒絕序號小於當前值的交易,但未檢查序號過高的情況。攻擊者發送1000筆序號為1000的交易,全通過Mempool驗證,在執行層才被丟棄。由於執行是耗資源的,驗證者每筆都要計算,攻擊者0成本導致驗證者資源耗盡(DDoS)。第三個最嚴重的是Sui的反序列化漏洞:serde庫的反序列化邏輯,當交易結構包含預期外的字段時,如果該字段值為true,會觸發panic導致驗證者停止。攻擊者只需單筆交易即可使單個驗證者宕機,100筆交易可癱瘓整條區塊鏈。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web3 安全」的內容

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️
8 min
Web3 安全英文8月14日

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️

Zach Humphries

  • 機構支撐的積極意義:價格操縱常被視為負面,但Ripple掌握大量XRP供應與escrow,在熊市期間提高價格下限,實際上替零售投資者鎖定了低風險的積累區間,這不是剝削而是市場穩定機制。
  • 歷史模式驗證:2024年7月至11月XRP在50美分附近橫盤整理,低點觸及42美分(wick),高點65美分;隨後11月5日至12月5日單月上漲456%,年底到2025年初累計漲幅534%,這個歷史周期正在1美元價位重演。
  • 比特幣聯動邏輯:講者在4-5月就預測「如果比特幣跌至60k以下,XRP會跌至1美元或更低」,此預測精準應驗,反映出熊市中兩者的明確連動關係。
Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady
72 min
Web3 安全英文PODCAST8月5日

Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady

Zero Knowledge

  • 反向 Linux 架構:Commonware 刻意暴露棧各層級控制,讓開發者自訂執行環境、共識機制、密碼學實現,而非像 Cosmos SDK 只允許應用層以上定制。2-3 個月能組裝一條定製鏈,代價是額外深度但回報是長期維護成本降低及效能優化彈性。
  • 容錯假設的典範轉移:Alpine Glow(Solana 2025)實現單輪投票定終的關鍵是將容錯預算分離為獨立的 Byzantine 和 Crash 容限。傳統系統把 33% 當一個整體預算;新模型允許 20% 惡意加 20% 崩潰,打破了 PBFT 理論界線,釋放單輪設計空間。
  • Minimet 與 Multimet 的遞進:Minimet 是 5F+1 設定下的乾淨構造,實現更短視圖延遲;Multimet(剛發布)進一步允許並行 mini-commits 且驗證者可推翻領導者審查,使用者交易在全球分布式網路達到 200-300 毫秒端到端定終。
Private Information Retrieval (PIR) with Alex Hoover
64 min
Web3 安全英文PODCAST7月29日

Private Information Retrieval (PIR) with Alex Hoover

Zero Knowledge

  • PIR 保護的是訪問模式,不是資料本身
  • PIR 與加密不同,它關注的是隱藏「客戶端查詢了什麼」,而非「資料是否加密」。在公開資料庫(如區塊鏈)上,客戶端可以在不洩露查詢對象給伺服器的情況下檢索特定條目,解決了輕量級客戶端的隱私和防審查問題。
  • 客戶端預處理方案是突破瓶頸的關鍵