發生什麼:Lightning Labs 要求節點換執行檔
Lightning Labs 技術長 Olaoluwa Osuntokun 於 2026-10-22 02:57 UTC(台北時間 10:57)在 X 發文,表示因 CVE-2026-111943(eMudhra CA 事件),強烈建議所有 lnd、btcd、tapd(Taproot Assets)與 litd(Lightning Terminal)用戶更新到新釋出的執行檔,或自行用 Go 1.27.3 重新編譯;Lightning Labs 官方帳號隨後轉貼。
對應版本的 GitHub 發布時間(UTC)如下:btcd v0.27.0 於 10/21 23:50,說明發布檔以 Go 1.27.3 建置;litd v0.17.8 於 10/22 01:38;lnd v0.21.5-beta.rc1 與 v0.20.6-beta.rc1 於 10/22 02:52–02:53,發布頁註明以 go1.27.3 編譯;tapd v0.8.7 於 10/22 02:55。tapd 與 litd 的說明直接寫明是為了處理 CVE-2026-111943 並建議所有用戶升級。
時序上分兩步:lnd 這兩個版本在 10/22 先以 pre-release(rc1)形式釋出,litd v0.17.8 內附的也是 lnd v0.21.5-beta.rc1。10/27 01:21 UTC,lnd 維護者推送了經 GPG 簽章的 v0.21.5-beta 與 v0.20.6-beta 正式版標籤(v0.21.5-beta 指向合併 PR #11420「bump version to v0.21.5」的 commit da86bef)。同日 18:20 UTC(台北時間 10/28 02:20),GitHub 正式公開 v0.21.5-beta 與 v0.20.6-beta 兩個 Release,標示為正式版(非 pre-release),附 Linux、macOS、Windows、FreeBSD 等平台的預編譯檔、原始碼與 vendor 壓縮檔,以及多位維護者簽章的 manifest 與 OpenTimestamps 時間戳檔;發布說明寫明發布檔以 go1.27.3 編譯、可重現建置,且本版沒有資料庫遷移。
原始證據:Go 標準庫的憑證驗證被加上黑名單
問題源頭不在比特幣或閃電協議,而在公開憑證體系。Google 表示,Chrome 根憑證計畫於 2026-10-17 18:05 UTC 接獲研究人員通報:8 張 eMudhra 中繼 CA 憑證的私鑰以不足的隨機性產生,任何人都可能據此偽造受信任的 HTTPS 憑證。eMudhra 於 10/18 撤銷這些憑證,並在聲明中表示問題限於 2025 年 4 月金鑰產生儀式所建立的這批中繼 CA,除一張外都未投入生產,且全部未簽發過終端憑證。依 Cisco Talos 整理,8 張中有 6 張用於 TLS、2 張用於程式碼簽章。
瀏覽器端處理得很快:Chrome 於 19:45 UTC 以 CRLSet 依公鑰封鎖;Mozilla 表示 20:06 UTC 收到通報、22:59 UTC 完成 OneCRL 推送。Google 也指出,在封鎖前沒有任何鏈到這 6 張 TLS 中繼憑證的憑證被記錄到憑證透明度(CT)日誌。
Go 的狀況不同。Go 發布紀錄顯示 go1.27.3 於 10/19 發布,含 crypto/x509 安全修補;Go 漏洞資料庫 GO-2026-6809 說明,多數平台 Go 會使用系統根憑證,但在系統信任庫未更新的較窄情境下仍可能受影響,因此在 crypto/x509 加入黑名單,Certificate.Verify 遇到這些中繼憑證就回傳錯誤。受影響範圍是 1.26.10 之前與 1.27.0 至 1.27.3 之前的 Go 版本。Talos 表示,截至 10/21 14:00 UTC 尚未看到野外惡意利用。
與一般「更新 Go」的差別:已編譯的執行檔不會自己變安全
Go 程式會把標準庫編進執行檔。tapd v0.8.7 的發布說明特別寫明:更新主機上的 Go 安裝不會修補既有執行檔,必須安裝新發布檔,或從 v0.8.7 標籤用 Go 1.27.3 重建。這對以 Docker 映像或套件管理器部署節點的營運者很重要,因為映像內的舊執行檔不會因為主機升級而改變。
版本之間還有一個細節。tapd 在 10/22 19:18 UTC 又發布 v0.8.8,說明是修補 v0.8.6 引入、可能導致資產發票(asset invoice)無法結算的回歸問題;而 litd v0.17.8 的組件表列出內附 Taproot Assets 仍為 v0.8.6(以 Go 1.27.3 重編)。換句話說,litd 用戶這次拿到的是憑證修補,但 v0.8.8 所修的資產發票回歸不在這個 litd 版本內。tapd 與 litd 的說明也都建議升級前備份資料庫,使用 Taproot Assets 通道者應依安全指南安排受控更新。
對讀者的影響
自架 lnd、tapd、litd 或 btcd 節點的營運者,是這次最直接的行動對象:確認執行檔是否以 Go 1.27.3(或 1.26.10)以上版本建置,否則換用新發布檔或自行重建。對 lnd 用戶來說,10/27 18:20 UTC 起已可直接換用官方 v0.21.5-beta(0.21 系列)或 v0.20.6-beta(0.20 系列)正式版預編譯檔,下載後依發布說明以 GPG 驗證 manifest 簽章並比對 sha256;仍在跑 10/22 RC 發布檔的節點,也可改回正式版軌道。偏好自行建置者,可從正式版標籤以 Go 1.27.3 重建。依 git 比對,正式版相較 rc1 多了 PR #11413 對 SQL 後端節點啟動清理過慢的修正,以及 pgx v5 等模組版本調整,未見與憑證修補相關的新變動。
一般使用託管錢包或第三方閃電服務的用戶,不需要自己動手,但可以留意服務商是否公告完成更新。Talos 描述的風險是 TLS 伺服器冒充:攻擊者若能攔截或導流連線,且客戶端仍信任受影響金鑰、又沒有其他防護擋下,就可能讀取或竄改流量。
AI 觀點分析與推論
AI 觀點:實際風險不高,但這次更新的真正教訓在部署方式
我傾向認為,這次對閃電節點的實際攻擊面有限。lnd 與 btcd 的 RPC 慣用自簽憑證,節點之間的閃電 P2P 連線用的是 Noise 協議而非公開 CA 憑證;會用到公開 CA 驗證的,主要是節點對外連的 HTTPS 服務,例如外部手續費估算 API 或 Taproot Assets 的 universe、報價服務。加上 eMudhra 稱這些中繼憑證從未簽發終端憑證、Google 稱封鎖前 CT 日誌沒有相關憑證、Talos 未見野外利用,我認為實際被利用的門檻主要不在私鑰(Google 指出任何人都可能據此偽造憑證),而在攻擊者必須能攔截目標流量,且目標程式沒有其他防護。
但我不認為這代表可以不更新。Go 把這份黑名單編進執行檔,正是靜態部署與容器環境的盲點:瀏覽器在幾小時內就靠集中名單完成封鎖,Go 程式則要等每個專案重建、每個營運者換檔。Lightning Labs 這次在 Go 修補發布後約三天內,替 lnd、tapd、litd 出了以 Go 1.27.3 建置的版本,btcsuite 的 btcd 也同步跟進,回應速度不慢;比較可惜的是 lnd 先只出 RC,正式版 Release 與官方執行檔到 10/27 18:20 UTC 才公開,比 RC 晚了約五天半,讓只跑正式版的保守營運者這段期間多了一道自行重建或接受 RC 的取捨。
若之後出現以下訊號,我會調整判斷:有人回報利用這些中繼憑證的實際攻擊,或 Lightning Labs 揭露 lnd 有特定功能依賴公開 CA 驗證且暴露在攻擊路徑上。下一個值得觀察的是 litd 是否推出新版、改為收入 lnd 正式版與 tapd v0.8.8(截至台北時間 10/28 02:30,litd 最新仍是 v0.17.8)。




