curl 8.22 修正公共後綴 Cookie 作用域:代理採集器稽核指南

curl 專案於 2026 年 9 月 2 日隨 curl 8.22.0 發布 CVE-2026-82209。官方公告描述一個低嚴重度 Cookie 作用域問題,影響啟用 Public Suffix List 支援的 curl 與 libcurl。
在公告的特殊情境中,本身屬於公共後綴的來源站回傳 Set-Cookie,且 Domain 明確等於該後綴。受影響版本可能沒有把 Cookie 收緊為僅主機 Cookie,而是保存成萬用網域作用域。用戶端之後要求或重新導向至同一公共後綴下的兄弟子網域時,就可能傳送該 Cookie。
官方說明攻擊者不能自行種下初始 Cookie;必須由公共後綴頂點簽發,而且用戶端之後造訪攻擊者控制的兄弟網域。代理採集器仍應重視,因為長期工作程序經常結合自動重新導向、持久 Cookie Jar 與多個無關目標。
確認影響範圍
- 執行 curl 或 libcurl 7.46.0 至 8.21.0;
- 建置啟用 libpsl;
- 工作流程接受並重用 Cookie;
- 可能造訪同一公共後綴下的兄弟網域或跟隨相關重新導向;
- 這些要求共用 Cookie 狀態。
7.46.0 之前與 8.22.0 之後不在公告影響範圍。命令列 curl 使用 Cookie 時也可能涉及,並非只影響嵌入式 libcurl。
盤點 Cookie 狀態
應用程式建置版本
實際載入的curl版本
是否啟用libpsl
是否啟用Cookie引擎
Cookie Jar作用域
重新導向政策
目標租戶
代理工作階段別名
工作區域
不得記錄 Cookie 值、代理密碼、Token 或客戶身分。同步檢查記憶體 Cookie 與檔案 Cookie。程序可能在啟動時載入舊 Jar、跨工作共用 Jar,或把檔案寫入後續程序會重用的共享儲存。更換容器不會清除共享磁碟中的狀態。
依官方順序修正
- 升級 curl 與 libcurl 至 8.22.0;
- 對現有版本套用官方修補程式;
- 暫時無法完成前兩項時,避免使用 Cookie。
必須確認程序實際載入的函式庫。主機上的 curl 指令已更新,不代表 SDK 或服務使用相同 libcurl。發布後應排空或重新啟動長期程序,並重新確認執行階段版本。
建立隔離回歸測試
只使用自有或已授權網域與 DNS 區域,並使用無敏感性的標記 Cookie:
- 從全新隔離 Cookie Jar 開始;
- 確認 curl 版本與 libpsl 能力;
- 讓受控頂點回傳邊界情境的
Domain屬性; - 不顯示 Cookie 值,只檢查保存的作用域中繼資料;
- 以同一程序要求受控兄弟主機;
- 斷言兄弟主機沒有收到標記;
- 透過 HTTP 重新導向重複測試;
- 在連線重用與程序重啟後重複;
- 比較受影響實驗版本與 curl 8.22.0。
通過條件是 Cookie 被限制為僅主機範圍。HTTP 成功、代理通道建立或重新導向完成,都不能證明邊界正確。
分離 Cookie 身分與代理身分
輪換 IP 不會清除應用程式 Cookie,保持住宅代理黏著工作階段也不代表不同使用者、網站或租戶可以共享 Cookie Jar。
分區鍵應包含已授權瀏覽器或工作身分及目標信任邊界,不能只用代理出口 IP。兩個工作可以重用出口但必須隔離狀態;一個工作也可以輪換出口並保留自己的合法工作階段。
| 邊界 | 必須採用的隔離 |
|---|---|
| 不同客戶或租戶 | 獨立 Jar 與儲存路徑 |
| 無關可註冊網域 | 除非明確需要,否則獨立 Jar |
| 平行工作程序 | 不共用沒有所有權控制的可寫 Jar |
| 重試或代理輪換 | 只保留目標工作身分 |
| 前往新信任邊界 | 阻擋、複核或使用乾淨情境 |
稽核重新導向與重放
記錄原始主機、每個重新導向目標、可註冊網域變化與是否附帶 Cookie。只記錄 Cookie 名稱別名或數量,不記錄值。
限制重新導向深度,拒絕意外的協定或信任邊界變化。不要對可疑跳轉持續輪換代理重試,這會增加暴露並掩蓋原始路徑。
Cookie 檔案也要限制權限、明確所有者、設定短保留期,並依核准流程清理。法規或內部要求適用時,應加密敏感儲存。
發布檢查清單
- [ ] 已確認執行階段 curl 或 libcurl 版本。
- [ ] 已確認各建置的 libpsl 能力。
- [ ] 已盤點 Cookie 引擎、檔案與共享儲存。
- [ ] 已安全記錄重新導向與目標邊界變化。
- [ ] 已部署 curl 8.22.0 或官方修補程式。
- [ ] 長期程序已載入修正後函式庫。
- [ ] 受控兄弟網域測試證明 Cookie 受到限制。
- [ ] 記憶體與檔案 Jar 均已測試。
- [ ] Cookie Jar 依工作或租戶隔離。
- [ ] 不以代理出口 IP 作為唯一分區鍵。
- [ ] 紀錄與測試資料不含真實 Cookie 或憑證。
- [ ] 可疑跳轉不會觸發無限重試。
相關 98IP 內容包括代理憑證輪換指南、住宅代理工作階段黏著性測試及curl 8.22 信任快取稽核。
常見問題
curl 處理的所有 Cookie 都會暴露嗎?
不會。公告涉及特定公共後綴邊界情境,應核對版本、libpsl、Cookie 使用、網域行為與後續兄弟網域要求。
更換代理 IP 能緩解嗎?
不能。問題發生在用戶端 Cookie 作用域。IP 輪換只改變網路路徑,不會修正過寬 Cookie。
停用重新導向就夠了嗎?
不一定。後續明確要求兄弟網域也可能帶上 Cookie。升級或修補仍是主要措施。
回歸測試應使用生產 Cookie 嗎?
不應。使用授權實驗環境的無害標記即可驗證作用域,不需要真實認證材料。
合規說明
只測試自有或已授權的網域、帳號與代理資源。把 Cookie 當成憑證保護、減少留存、遵守目標條款與隱私要求;未經許可不得存取兄弟網域或使用者工作階段。
內部資料說明:curl 專案《domain-scoped PSL domain cookie》,CVE-2026-82209,2026 年 9 月 2 日;curl 8.22.0 變更紀錄,2026 年 9 月 2 日。