
LDAP 請求能抵達伺服器,不代表完整驗證交換已被正確核實。代理路線又增加一層傳輸,因此必須分別判斷連通性、TLS 身分驗證、SASL 協商與最終授權。
本指南提供一套獲授權的迴歸方法。依據 curl 專案於 2026 年 9 月 2 日發布的 CVE-2026-13608,問題影響使用 OpenLDAP 後端的 curl 與 libcurl 建置:在非 TLS 的 LDAP:// 路徑上,不完整的 SASL 交握可能被誤認為已成功完成密碼學驗證。LDAPS:// 不會進入此路徑,因為用戶端會先驗證伺服器憑證。
測試目標是防禦性驗證。代理只是測試變數,不能取代身分檢查。
確認狹窄觸發條件
在調整代理設定前逐項核對:
- 實際程序載入 curl 或 libcurl 7.82.0 至 8.21.0;
- libcurl 以 OpenLDAP 後端建置;
- 應用程式使用 SASL 驗證;
- 請求使用明文
LDAP://,而非驗證憑證的LDAPS://; - 網路路徑可能回傳不完整或過早結束的協商回應。
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 資料、私鑰、代理憑證或目錄內容。
執行基線矩陣
先以已修復用戶端建立正常基線:
- 透過 LDAPS 連線並核驗憑證結果;
- 以有效的一次性憑證完成 SASL;
- 使用刻意無效的憑證並要求明確拒絕;
- 在每條獲准代理路線重複;
- 確認所有成功案例都有明確 SASL 完成事件;
- 確認失敗在目錄授權前停止;
- 使用全新程序重複,排除快取連線狀態。
之後僅在隔離測試台運行受影響建置。以受控測試端模擬提前結束 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 發布資訊。外部研究網址僅保存在內部營運紀錄中,本文不含外部連結。
僅測試您擁有或獲授權評估的目錄系統、帳戶、代理路線及網路,並遵守存取控制、隱私義務、供應商限制與組織變更流程。