由憑證信任閘道分隔的剪紙網際網路路線

curl 專案於 2026 年 9 月 2 日隨 curl 8.22.0 發布 CVE-2026-80231。這個低風險問題涉及 Windows 與 macOS 的 HTTPS 連線重複使用:後續傳輸即使透過 CURLSSLOPT_NATIVE_CA 要求不同的原生 CA 儲存區設定,也可能重複使用同一主機名稱下已建立的連線。

重複使用中的 TLS 連線不會重新執行憑證握手。若連線池把不同信任設定誤判為等價,後續請求就可能沿用建立舊連線時的驗證結果。

該問題同時影響 libcurl 應用程式與 curl 命令列工具。它不是代理供應商漏洞,但代理與資料蒐集系統通常大量重複使用客戶端、控制代碼及連線池,因此升級後仍應驗證真正的信任邊界。

精確判斷影響範圍

官方公告列出的範圍為:

  • 受影響版本:curl 7.71.0 至 8.21.0;
  • 已修正版本:curl 8.22.0 及以上;
  • 受影響系統:Windows 與 macOS;
  • 受影響行為:後續傳輸的原生 CA 設定不同,卻重複使用舊 HTTPS 連線;
  • 嚴重性:低風險。

不要把所有 curl 部署都判定為受影響。純 Linux 工作節點不在公告範圍;從不切換原生 CA 設定的服務也可能無法觸發此路徑。應先核對執行時版本、作業系統、TLS 設定與連線池行為。

為何代理架構需要關注

HTTPS 代理與 HTTPS 來源站點可能形成兩個獨立 TLS 跳點。代理憑證由代理專用信任選項控制,來源站點憑證則由來源信任選項控制。一次請求成功,只能證明目前連線曾在某個設定下通過驗證,不能證明建立連線時使用的就是本次要求的設定。

下列情境更需要檢查:

  • 公網蒐集工作使用系統信任庫,內部研究工作使用私有 CA;
  • 區域工作節點變更信任選項但未重建連線池;
  • 長期執行的服務跨租戶重複使用 easy handle;
  • 測試工具對同一主機交替使用原生 CA 與檔案 CA;
  • HTTPS 代理客戶端隔離了代理信任,卻未隔離來源站連線。

安全原則是:所有會改變 TLS 身分或信任判斷的設定,都必須納入連線池鍵。

立即回應步驟

  1. 盤點 Windows 與 macOS 工作節點上的 curl、libcurl 版本。
  2. 查找 CURLSSLOPT_NATIVE_CA--ca-native 與封裝層等價設定。
  3. 定位共享控制代碼、multi handle、連線快取和長生命週期客戶端池。
  4. 升級到 curl 8.22.0 及以上,或透過正式依賴流程套用修補程式。
  5. 重新啟動長期執行程序,清除舊程式庫與既有連線。
  6. 在恢復混合信任策略連線池前執行受控回歸測試。

官方臨時緩解措施是在使用原生 CA 儲存區的傳輸中啟用 CURLOPT_FORBID_REUSE。它會增加建立連線的成本,應量測延遲與資源影響,並視為升級前的過渡方案。

建立安全回歸矩陣

只使用組織擁有的測試端點與憑證。準備兩套信任設定:

  • 設定 A 信任作業系統原生 CA 儲存區;
  • 設定 B 只信任專用測試 CA,或明確排除設定 A 會接受的憑證。

針對同一測試主機執行:

  1. 使用設定 A 建立連線並記錄是否為新連線;
  2. 在同一客戶端池中切換到設定 B;
  3. 確認第二次請求會按設定 B 新建 TLS 連線,或依預期憑證驗證失敗;
  4. 反向執行設定 B 到設定 A;
  5. 關閉連線重複使用後再測一次,作為控制組;
  6. 涵蓋閒置逾時與連線池淘汰情境;
  7. 在實際部署的 Windows 與 macOS 建置上分別測試。

不得使用 --insecure 或關閉驗證來讓測試通過。只有憑證決策與目前信任設定一致,測試才算成功。

分離代理信任與來源站信任

存在 HTTPS 代理時,應分別記錄:

  • 代理主機名稱、憑證鏈、信任來源與連線識別碼;
  • 來源站主機名稱、憑證鏈、信任來源與連線識別碼;
  • 是否透過 CONNECT 通道存取來源站;
  • 兩個 TLS 連線分別是新建或重複使用;
  • 每個跳點的原生 CA 旗標與自訂 CA 設定。

可參考代理 TLS 信任設定隔離指南設計連線池鍵,並以代理繞過稽核確認受信路徑失敗時不會靜默直連。

記錄不得包含私鑰、代理密碼、授權標頭、Cookie 或完整敏感 URL。測試編號、主機類型、憑證指紋、信任設定 ID 與重複使用結果通常已足夠。

驗收清單

  • [ ] 切換原生 CA 設定後不會重複使用舊設定建立的連線。
  • [ ] 反向切換同樣得到與目前設定一致的結果。
  • [ ] 代理 TLS 與來源站 TLS 設定彼此獨立。
  • [ ] 直連與代理測試都有可歸因的連線識別碼。
  • [ ] 憑證拒絕為硬失敗,不會觸發未授權直連。
  • [ ] 重新啟動後執行時確認為 curl 8.22.0 或已驗證修補版本。
  • [ ] 遙測可區分新建與重複使用連線,且不洩漏憑證。

FAQ

Linux 是否受影響?

官方公告把問題限定在 Windows 與 macOS。混合作業系統叢集仍應核對每個實際二進位檔,不要依節點名稱推斷。

curl 命令列工具是否受影響?

受影響。公告明確指出命令列工具與 libcurl 應用程式都在範圍內。

住宅代理會造成此問題嗎?

不會。問題源自 curl 在原生 CA 設定不同時錯誤重複使用 HTTPS 連線。代理會增加一個可能獨立的 TLS 跳點,因此應分別驗證兩條信任路徑。

停用重複使用是否足夠?

這是官方提供的臨時措施,但會影響效能,也不能取代升級。應設定明確的移除計畫。

來源與合規說明

內部研究依據:curl 專案「native CA store conn reuse」安全公告,CVE-2026-80231,發布於 2026 年 9 月 2 日;curl 8.22.0 發布資料。外部資料 URL 只保存在內部營運記錄中,公開文章不含外部連結。

只在擁有或獲授權的系統、端點、代理帳號與信任庫上進行憑證測試,並遵守服務條款、隱私要求、速率限制與組織變更流程。