多簽為什麼仍有單點故障?Ronin 的 5 of 9 如何被湊齊
5 of 9 的多簽,不保證攻擊者得攻破五個獨立對象。Ronin 的官方公告與事後報告記載,2022 年 3 月的攻擊者從 Sky Mavis 的環境取得足以偽造提款的簽章:9 把 validator 私鑰中的 5 把受到控制,4 把屬於 Sky Mavis,1 把屬於 Axie DAO。設計多簽時,除了金鑰數,也要看單一環境失陷後,攻擊者能取得多少簽署權。
本文以 Ronin 為主,搭配 Harmony Horizon 與 BNB Token Hub,分別看簽署權失守與證明驗證出錯的情況。設計建議都附驗收條件:假設某個環境已被攻破,檢查攻擊者還能拿到哪些權限。幣安 2026 的簽署授權只作補充,公開資料不足以還原它的完整入侵路徑。
Ronin 2022:攻擊路徑與後續調整
Ronin 官方 X 在 2022 年 3 月 29 日 15:29 UTC 宣布安全事件,第二則寫 Ronin bridge 被提走 173,600 Ethereum 與 25.5M USDC,bridge 與 Katana Dex 已暫停。
同日的〈Community Alert: Ronin Validators Compromised〉(Wayback 2022 年 3 月 29 日 22:08 快照)記載:Ronin 鏈當時有 9 個 validator 節點,要承認一筆存款或提款事件需要 9 個簽章中的 5 個;攻擊者取得了 Sky Mavis 的 4 個 Ronin validator,以及 Axie DAO 營運的一個第三方 validator 的控制權。發現經過是 3 月 29 日有使用者回報無法從橋提出 5k ETH。短期處置是把 validator 門檻從 5 提到 8,節點數仍是 9。同一篇當時寫多數被盜資金仍在攻擊者錢包,並給出地址。
4 月 27 日的〈Back to Building: Ronin Security Breach Postmortem〉(Wayback 2022 年 12 月 6 日快照)補充了時間與入口:攻擊發生在 3 月 23 日,3 月 29 日才被 Sky Mavis 團隊發現,原因是當時沒有監控橋大額流出的系統;Sky Mavis 員工長期受到進階的 spear-phishing,一名員工失陷,攻擊者藉此進入 Sky Mavis 的 IT 基礎設施,取得 validator 節點的存取權,該員工已離職。
這篇也寫 9 把私鑰中 5 把受控,其中 4 把屬於 Sky Mavis、1 把屬於 Axie DAO,攻擊者用這些簽署權偽造提款。報告記載的是控制權失守,沒有說明私鑰是否被匯出。
攻擊到發現隔了六天。Community Alert 說團隊收到使用者無法提出 5k ETH 的回報後才發現事件,Back to Building 則說當時缺乏大額流出監控。
Community Alert 的正文說明了第 5 個簽章的路徑。Sky Mavis 在 2021 年 11 月因使用者負載龐大,請 Axie DAO 幫忙分發免費交易,Axie DAO 因此將 Sky Mavis 加入 allowlist,允許它代簽。業務在 2021 年 12 月停止,存取權卻未撤銷,攻擊者取得 Sky Mavis 系統的存取權後,便透過 gas-free RPC 節點取得 Axie DAO validator 的簽章。
短期處置與後續擴充要分開看。Community Alert 的短期動作是門檻從 5 提到 8。Back to Building 的擴充段落寫「Sky Mavis 有 9 個 validator 節點」,但 Community Alert 寫的是 Ronin 全鏈有 9 個,同篇 postmortem 也寫 Sky Mavis 當時控制 4/9 validators,不能把這句讀成它持有全部金鑰。擴充段落接著寫,節點已增至 11,即將再加 3 個,三個月內目標 21 個,長期目標超過 100 個。
4 月 5 日的〈Securing Ronin〉寫正在讓 Nansen、Delphi Digital、Stable Node、Animoca Brands、Dialectic 加入 validator 節點池,三個月內目標是至少 21 個獨立的 validator 節點共同保護網路。文件沒有列出擴充後的完整控制權分配,加入名單也不能用 9 加 5 算成已上線的 14。
Back to Building 預期橋會在 5 月中下旬重開,前提是進度順利;實際重啟公告是 6 月 28 日的〈The Ronin Bridge Is Open〉,文中寫開放前完成一次內部稽核,以及 Verichains 與 Certik 兩次外部稽核。當時公告的提款分級要求分別為 70%、90%,以及 90% 加人工審查,最後一級另須經過 7 天審查流程。公告也設了初始每日上限,但管理員可提前重設,Tier 3 則不計入,金額與例外見設計建議第 3 條。
治理方面,governor 可投票增刪 validator、升級合約或調整門檻,一次投票完成後才能開始下一次。公告把 governor 比作 cold wallet、validator 比作 hot wallet,這是角色類比,無法據此判斷金鑰實際存放在哪裡。
Ronin Docs 的〈Withdrawal limits〉以代幣種類與數量分級,和 6 月 28 日的美元規則分開閱讀。文件說,數量愈大,需要愈多 bridge operator 核准;Tier 3 要人工審查,費用約 0.001%,且不計入每個代幣的每日上限。以下是頁面列出的兩種代幣,單位都是代幣數量。
| 代幣 | 每日上限 | Tier 1 | Tier 2 | Tier 3 |
|---|---|---|---|---|
| WETH | 4,500 | 小於 1,000 | 大於等於 1,000 | 大於等於 4,000 |
| USDC | 2,500,000 | 小於 1,000,000 | 大於等於 1,000,000 | 大於等於 2,000,000 |
頁尾標示最後更新於 2026 年 5 月 12 日,本文未核對鏈上參數是否與表格一致。
歸因也各有出處。Back to Building 寫 FBI 把這次事件歸因於北韓的 Lazarus Group,財政部制裁了收款地址。FBI 2022 年 4 月 14 日的聲明原文是,Lazarus Group 與 APT38 對 3 月 29 日公布的 6.2 億美元 Ethereum 盜竊負責,聲明沒有寫 Ronin、Axie 或 173,600 ETH。
財政部 2022 年 5 月 6 日的新聞稿寫,2022 年 3 月 23 日 Lazarus Group 從一個與線上遊戲 Axie Infinity 有關的區塊鏈專案竊取接近 6.2 億美元,Blender 處理了其中超過 2,050 萬美元;新聞稿正文沒有出現 Ronin 這個詞,也沒有印出十六進位地址。
OFAC 2022 年 4 月 14 日的制裁更新把 ETH 地址 0x098B716B8Aaf21512996dC57EB0615e2383E2f96 加到 LAZARUS GROUP 名下,這個地址與 Community Alert 給的攻擊者錢包相同,只差大小寫;那一頁是地址清單,沒有把事件稱為 Ronin。
Back to Building 說 Sky Mavis 委託了 CrowdStrike 與 Polaris Infosec 處理內部監控與鑑識,這是 Sky Mavis 對委託關係的說明。
把九把鑰匙畫成控制圖
把 9 把金鑰按「哪個環境失陷後能取得簽章」分組。依公告正文,從 Sky Mavis 的環境可取得自家 4 個 validator 的簽署權,再經 gas-free RPC 節點與 allowlist 取得 Axie DAO 的簽章,合計 5,達到門檻。剩下 4 個 validator 未列入這段入侵路徑;「5 等於 4 加 1」說明的是公告已揭露的控制關係,不能證明其餘節點未受影響。

