
curl 8.22.0 於 2026 年 9 月 2 日發布,修正 IPv6 字面位址目標經非通道 HTTP 代理存取時的失敗。curl 專案將它概括為修正非通道代理的主機名稱使用。底層報告顯示,用戶端回傳 CURLE_OUT_OF_MEMORY,但系統並未真的耗盡記憶體。
報告中的流程先成功連上代理,之後在建構代理請求 URL 時失敗。內部 IPv6 主機表示缺少 URL 主機所需的方括號,URL 設定操作失敗,外層路徑因而回傳誤導性的記憶體錯誤。curl 8.22 修正了正向代理請求使用的主機表示。
此修正適用於透過 HTTP 代理存取 IPv6 端點的資料蒐集、市場研究和可用性檢查。它是範圍明確的用戶端修正,不代表代理網路普遍中斷。
哪種請求需要優先測試
當目標是 IPv6 字面位址、用戶端使用 HTTP 正向代理、請求為沒有使用 CONNECT 的一般 HTTP、curl 必須為代理建構絕對形式請求目標,且應用程式把記憶體錯誤視為資源警報時,應優先回歸。
HTTPS 代理通常進入通道路徑;DNS 主機名稱解析得到 IPv6,也不同於在 URL 中直接寫入 IPv6 位址,必須分開測試。
為什麼錯誤會誤導營運
「記憶體不足」可能觸發工作程序重啟、擴充、堆積分析或斷路器。但在該報告中,代理連線已建立,失敗來自 URL 主機格式,而非記憶體耗盡。
升級後不能只檢查錯誤文字是否消失,還要確認代理收到語法正確的請求、IPv6 authority 完整保留,並驗證最終回應來自預期的受控端點。
相關 IPv6 重試可參考curl IPv6 scope 重試更新,若要區分位址變化與工作階段策略,可使用住宅代理工作階段黏著性測試。
建立受控回歸矩陣
使用組織擁有或獲准測試的正向代理與端點,準備 IPv4 字面位址 HTTP、IPv6 字面位址 HTTP、可用時包含雙協定的 DNS 主機名稱,以及透過正常通道路徑存取的 HTTPS 對照。
每個案例分別直連及經授權代理執行。保持代理憑證、標頭、逾時與回應驗證一致,只請求很小且固定的內容,並限制頻率。
記錄請求階段
記錄 curl/libcurl 執行版本、目標類別、直連/正向代理/CONNECT 路徑、代理解析與連線結果、代理 TCP 是否建立、請求目標與 authority 驗證、錯誤碼及發生階段、HTTP 狀態、內容驗證,以及新建或重用連線。
必須隱藏代理密碼、驗證標頭、Cookie、Token、客戶目標及業務資料,不能公開含憑證的原始 trace。
curl 8.22 的預期結果
對合法且受控的 IPv6 字面位址非通道代理請求:代理連線正常建立;IPv6 authority 在 URL 表示中保持有效;該路徑不再回傳誤導性的記憶體錯誤;代理收到預期請求;最終狀態與內容通過和直連對照相同的驗證。
無效 URL 仍必須失敗。修正不能讓畸形位址通過,也不能繞過代理、TLS 或主機政策。
上線驗證
確認服務程序實際載入的 libcurl,尤其注意容器、靜態程式及語言繫結。升級至 curl 8.22.0,或供應商明確回移此修正的版本。
依變更流程重啟或排空長期程序。先使用新連線執行,再以正常連線池重複,並依失敗階段比較錯誤碼,不要把所有失敗都歸類為「代理錯誤」。
監控 IPv6 字面位址成功率、正向代理建連成功率、URL 建構錯誤、異常記憶體警報、重試放大及通過內容驗證的回應。在穩定路徑證明修正前,不要透過輪替出口掩蓋問題。
驗收清單
- [ ] 實際程序使用 curl/libcurl 8.22.0 或已記錄修補的版本。
- [ ] IPv4 字面位址、IPv6 字面位址和 DNS 主機名稱分別測試。
- [ ] 正向代理與 CONNECT 模式分別標記。
- [ ] 代理連線階段可觀察。
- [ ] IPv6 authority 語法有效且完整。
- [ ] 修正路徑不再出現該誤導性記憶體錯誤。
- [ ] 最終狀態與內容都經過驗證。
- [ ] 比較新連線與重用連線。
- [ ] 重試及出口輪替不掩蓋首次失敗。
- [ ] 日誌不含憑證或正式資料。
常見問題
curl 真的記憶體不足嗎?
在報告的重現中不是。錯誤來自代理請求建構階段的 IPv6 主機表示失敗。
所有 IPv6 請求都會受影響嗎?
不會。報告範圍是 IPv6 字面位址目標經非通道 HTTP 代理的路徑;DNS 主機名稱、直連及 CONNECT 都是不同路徑。
應用程式可以忽略記憶體錯誤嗎?
不可以。真正的資源故障仍很嚴重。應升級並按階段分類錯誤,不能因一個已修正路徑就全域忽略錯誤碼。
輪替代理能解決嗎?
不能修正用戶端 URL 建構。應保持一條穩定授權路徑,升級用戶端並驗證請求及回應。
來源與合規說明
內部研究依據:curl 專案於 2026 年 9 月 2 日發布的 curl 8.22.0 公告;curl 專案問題「Proxied connections to IPv6 hostnames fail with CURLE_OUT_OF_MEMORY」,於 2026 年 7 月 23 日提出。外部資料 URL 只保存在內部營運記錄,公開文章不含外部連結。
只測試自己擁有或獲准評估的代理、IPv6 端點及網路,並遵守服務商限制、隱私義務、服務條款與變更流程。