由证书信任网关分隔的剪纸互联网路线

curl 项目于 2026 年 9 月 2 日随 curl 8.22.0 发布 CVE-2026-80231。这个低危问题涉及 Windows 与 macOS 上的 HTTPS 连接复用:后续传输即使通过 CURLSSLOPT_NATIVE_CA 请求了不同的原生 CA 存储设置,也可能复用同一主机名下已经建立的连接。

复用中的 TLS 连接不会重新执行证书握手。如果连接池把不同信任配置误判为等价,后续请求就可能沿用建立旧连接时的验证结果。

该问题同时影响 libcurl 应用和 curl 命令行工具。它不是代理服务商漏洞,但代理和数据采集系统通常大量复用客户端、句柄与连接池,因此升级后应验证真实的信任边界。

准确判断影响范围

官方公告给出的范围是:

  • 受影响版本:curl 7.71.0 至 8.21.0;
  • 已修复版本:curl 8.22.0 及以上;
  • 受影响系统:Windows 与 macOS;
  • 受影响行为:后续传输的原生 CA 设置不同,却复用旧 HTTPS 连接;
  • 严重性:低危。

不要把所有 curl 部署都判定为受影响。纯 Linux 工作节点不在公告所列系统范围内;从不切换原生 CA 设置的服务也可能无法触发该路径。应先核对运行时版本、操作系统、TLS 配置与连接池行为。

为什么代理架构需要关注

HTTPS 代理与 HTTPS 目标站点可能形成两个独立 TLS 跳点。代理证书由代理专用信任选项控制,目标站点证书则由源站信任选项控制。一次请求成功,只能证明当前连接曾在某个配置下通过验证,不能证明建立连接时使用的就是本次要求的配置。

以下场景更需要检查:

  • 公网采集任务使用系统信任库,而内部研究任务使用私有 CA;
  • 区域工作节点修改信任选项但没有重建连接池;
  • 长期运行的服务在租户之间复用 easy handle;
  • 测试工具对同一主机交替使用原生 CA 与文件 CA;
  • HTTPS 代理客户端隔离了代理信任,却没有隔离源站连接。

安全原则是:所有会改变 TLS 身份或信任判断的设置,都必须进入连接池键。

立即响应步骤

  1. 盘点 Windows 与 macOS 工作节点上的 curl、libcurl 版本。
  2. 查找 CURLSSLOPT_NATIVE_CA--ca-native 及封装层等价配置。
  3. 定位共享句柄、multi handle、连接缓存和长生命周期客户端池。
  4. 升级到 curl 8.22.0 及以上,或通过正式依赖流程应用补丁。
  5. 重启长期运行进程,清除旧库与已建立连接。
  6. 在恢复混合信任策略连接池前执行受控回归测试。

官方临时缓解措施是在使用原生 CA 存储的传输中启用 CURLOPT_FORBID_REUSE。它会增加建连成本,应测量延迟与资源影响,并把它视为升级前的过渡方案。

构建安全回归矩阵

只使用组织拥有的测试端点与证书。准备两套信任配置:

  • 配置 A 信任操作系统原生 CA 存储;
  • 配置 B 只信任专用测试 CA,或明确排除配置 A 会接受的证书。

针对同一测试主机执行:

  1. 使用配置 A 建立连接并记录是否新建连接;
  2. 在同一客户端池中切换到配置 B;
  3. 确认第二次请求会按配置 B 新建 TLS 连接,或按预期证书验证失败;
  4. 反向执行配置 B 到配置 A;
  5. 关闭连接复用后重复,作为控制组;
  6. 覆盖空闲超时与连接池淘汰情形;
  7. 在实际部署的 Windows 与 macOS 构建上分别测试。

不得使用 --insecure 或关闭验证来让测试通过。只有证书决策与当前信任配置一致,测试才算成功。

分离代理信任与源站信任

存在 HTTPS 代理时,应分别记录:

  • 代理主机名、证书链、信任来源与连接标识;
  • 源站主机名、证书链、信任来源与连接标识;
  • 是否通过 CONNECT 隧道访问源站;
  • 两个 TLS 连接分别是新建还是复用;
  • 每个跳点的原生 CA 标志与自定义 CA 设置。

可以参考代理 TLS 信任配置隔离指南设计连接池键,并用代理绕过审计确认受信路径失败时不会静默直连。

日志不得包含私钥、代理密码、授权头、Cookie 或完整敏感 URL。测试编号、主机类型、证书指纹、信任配置 ID 与复用结果通常已经足够。

验收标准

  • [ ] 切换原生 CA 设置后不会复用旧配置建立的连接。
  • [ ] 反向切换同样得到与当前配置一致的结果。
  • [ ] 代理 TLS 与源站 TLS 配置相互独立。
  • [ ] 直连与代理测试都有可归因的连接标识。
  • [ ] 证书拒绝是硬失败,不会触发未授权直连。
  • [ ] 重启后的运行时确认为 curl 8.22.0 或已验证补丁版本。
  • [ ] 遥测能够区分新建与复用连接,且不泄露凭据。

FAQ

Linux 是否受影响?

官方公告把问题限定在 Windows 与 macOS。混合系统集群仍应核对每个实际二进制文件,不能按节点名称推断。

curl 命令行工具是否受影响?

受影响。公告明确说明命令行工具和 libcurl 应用都在范围内。

住宅代理会导致该问题吗?

不会。问题源于 curl 在原生 CA 设置不同的情况下错误复用 HTTPS 连接。代理会增加一个可能独立的 TLS 跳点,所以应分别验证两条信任路径。

禁用复用是否足够?

这是官方给出的临时措施,但会影响性能,也不能替代升级。应设置明确的移除计划。

来源与合规说明

内部研究依据:curl 项目《native CA store conn reuse》安全公告,CVE-2026-80231,发布于 2026 年 9 月 2 日;curl 8.22.0 发布资料。外部资料 URL 仅保存在内部运营记录中,公开文章不包含外链。

只在拥有或获授权的系统、端点、代理账号和信任库上进行证书测试,并遵守服务条款、隐私要求、速率限制和组织变更流程。