XRP Ledger 修補可能憑空創造 XRP 的整數溢位漏洞
重點速覽
- •該整數溢位漏洞自 2015 年起即存在於 XRPL 支付引擎中,當一筆交易彙總數百個刻意定價的訂單簿報價時,可能鑄造出可花費的 XRP。
- •開發者於 9 月 25 日在 xrpld 3.4.1 中發布修復程式,比 10 月 9 日的揭露早了約兩週,因為透過一般修正案時間表發布開源修復,可能在易受攻擊的軟體仍在使用時就暴露漏洞。
- •團隊未發現該漏洞曾在公開網路上被利用的證據,也未接獲私鑰外洩、資金損失或共識失敗的報告。
- •在 3.4.1 版本發布當天,預設 UNL 上已有超過 80% 的驗證節點完成升級,其餘未修補的伺服器現已被修正案封鎖,直到更新為止。
- •這次揭露還涵蓋 XRPL 即將推出的 Batch 功能中的另一個獨立驗證漏洞,該漏洞在功能抵達主網之前即被發現。

XRP Ledger(XRPL)開發團隊於 10 月 9 日揭露一個整數溢位漏洞,在特定精心構造的條件下,可能憑空創造出可花費的 XRP。修補程式於 9 月 25 日隨 xrpld 3.4.1 版本發布,比公開揭露早了約兩週,團隊表示沒有發現該漏洞曾在公開網路上被利用的證據。
詳細內容發布於 XRPL 的 10 月 9 日漏洞揭露報告。
可能憑空創造 XRP 的支付計算
報告描述了帳本支付引擎中的一個整數溢位漏洞。在特定精心構造的條件下,一筆消耗大量訂單簿報價的支付,可能將寄件人實際上未支付的 XRP 記入帳戶。訂單簿是 XRPL 的原生結構,屬於帳本內建交易所的一部分,因此這個有缺陷的算術運算存在於支撐帳本交易與支付的程式碼中。
交易中的每一筆報價單獨來看都可能看似有效。問題出在引擎將所有報價的 XRP 金額相加時。一旦總和超過該計算所用數值型別的最大上限,它可能環繞成一個小得多的數值,而不是產生錯誤。
在這種情況下,引擎仍會將完整的 XRP 金額記入報價擁有者帳戶,卻只向買方收取環繞後的總額。兩者的差額即代表新創造的 XRP,隨後可像其他任何餘額一樣被轉移、交易或發送到交易所。
為何此漏洞如此嚴重
這種攻擊不需要大量的 XRP 餘額。攻擊者可以控制下報價的帳戶、支付必要的帳戶儲備與交易費用,然後將創造出的 XRP 分散到這些帳戶中。
該漏洞存在於支付算術而非錢包存取中,帳戶金鑰不受影響。觸發它需要數百個刻意定價的報價,以及一筆設計用來一併消耗這些報價的交易;一般的 XRP 支付或交易不會接近造成溢位所需的數值。
對帳本而言,很少有缺陷比能鑄造可花費單位的缺陷更敏感,因為每一筆餘額都取決於新 XRP 僅透過網路定義的規則進入流通。
XRPL 表示未發現在公開網路上被利用的證據,也未接獲鑰外洩、資金損失或共識失敗的報告。該漏洞似乎自 2015 年現行支付引擎編寫以來即存在,之所以未被發現,是因為正常活動從未達到該算術上限。
帳本針對新創造 XRP 的既有防護同樣依賴相同類型的加法運算。它可能以與支付引擎相同的方式環繞,使交易看起來正常,而不會標記餘額的異常增加。
開發者為何採用緊急部署
開發者在發布技術細節之前就先釋出溢位修補程式,因為遵循一般修正案時間表,將使一個已知的漏洞在數週內持續可用。修補程式於 9 月 25 日隨 xrpld 3.4.1 版本發布,公開揭露則於 10 月 9 日跟進。
XRPL 通常透過修正案變更交易規則。驗證節點先升級其軟體,然後在設定的期間內維持必要的支持,之後新規則才會在網路上同一個帳本點生效。該流程可避免不同伺服器對同一筆交易得出不同結論的情況。
在此案例中,等待該流程將造成棘手的問題。由於 xrpld 是開源軟體,發布修復程式碼可能在舊版軟體仍接受易受攻擊交易路徑的情況下,向攻擊者指出攻擊方向。因此,團隊讓新的溢位檢查在個別伺服器升級時即生效。
這種更快的方式帶有暫時性的相容性風險:未修補的伺服器可能接受一筆已升級伺服器會拒絕的攻擊交易。開發者認為這比讓創造出的 XRP 進入市場危險性更低。根據報告,在 3.4.1 版本發布當天,預設 UNL 上已有超過 80% 的驗證節點完成升級。
揭露內容也涵蓋另一個獨立漏洞
報告還詳細說明了 XRPL 即將推出的 Batch 功能中的一個驗證問題,該功能讓使用者可將多筆交易作為一個單位提交。該漏洞可能導致執行不同軟體版本的伺服器對格式錯誤的 Batch 交易產生分歧,中斷帳本驗證或破壞解析交易資料的應用程式。
Batch 漏洞在該功能抵達主網之前即被發現。相較之下,溢位問題影響的是現有的支付引擎程式碼,這就是為什麼其修補程式無法等待標準的生效週期。由於該功能本身尚未推出,攜帶驗證修復在主網上線,是這次揭露中仍待實現的部分。
報告發布之際,XRPL 也正在為企業啟用新的帳戶控制工具。這些變更針對帳本的不同部分,但兩者都依賴節點營運者、錢包供應商與開發者遵循相同的現行規則。
使用者與營運者需要做什麼
一般 XRP 持有人無需轉移資金、更換錢包或兌換代幣。本次更新涉及的是驗證交易的軟體,而非帳戶餘額、錢包金鑰或使用者持有的 XRP 供應量。
- **XRP 持有人:**無需採取任何行動。
- **交易所使用者:**若交易所對其自身的 XRPL 基礎設施進行維護,請留意平台公告。
- **節點營運者:**升級至 xrpld 3.4.1 或更新版本,以與網路保持同步。在 Batch 修復生效後,較舊的伺服器現已被修正案封鎖,意味著在更新之前無法繼續遵循目前的帳本則。
修補程式在供應規則受考驗前保護了 XRP
這次揭露顯示帳本距離供應完整性失敗有多近,以及驗證節點為何迅速行動。漏洞在細節公開前即已修復,未發現任何攻擊行為,支付引擎現在使用的檢查機制,旨在阻止同類算術錯誤在抵達已驗證帳本之前發生。從外部來看,尚待觀察的是網路其餘部分多快能收斂至 xrpld 3.4.1 或更新版本,因為未修補的伺服器已被修正案封鎖,無法跟隨目前的帳本。
本文僅供資訊參考,不構成投資或技術建議。節點營運者在更新正式環境基礎設施之前,應查閱最新的 XRPL 發行文件。
本文基於 Coindoo 最初發布的報導。