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 作为 Cookie Jar 键:两个任务可以复用同一出口却必须隔离状态,一个任务也可以轮换出口并保留自己的合法会话。
| 边界 | 必须采用的隔离 |
|---|---|
| 不同客户或租户 | 独立 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 日。