連接分散式伺服器的網際網路路徑依序通過完整驗證環節

LDAP 請求能抵達伺服器,不代表完整驗證交換已被正確核實。代理路線又增加一層傳輸,因此必須分別判斷連通性、TLS 身分驗證、SASL 協商與最終授權。

本指南提供一套獲授權的迴歸方法。依據 curl 專案於 2026 年 9 月 2 日發布的 CVE-2026-13608,問題影響使用 OpenLDAP 後端的 curl 與 libcurl 建置:在非 TLS 的 LDAP:// 路徑上,不完整的 SASL 交握可能被誤認為已成功完成密碼學驗證。LDAPS:// 不會進入此路徑,因為用戶端會先驗證伺服器憑證。

測試目標是防禦性驗證。代理只是測試變數,不能取代身分檢查。

確認狹窄觸發條件

在調整代理設定前逐項核對:

  1. 實際程序載入 curl 或 libcurl 7.82.0 至 8.21.0;
  2. libcurl 以 OpenLDAP 後端建置;
  3. 應用程式使用 SASL 驗證;
  4. 請求使用明文 LDAP://,而非驗證憑證的 LDAPS://
  5. 網路路徑可能回傳不完整或過早結束的協商回應。

curl 8.22.0 及更新版本已修復,官方亦列出維護版本 8.20.1、8.16.1 和 8.14.2。容器、語言繫結與靜態建置可能不使用主機套件顯示的版本,因此必須從實際工作程序擷取執行時身分。

分開四類結果

每次測試都應明確分類:TCP 傳輸已建立、TLS 憑證鏈與主機名稱已通過、SASL 所有挑戰回應已完成,以及驗證身分取得預期目錄授權。

不能以一次成功查詢取代前三項證據,否則無法判斷真正通過的是哪一道邊界。

需要隔離 TLS 策略時使用代理 TLS 信任設定隔離指南;間歇失敗則依代理支援升級資料包指南整理去識別證據。

建立隔離 LDAP 測試台

使用組織自有目錄伺服器、最低權限的一次性測試憑證與合成目錄項目,並將環境置於隔離測試網路。不得使用正式身分或客戶紀錄。

建立直連對照、獲准的 TCP 轉送代理路線、應用程式正式支援的通道路線、作為安全協定對照的 LDAPS://,以及僅在隔離環境覆蓋狹窄路徑的 LDAP://

各組保持端點、帳戶、SASL 機制、查詢及回應一致,每次只改變協定或路線變數。

記錄完整交握

為測試分配 case ID,記錄不含祕密的狀態:位址選擇、連線建立、代理協商、LDAPS 的 TLS 啟動與憑證結果、SASL 機制選擇、依序號記錄的挑戰回應階段、明確的 SASL 完成狀態、授權結果及清理事件。

可記錄耗時、結果碼、curl 執行版本、LDAP 後端、路線類型和連線是否重用。不得記錄密碼、權杖、原始 SASL 資料、私鑰、代理憑證或目錄內容。

執行基線矩陣

先以已修復用戶端建立正常基線:

  1. 透過 LDAPS 連線並核驗憑證結果;
  2. 以有效的一次性憑證完成 SASL;
  3. 使用刻意無效的憑證並要求明確拒絕;
  4. 在每條獲准代理路線重複;
  5. 確認所有成功案例都有明確 SASL 完成事件;
  6. 確認失敗在目錄授權前停止;
  7. 使用全新程序重複,排除快取連線狀態。

之後僅在隔離測試台運行受影響建置。以受控測試端模擬提前結束 SASL 交換,安全預期必須是失敗。不得對公開或第三方目錄建立攔截測試。

謹慎測試連線重用

加入有限情境:有效繫結後在同連線查詢、前一有效程序結束後執行無效繫結、同身分邊界重用池化連線、保持端點與憑證不變但更換路線、代理通道在 SASL 階段關閉、明確完成前逾時,以及協商期間取消請求。

任何中斷都必須關閉或隔離連線,不能將部分驗證連線放回通用池。連線池索引鍵應包含端點、安全協定、信任設定、SASL 機制與身分邊界,而不只是代理主機名稱或出口 IP。

比較代理行為但不要誤判責任

代理可能延遲或關閉傳輸,卻不能替 LDAP 用戶端確認目錄伺服器身分。若只有一條路線失敗,應比較具體交握階段、耗時、通道結果與重用決策。

不要反覆輪換住宅代理 IP,直到偶然成功。這會破壞可重現性並掩蓋不完整驗證。固定路線重複相同 case,判斷故障位於傳輸、TLS、SASL 或授權層。

升級與驗證

升級至 curl 8.22.0 或更新版本,或採用明確包含相關修補的供應商建置。重新啟動長期運行的工作程序,清理舊 LDAP 池化連線,再重跑矩陣。

若暫時不能升級,公告建議避免使用不含 TLS 的 LDAP://。優先採用嚴格驗證憑證鏈與主機名稱的 LDAPS://。不能為了讓代理路線連通而關閉憑證驗證,否則只是將一種身分問題換成另一種。

發布時比較驗證失敗、不完整交握拒絕、TLS 錯誤、重用率與延遲。合格版本應維持有效流量正常,並拒絕所有過早結束或無效交換。

驗收清單

  • [ ] 從實際程序擷取 curl 版本與 OpenLDAP 後端。
  • [ ] 分別統計 LDAP 和 LDAPS 使用。
  • [ ] SASL 機制與完成狀態可觀察。
  • [ ] 有效憑證成功,無效憑證失敗。
  • [ ] 提前結束的交換安全失敗。
  • [ ] 部分驗證連線不會返回連線池。
  • [ ] 直連與獲准代理路線產生可比較證據。
  • [ ] LDAPS 憑證與主機名稱驗證持續啟用。
  • [ ] 工作程序使用 curl 8.22.0 或已驗證修補建置。
  • [ ] 已重新啟動或排空舊程序與舊連線。
  • [ ] 日誌不含憑證、原始 SASL 資料或目錄紀錄。

常見問題

所有 LDAP 用戶端都受影響嗎?

不是。公告限定於受影響版本中使用 OpenLDAP 後端、SASL 驗證和非 TLS LDAP 路徑的 curl/libcurl。

使用代理能修復交握嗎?

不能。代理負責傳輸位元組,用戶端仍需驗證伺服器並完整完成 SASL。

此問題會影響 LDAPS 嗎?

官方說明此狹窄路徑不會在 LDAPS 中觸發,因為冒充端會先在憑證驗證階段被拒絕。

來源與合規說明

內部研究依據:curl 專案安全公告「OpenLDAP SASL authentication bypass」,CVE-2026-13608,發布於 2026 年 9 月 2 日;curl 8.22.0 發布資訊。外部研究網址僅保存在內部營運紀錄中,本文不含外部連結。

僅測試您擁有或獲授權評估的目錄系統、帳戶、代理路線及網路,並遵守存取控制、隱私義務、供應商限制與組織變更流程。