資安雷達 2026 年 10 月 21 日

2026-10-21 — eMudhra 八張中繼 CA 私鑰可被還原,信任庫須更新

primary=https://blog.cloudflare.com/emudhra-certificate-compromise/ primary=https://emudhra.we-have-a-problem.com/

eMudhra 八張中繼 CA 私鑰可從憑證還原,瀏覽器已封鎖、runtime 要更新信任庫

Cloudflare Blog、emudhra.we-have-a-problem.com · 2026-10-20

eMudhra 的八張中繼憑證(intermediate CA)私鑰是被 CA 自己「錯誤產生」的,任何人都能從公開憑證直接還原私鑰,等於任何人都能替任意網域簽出受信任的憑證。這八張憑證都鏈到 Mozilla、Microsoft、Apple、Chrome 四大根憑證計畫收錄的根。Cloudflare 於 10 月 20 日公布處置,Mozilla 的 Dennis Jackson 同日開了測試與套件版本頁面。

漏洞機制

Dennis Jackson 的說明頁寫得很直接:中繼憑證的私鑰由 CA 錯誤產生,因此可以由憑證本身推回私鑰。他用八張中繼憑證各自的私鑰簽署訊息「We have a problem here - Wayne」作為證明,驗證用 openssl dgst 搭配 SHA-384。

金鑰演算法、長度與具體的產生缺陷,兩份來源都沒有寫,細節在頁面所連的 Mozilla bug 2083449,本文未取得。Cloudflare 的文章也只說這些金鑰「weak」,並表示其安全審查「has not identified active exploitation」。

頁面還提到這些憑證建立於 2025 年 4 月,且當時在 CT log 中沒有對應條目。換句話說,沒有人能靠 Certificate Transparency 發現它們被拿來簽發了什麼。

受影響範圍

被點名的例子是 EM-DV-TLS-CA-G3B,其餘七張列在頁面的 impacted-intermediates.json。頁面的 workaround 段提到兩個根:「Comodo AAA Services root」與「emSign ECC Root CA - G3」。

各端的封鎖時間不同:

  • Firefox 與 Chrome:自 2026-10-17 起封鎖,機制為 OneCRL、CRLite、CRLSets。
  • Apple 裝置:自 2026-10-19 起封鎖。
  • 其他 client:需要軟體更新才會不再信任這些中繼憑證,這是最容易漏掉的一群。

瀏覽器能秒封,是因為它們有推送式的撤銷清單。後端服務、CLI、容器映像多半靠系統 CA bundle 或語言 runtime 內建的信任庫,沒有人推清單給它們,就會繼續信任這八張憑證。Cloudflare 也提醒,瀏覽器測試通過,不代表背景服務已受保護。

Cloudflare 的處置

Cloudflare 在 10 月 19 日約 17:00 UTC 得知,優先修補「用公開憑證驗證遠端端點」的服務,例如代理到源站、應用程式呼叫外部 API。共用信任庫與 base image 先更新,再 reload、restart 或重新部署;有自帶信任庫的應用另外評估。

時間(UTC)事件
10/20 02:00Cloudflare One Client 與 WARP 更新發布(iOS 待 App 審核)
10/20 09:15cloudflared 安全更新發布
10/20 19:20CDN 與伺服器端 Zero Trust 緩解全數部署

Cloudflare 列出的修補版本包含 cloudflared 2026.10.2(容器部署需重新部署修正後的映像)、Cloudflare One Client 2026.8.2115.0(Windows、macOS、Linux)。

影響範圍:誰要檢查什麼

  • 用 Mutual TLS 的團隊:檢查用來驗證 client 憑證的信任庫或上傳的 CA。
  • 用 Full (strict) 或 Strict 模式的源站:檢查自訂源站憑證與伺服器設定,Cloudflare 計畫讓 Automatic SSL/TLS 通知仍用被撤信任憑證的客戶。
  • 跑容器或 Sandbox 的人:檢查映像與相依套件裡的信任庫;啟用 HTTPS egress interception 的容器,遠端憑證驗證改由 Cloudflare 管理,已受保護。
  • 開發者:確認實際的 TLS 驗證路徑,SDK 可能把驗證交給函式庫、runtime 或 OS;間接相依也要查。不要為了消除錯誤而關閉憑證驗證。

修補版本與緩解

Dennis Jackson 的頁面列出各套件的修補版本,以下摘錄常見者,其餘請看原頁:

軟體修補版本
NSS3.131.1
Go1.27.3、1.26.10
Python certifi2026.10.19
Rust rustls-webpki0.103.16
Alpine ca-certificates20261020-r0
Electron44.9.1、43.8.1、42.11.16
Node.js、Bun、Fedora、FreeBSD尚未釋出(pending)

暫時無法升級時,頁面給了專家用的 workaround,做法是把兩個根從信任庫移除。以 Debian 與 Ubuntu 為例,在 /etc/ca-certificates.conf 把兩個根的條目前面加 !,再執行 update-ca-certificates。頁面註明這不建議一般使用者採用。

# Debian/Ubuntu:停用兩個受影響的根
# /etc/ca-certificates.conf 內,對應條目前加 !
update-ca-certificates

驗證是否生效,可對 https://dv-g3b-emudhra.we-have-a-problem.com/ 與 https://dv-g3b-aaa-emudhra.we-have-a-problem.com/ 發請求:看到憑證錯誤才是正確結果,表示 client 已不信任這些中繼憑證。順帶一提,macOS 的 /usr/bin/curl 使用的 /etc/ssl/cert.pem 尚未更新,也不檢查撤銷,頁面另有處理方式。

來源未說明的部分:金鑰缺陷的具體成因、eMudhra 的後續處理與是否有人實際濫用,本文不作推測。

原始來源:Cloudflare 公告、Dennis Jackson 測試與套件版本頁


End of article
0
Would love your thoughts, please comment.x
()
x