圖上的環境代表入侵後可取得的權限,不表示所有節點都放在同一台主機。員工到 IT 與 validator 節點之間只畫一條連線,因為官方對 4 把金鑰受控的細節只寫到這裡。
allowlist 保留了代簽權,讓 1 個環境可取得的簽章達到 5 個。業務需求在 2021 年 12 月結束,權限卻仍有效,驗收代簽關係時就得檢查它何時到期、到期後是否確實拒絕請求。
多簽錢包從事先指定的 n 把金鑰中取得至少 m 個有效簽章,交易才能成立,m of n 的 m 就是門檻。金鑰增加,不代表控制它們的組織也增加。門檻密碼學則可把同一把金鑰分成 n 份,至少 t 份共同參與簽章,不必先重組完整私鑰;Ronin 文件描述的是多個簽章與私鑰,不能直接改稱秘密分享。單點故障指某個元件失效就足以讓系統無法正常運作,本文關心的是會讓簽署權一起失守的共同依賴。
共同原因可能讓多個元件一起失效,不能假設它們的故障彼此獨立。若兩個元件總是一起失效,增加備援也不會降低共同失效的機率。百科條目 Common cause and special cause (statistics) 的 Common mode failure 節用這個角度說明問題,但該節標有「可能包含原創研究」,這裡只作背景。套用到多簽,本文的設計檢查是:提高簽章門檻後,同一營運者或共用核准路徑是否仍能取得足夠簽章。實體隔離可減少共用環境造成的風險,還得另外檢查權限是否相通。
職務分離則要求多人參與,將授權、保管、紀錄與核對分開。百科條目 Separation of duties 引述 Botha 與 Eloff 在 IBM Systems Journal 2001 的文章,以支票須有兩人簽名為例。這裡只用百科頁內的引述,未另核 IBM 原文或 NIST SP 800-53 的 AC-5。對多簽設計而言,仍要檢查這些角色是否由同一環境控制,不能只看角色名稱;Ronin 公告的 governor 與 validator 分工也適用這項檢查。NIST CSRC 的 Multi-Party Threshold Cryptography 專案頁則說明,門檻方案用 MPC 分散密碼學運算所需的信任,這是技術範圍的說明。
多鏈與多個服務的共同依賴
同一套簽署系統替多條鏈的熱錢包簽章時,增加鏈的數量未必增加控制權的獨立性。幣安 2026 有一段相關的公開觀察。Chainalysis 2026 年 10 月 30 日的文寫,在 Ethereum 上,攻擊者用一個經 Tornado Cash 注資的操作錢包送出有效的簽署授權,讓幣安的一個熱錢包執行攻擊者部署的程式碼;這段描述限於 Ethereum,沒有寫一套簽署端跨多條鏈,也沒有寫其他鏈的授權怎麼取得。這份鏈上觀察不能證明幣安共用一套簽署端,簽署端的授權檢查可參考〈保住私鑰之後,誰有權要求系統簽章:從 2019 年幣安事件看託管簽署的授權邊界〉。
RPC、relayer、簽署端與監控即使分成不同服務,只要其中一個握有另一個的代簽權或憑證,入侵仍可能沿著這條權限跨過去。Ronin 官方記載的 gas-free RPC 節點成了取得第 5 個簽章的路徑。簽署前端與供應鏈的另一種風險,見〈簽章都正確,交易為何還是錯的:Bybit 與 Safe 的簽署供應鏈〉。
Ronin 後續增加節點,9 增至 11,目標 21。8 月 17 日的〈New Ronin Validators!〉列出三個新 validator:Efficient Frontier、Community Gaming、Nansen,總數 17;9 月 9 日〈Google Cloud Ronin Network Validator〉引述 Sky Mavis 共同創辦人 Aleksander Larsen,稱 Google Cloud 為第 18 個 validator。Nansen 在 4 月 5 日的加入名單裡出現過,8 月 17 日又被列為新加入者,兩份公告不能累加計數。這幾份公告沒有完整的組織持有數分配,無法單憑節點增加判斷隔離是否改善。
兩個短對照
Harmony Horizon 2022 年 6 月:Harmony 官方論壇 2022 年 8 月 3 日的摘要寫,攻擊者取得了 bridge validator 四把私鑰中的至少兩把,控制了被橋接的資產,從 2022 年 6 月 23 日 11:06:46 UTC 開始把資產搬進新錢包,最後進 Tornado Cash;Harmony 表示當時沒有證據顯示橋合約或鏈本身被攻破。
原文寫的是「四把私鑰中至少兩把」,沒有把門檻參數寫成 2 of 4;本文範例裡的「4 把、門檻 2」是模型參數,與 Horizon 的官方門檻無關。
Harmony 的 Medium 事故文〈Harmony’s Horizon Bridge Hack〉在 2022 年 6 月 25 日的 Update #2 轉述創辦人 Stephen Tse:私鑰由 Harmony 加密存放,以 passphrase 與 key management service 雙重加密,沒有單一機器能取得多把明文金鑰。這是調查期間的說法,同一則也寫事件後已把 Ethereum 側的 Horizon bridge 改成 4-of-5 multisig,不能用來反推攻擊當時的門檻。該文承諾調查結束後提供完整說明,但頁面最後一則編號更新是 7 月 14 日的 Update #9,內容是回補方案的規劃進度,尚待提出方案。8 月 3 日的論壇摘要仍以「我們相信」描述入侵路徑,並說木馬的能力還在調查。
2023 年 8 月 3 日的〈Governance Report: HIP-30v2〉則在說明另一項回收託管提案:Recovery Multisig 規劃採用 5-out-of-7 的 Harmony Gnosis Safe,由選出的保管人持有網路新發行的代幣,每月撥給處理脫鉤資產的 burn partners。這篇仍在邀請投票,不能據此認定安排已落實,也不能把它當作 2022 年橋上金鑰的後續配置。
BNB Token Hub 2022 年 10 月:官方寫攻擊者偽造低階證明,使 200 萬 BNB 被有效鑄出。這份說明指向證明驗證漏洞,沒有描述簽署權失陷的路徑,本文據此檢查驗證程式碼的共同風險。官方 11 月 8 日的技術更新在 BEP171 條目提出將 IAVL 證明驗證升級到 ICS23 規格,兩篇事故文則未使用 IAVL 這個詞。
設計建議與驗收條件
以下是依案例提出的設計建議,驗收條件仍需按實際系統調整。
- 先查哪些簽章會一起失守。 把每把金鑰標上「哪個組織、哪套基礎設施、哪個身分系統失陷就能用」,任何共用依賴都要納入失陷範圍,不能只因標籤組合不同就分開計算。Ronin 的 4 把 Sky Mavis 金鑰加 1 個經 Sky Mavis 環境可取得的簽章,都可能因 1 個環境失陷而被取得。驗收:任選一個組織的全部環境(主機、CI、雲帳號、員工裝置)視為失陷,直接或透過代簽權取得的簽章,按金鑰去重後必須少於門檻。
- 代簽權與 allowlist 要有擁有者與到期日。 Ronin 在 2021 年 11 月為分發免費交易設立 allowlist,12 月停止這項安排後,存取權仍未撤銷。驗收:列出所有「A 可以代 B 簽」的邊,每條有業務理由與到期日;業務停止後跑一次請求,必須被拒絕。
- 大額提款要有獨立的額外核准。 Back to Building 寫,新橋部署後,這種規模的提款必須有人員介入,並規劃用 validator dashboard 核准大額交易與增刪 validator;4 月 27 日這篇沒有寫金額門檻。分級與每日上限出自 6 月 28 日的〈The Ronin Bridge Is Open〉:Tier 1 要 70% 的 validator 簽章;Tier 2 金額大於等於 100 萬美元,要 90%;Tier 3 金額大於等於 1,000 萬美元,要 90% 加人工審查,並須經過 7 天審查流程。初始每日提款上限是 5,000 萬美元,每天 00:00 UTC 重設,但當天提早用完時,administrator 可以提前重設,因此它並非無法突破的每日總額。Tier 3 也不計入這 5,000 萬美元上限,公告給的理由是該級已需要行政操作。新橋另有 circuit-breaker,用來暫停可疑的大額提款。後來的代幣數量分級見前文。驗收時,持有門檻數量的金鑰,仍不得在缺少獨立人工核准時提出超過設定上限的金額;如果管理員可重設上限,或有級別不計入上限,就要逐條測試例外。同一失陷環境不得兼有簽署與額外核准的能力,也不得自行重設上限或改寫分級來繞過核准;上限與 kill switch 的故障方向見〈沒設定就當成零:預設硬上限、four-eyes 門檻與 kill switch 故障方向〉。
- 大額流出要有監控,而且監控在簽署者的環境之外。 Ronin 當時沒有大額流出監控,攻擊六天後才由使用者回報發現。驗收:模擬一筆超過閾值的提款,告警在約定時間內送達簽署環境以外的人;簽署環境失陷不能關掉這個告警。
- 加節點之前先數控制者。 Ronin 從 9 增至 11、目標 21,官方沒有寫每個組織各持幾把。驗收:逐一檢查各組織能取得的簽章;任一組織失陷後可取得的簽章必須少於門檻,排除該組織後,其餘組織仍須足以完成簽署。
- 驗證邏輯也可能成為單點。 BNB Token Hub 的 200 萬 BNB,官方描述的攻擊路徑是偽造證明。驗收:假設證明驗證函式庫被繞過,單位時間可鑄出或提出的金額仍須受上限限制,這項限制要獨立執行,不能因同一個漏洞而失效。
- 多鏈共用簽署端時,每條鏈各有自己的政策與上限。 這是共用簽署端的設計情境,不能拿幣安 2026 的 Ethereum 鏈上觀察來證明它就是入侵根因。驗收:簽署端在一條鏈上簽出授權的能力,不能延伸成其他鏈的無限額轉帳。
範例:算一算失陷後拿得到幾把
下面的 count_controllers.py 示範第 1 條驗收的一部分。每把金鑰標示持有環境,再列出代簽關係,輸入失陷的環境集合,就能算出攻擊者可取得多少簽章、是否達到門檻。這是用來比較控制權分配的模型,沒有描述 Ronin、Harmony 或其他鏈的實際金鑰儲存方式。
模型只處理直接金鑰與單層代簽關係,不會追蹤多層授權,也未測試排除某組織後能否繼續簽署,實際驗收仍要補上這些情境。
# 門檻簽章的控制圖模型。
# 每把金鑰標一個持有環境;另有一組「代簽邊」:環境 X 失陷後可取得金鑰 Y 的簽章。
# 輸入失陷的環境集合,輸出可及的簽章數與是否達門檻。
# 這只是模型,用來說明「數金鑰」和「數控制者」會給出不同答案,
# 不描述 Ronin、Harmony 或任何一條鏈實際的金鑰儲存方式。
from dataclasses import dataclass, field
@dataclass(frozen=True)
class Scheme:
threshold: int
keys: dict[str, str] # 金鑰 -> 持有環境
delegations: frozenset[tuple[str, str]] = field(default_factory=frozenset)
# (環境, 金鑰):該環境可取得這把金鑰的簽章,即使金鑰在別的環境
def reachable(scheme: Scheme, compromised: set[str]) -> set[str]:
direct = {k for k, env in scheme.keys.items() if env in compromised}
delegated = {k for env, k in scheme.delegations if env in compromised}
return direct | delegated
def report(name: str, scheme: Scheme, compromised: set[str]) -> None:
got = reachable(scheme, compromised)
verdict = "達門檻" if len(got) >= scheme.threshold else "未達"
print(f"{name}: 失陷 {sorted(compromised)} -> 可及 {len(got)} / 門檻 {scheme.threshold},{verdict}")
# 案例 1:9 把、門檻 5;A 公司持 4 把,B 組織 1 把,其餘 4 把分屬四個組織。
# B 的那把另有一條未撤銷的代簽邊,讓 A 的環境可取得它的簽章。
keys9 = {f"a{i}": "A" for i in range(1, 5)}
keys9["b1"] = "B"
keys9.update({"c1": "C", "d1": "D", "e1": "E", "f1": "F"})
case1 = Scheme(5, keys9, frozenset({("A", "b1")}))
report("案例 1 代簽邊未撤銷", case1, {"A"})
# 案例 2:同設定,代簽邊已撤銷。
case2 = Scheme(5, keys9)
report("案例 2 代簽邊已撤銷", case2, {"A"})
# 案例 3:加到 11 把、門檻 6,代簽邊已撤銷,但新增 2 把也放在 A 的環境。
keys11_same = dict(keys9, a5="A", a6="A")
case3 = Scheme(6, keys11_same)
report("案例 3 加節點但同一環境", case3, {"A"})
# 案例 4:11 把、門檻 6,新增 2 把分屬兩個新組織 G、H,代簽邊已撤銷。
keys11_split = dict(keys9, g1="G", h1="H")
case4 = Scheme(6, keys11_split)
report("案例 4 加節點且分屬新組織", case4, {"A"})
# 案例 5:4 把、門檻 2,其中 2 把在同一環境。這是模型參數,並非任何一座橋的官方門檻。
case5 = Scheme(2, {"p1": "P", "p2": "P", "q1": "Q", "r1": "R"})
report("案例 5 四把兩把同環境", case5, {"P"})
# 驗收用法:對每個環境各跑一次,全部要「未達」。
print("---")
for env in sorted(set(case4.keys.values())):
report("案例 4 逐環境驗收", case4, {env})
案例 1 代簽邊未撤銷: 失陷 ['A'] -> 可及 5 / 門檻 5,達門檻
案例 2 代簽邊已撤銷: 失陷 ['A'] -> 可及 4 / 門檻 5,未達
案例 3 加節點但同一環境: 失陷 ['A'] -> 可及 6 / 門檻 6,達門檻
案例 4 加節點且分屬新組織: 失陷 ['A'] -> 可及 4 / 門檻 6,未達
案例 5 四把兩把同環境: 失陷 ['P'] -> 可及 2 / 門檻 2,達門檻
---
案例 4 逐環境驗收: 失陷 ['A'] -> 可及 4 / 門檻 6,未達
案例 4 逐環境驗收: 失陷 ['B'] -> 可及 1 / 門檻 6,未達
案例 4 逐環境驗收: 失陷 ['C'] -> 可及 1 / 門檻 6,未達
案例 4 逐環境驗收: 失陷 ['D'] -> 可及 1 / 門檻 6,未達
案例 4 逐環境驗收: 失陷 ['E'] -> 可及 1 / 門檻 6,未達
案例 4 逐環境驗收: 失陷 ['F'] -> 可及 1 / 門檻 6,未達
案例 4 逐環境驗收: 失陷 ['G'] -> 可及 1 / 門檻 6,未達
案例 4 逐環境驗收: 失陷 ['H'] -> 可及 1 / 門檻 6,未達
案例 1 與案例 2 只差一條代簽邊,撤銷後就無法達到門檻。案例 3 把門檻提高到 6、金鑰加到 11,但新增的兩把仍在同一環境,攻破它就能湊齊簽章;案例 4 同樣是 11 把、門檻 6,新增的兩把分屬新組織,在模型設定下,單一環境失陷便不足以簽署。案例 5 是四把裡兩把同環境、門檻 2 的模型,單一環境也足以達到門檻。最後八行逐一檢查各環境,全部顯示「未達」才通過這項檢查。
尚未釐清的事
- 攻擊者進入 Sky Mavis 的 IT 基礎設施後,如何控制 4 把金鑰,是否曾匯出私鑰,官方報告沒有交代;受託鑑識公司的完整報告也未核得。
- 第 5 個簽章的技術形式仍有空白。Community Alert 正文寫代簽權,Q&A 一處寫 Axie DAO validator 在 2021 年 11 月加入 allowlist、12 月停用後 IP 仍在清單中,另一處又稱五把私鑰遭入侵,其中 4 把屬 Sky Mavis、1 把屬 Axie DAO。文件沒有說明這三種描述在實作上如何對應,不能推定私鑰一定遭複製。
- 2022 年 6 月 28 日的〈The Ronin Bridge Is Open〉已讀全文。該文把 173,600 ETH 與 25.5M USDC 的轉出寫成「on March 29, 2022」,這是重啟公告自己的用詞。本文的攻擊日 3 月 23 日仍依〈Community Alert: Ronin Validators Compromised〉與〈Back to Building: Ronin Security Breach Postmortem〉,發現日 3 月 29 日同樣依這兩篇。6 月 28 日這篇沒有寫重啟當日的 validator 總數,也沒有各組織持有數,這兩個數字仍未核得。
- Ronin 之後 11 個與目標 21 個 validator 的控制者分配,4 月 5 日只給了正在加入的五個組織名稱,沒有各持幾把。8 月 17 日〈New Ronin Validators!〉的 17 個,以及 9 月 9 日〈Google Cloud Ronin Network Validator〉的第 18 個,也沒有各組織持有數。
- Harmony 在 2022 年 8 月 3 日以「我們相信」描述入侵路徑:至少一名開發者受釣魚誘導,在筆電安裝惡意軟體,攻擊者因此讀取聊天紀錄或非公開的橋基礎設施程式碼,並取得伺服器後門。文內的 6 月 17 日木馬仍在調查,6 月 2 日伺服器紀錄也被註明不足以單獨解釋入侵,後續鑑識結論尚未核實。本文查閱了 Harmony 部落格與論壇,尚未核得 8 月 3 日之後確認完整入侵路徑的官方鑑識報告,這不代表報告不存在。
- 幣安 2026 的簽署授權如何取得。幣安 2026 年 11 月 2 日的〈Security Incident | Recovery Update #5〉內容是 10 月 31 日的 PoR 快照驗證、回補與提款進度,沒有簽署授權、熱錢包金鑰或根因的資訊。「根因尚未公布」仍是 TRM 的句子,頁首日期 2026-10-29,數字截至 2026-10-30 00:30 UTC。本文未核得可完整解釋授權取得過程的官方報告。
- Axie Infinity 的使用者數與橋的規模,尚缺當期官方數字。
- Numen 對 BNB 的 IAVL 分析仍自述未完成,本文只把官方記載的偽造證明當作案例依據。
後續想談的是,交易所該公開哪些資料,才能讓外部持續核對資產、負債與交付能力。
補充筆記
- Ronin 的 5 of 9 由一家公司的 4 把金鑰,加上從同一環境可取得的第 5 個簽章湊齊。門檻要算單一環境失陷後拿得到的簽章,金鑰數或節點數單獨不夠。
- 代簽權要有到期日,業務停了權限要跟著停。
- 攻擊到發現隔了六天,官方稱事件由使用者回報揭露,當時也缺少大額流出監控;本文建議把監控放在簽署者環境之外。
- Ronin 6 月重啟公告為分級提款設了每日上限,也列出例外:管理員可重設上限,Tier 3 不計入。驗收要測試這些例外,確認失陷的簽署環境不能自行繞過核准。
- Harmony 官方寫四把私鑰中至少兩把失守,事後把 Ethereum 側改成 4-of-5,當時門檻參數沒交代;BNB 官方描述的攻擊路徑是偽造證明。
- 驗收從「某環境整個失陷」開始算,對每個環境各跑一次。
延伸閱讀
- Community Alert: Ronin Validators Compromised(Wayback 2022-03-29 22:08:45):當事方第一天的公告,門檻、allowlist 三種寫法、門檻提到 8 與攻擊者地址的出處。
- Ronin 官方 X 2022-03-29 的兩則貼文:當事方第一時間的安全事件、金額與暫停公告。
- Securing Ronin:當事方 2022-04-05 的公告,五個正在加入的組織與 21 個獨立節點的目標,沒有各組織持有數。
- Back to Building: Ronin Security Breach Postmortem(Wayback 2022-12-06):當事方 2022-04-27 的 postmortem,這裡引用存檔版本,是攻擊日、員工失陷到 IT 基礎設施、加節點與新橋人工核准的出處。該文寫,若進度順利,橋會在 5 月中下旬重開,實際的重開公告是 6 月 28 日。
- The Ronin Bridge Is Open:當事方 2022-06-28 的重啟公告。三次稽核、分級門檻、每日上限、管理員可提前重設、Tier 3 不計入上限,以及 governor 與 validator 類比的出處。轉出日寫成 3 月 29 日。
- New Ronin Validators!:當事方 2022-08-17 的公告,新增 Efficient Frontier、Community Gaming、Nansen,總數 17。文中的 70% 是在介紹新增 validator 的提案投票,需當時 validator 的 70% 同意,提款分級的 70% 寫在 6 月 28 日的重啟公告。沒有各組織持有數。
- Google Cloud Ronin Network Validator:當事方 2022-09-09 的公告,引述 Aleksander Larsen 稱 Google Cloud 為第 18 個 validator。沒有各組織持有數。
- Withdrawal limits:Ronin Docs 的提款頁,last updated 2026-05-12,以代幣數量分級,與 2022-06-28 的美元分級分開。本文核對的是文件頁,未驗證鏈上參數。
- FBI 2022-04-14 聲明:執法機關歸因,原文沒有點名 Ronin。美國財政部 2022-05-06 新聞稿:寫 Axie Infinity 與 3 月 23 日,正文沒有 Ronin 一詞與地址。OFAC 2022-04-14 制裁更新:地址清單,沒有事件敘述。
- Harmony’s Horizon Bridge Hack:Harmony 官方 Medium,2022-06-24 起更新至 07-14。6 月 25 日 Update #2 寫金鑰存放與事後的 4-of-5。頁面最後一則編號更新是 7 月 14 日的回補方案規劃進度,尚未提出完整方案,也未確認完整金鑰取得路徑。
- Summary of the Horizon Bridge Incident:Harmony 官方論壇 2022-08-03 的當事方摘要,頁面時間沒有標時區,金鑰取得路徑用「我們相信」,部分項目寫仍在調查。
- Governance Report: HIP-30v2:2023-08-03 的回收託管提案說明,規劃以 5-out-of-7 Recovery Multisig,由選出的保管人持有網路新發行的代幣,每月撥給處理脫鉤資產的 burn partners。文章仍在邀請投票,不足以證明安排已落實,也未將它列為 2022 年橋金鑰的後續配置。
- BNB Chain Ecosystem Update(2022-10-07)、BNB Chain: A Decentralized Response(2022-10-11)與 Technology Update of BNB Chain in Oct 2022(2022-11-08):當事方公告與修補清單,前兩篇沒有用 IAVL,第三篇的 BEP171 條目有。Numen 的分析(Wayback 2023-02-08):第三方對 IAVL 的分析,存檔中的作者仍稱分析尚未完成。
- Security Incident | Recovery Update #5(貼文):幣安 2026-11-02 的 X 文章,談 10 月 31 日的 PoR 快照驗證、回補與提款進度,沒有簽署授權、熱錢包金鑰或根因。文中給了 Hacken 的 PoR 稽核連結,本文未另核該稽核頁。
- Chainalysis 2026-10-30 與 TRM,資料截至 2026-10-30:分析公司的鏈上重建,並非幣安或受託鑑識報告;前者的簽名授權句只講 Ethereum,後者頁首日期 2026-10-29,數字截至 2026-10-30 00:30 UTC,寫根因尚未公布。
- Ethereum glossary:多簽的技術背景,案例細節仍以當事方公告為準。
- NIST:Notes on Threshold EdDSA/Schnorr Signatures:門檻簽章的初版公開草案,摘要說明各方可在不重組完整私鑰的情況下共同產生簽章,本文未另核 PDF 全文。
- Multi-Party Threshold Cryptography:NIST CSRC 專案頁,頁面標 Updated October 13, 2026。標準機構對門檻方案的範圍說明,寫的是用 MPC 分散密碼學元件的信任。
- Cryptocurrency wallet 的 Multisignature wallet 段、Single point of failure、Threshold cryptosystem、Common cause and special cause (statistics)、Separation of duties、Spear phishing、Axie Infinity、Lazarus Group:百科條目,固定修訂版本,作背景與引用索引,不作案例證據。其中多簽段標 citation needed,Common mode failure 節標可能是 original research,Single point of failure 頁首標 needs more citations。
想法與技術判斷出自 Sheng,和 Claude 一起起草 · 題目由 Sheng 選定,內文、案例整理與範例由 Claude 撰寫,範例在 Linux 上以 Python 3.13.18 實測。