光纤互联网线路通过独立的公钥验证关卡

curl 项目于 2026 年 9 月 2 日随 curl 8.22.0 发布 CVE-2026-80230。该低严重性问题影响使用 OpenSSL 或兼容分支的 libcurl 构建,触发前提是同时配置公钥固定,并关闭标准对端验证与主机名验证。

在另一个异常条件下——连接建立时服务端未提供证书——libcurl 可能跳过固定检查,让未经认证的连接成功。curl 8.22.0 已包含修复。

触发范围虽然很窄,但运维结论很重要:固定公钥是额外身份校验,不能代替标准证书验证。

受影响条件

官方公告列出了以下条件:

  • libcurl 使用 OpenSSL 或 BoringSSL、AWS-LC、LibreSSL、QuicTLS 等分支;
  • 配置 CURLOPT_PINNEDPUBLICKEY
  • CURLOPT_SSL_VERIFYPEER 设为零;
  • CURLOPT_SSL_VERIFYHOST 设为零;
  • 连接在服务端未提供证书的情况下继续;
  • curl 版本为 7.45.0 至 8.21.0。

在形成相同有效条件时,curl 命令行工具也受影响。curl 8.22.0 及以上版本不受此问题影响。

公告不代表什么

它不代表 curl 的所有公钥固定连接都失效,也不描述启用正常 CA 验证、对端验证和主机名验证的常规连接。更不能因为等待升级而关闭验证。

不要实施范围过大的紧急改动。先确认受影响工作负载的 TLS 后端、curl 版本和最终有效验证开关。

代理运营要分别检查两段 TLS

HTTPS 代理可能形成两个独立证书验证上下文:

  1. 客户端到代理的 TLS 连接;
  2. 经代理到目标站点的 TLS 连接。

应分别盘点两段链路的固定与验证策略。代理 TLS 和目标 TLS 的选项名称及行为可能不同。目标策略正确不能证明代理链路同样严格,反之亦然。

普通 HTTP 代理承载 CONNECT 隧道时,代理链路本身不是 TLS,但隧道内目标连接仍需正常证书与主机名验证。

立即响应步骤

  1. 记录实际部署的 curl 与 libcurl 版本。
  2. 记录每个构建使用的 TLS 后端,不能只看软件包名称。
  3. 搜索公钥固定及关闭对端或主机名验证的配置。
  4. 把代理链路选项与目标链路选项分开检查。
  5. 将受影响系统升级至 curl 8.22.0 或包含修复的供应商构建。
  6. 恢复所有不应关闭的标准对端与主机名验证。
  7. 在扩大发布前执行公钥固定正向与负向测试。
  8. 新版本启动后排空旧进程和连接池。

如果暂时不能升级,不要把公钥固定本身视为缓解措施。应恢复标准验证,并按供应商支持的方式应用补丁。

建立有效的固定回归测试

只能使用自己控制的端点与证书,不要对第三方系统执行证书操纵测试。

测试夹具至少包括:

  • 有效证书链、匹配主机名和匹配公钥固定;
  • 有效证书链和主机名,但使用故意错误的固定;
  • 来自不受信任测试 CA 的证书;
  • 主机名不匹配;
  • 已过期测试证书;
  • 在重叠窗口内同时接受新旧固定的获批轮换。

结果应完全确定。只有获批组合成功;错误固定、不受信任链、主机名不匹配和过期证书必须故障关闭。

测试最终有效配置,而非只看源码

安全开关可能来自环境变量、封装器、模板、命令行拼接或回退代码。应在运行时记录最终有效策略,但不能记录秘密。

每次测试建议记录:

  • curl 版本与 TLS 后端;
  • 代理端点和目标端点标签;
  • 对端验证与主机名验证布尔值;
  • 固定集合 ID 与轮换版本;
  • 新建或复用连接状态;
  • 证书验证结果分类;
  • 重试次数与最终线路。

禁止记录密码、令牌、完整代理 URL、私钥或原始固定材料。不含秘密的固定集合 ID 足以关联事件。

禁止不安全回退

证书失败不能触发更弱的线路或 TLS 策略。

  • 失败后不能修改验证开关;
  • 不能自动删除固定后重试;
  • 未经明确批准不能回退直连;
  • 确定性的 TLS 策略错误不能触发无限住宅代理轮换;
  • 证书失败应与代理容量或超时指标分开统计。

使用代理绕过审计查找意外直连,并参考TLS 信任配置隔离按有效策略隔离连接池。

正确规划证书轮换

如果没有重叠计划,公钥固定可能在证书变更时造成中断。轮换窗口内至少保留一个当前固定和一个已批准的新固定。先部署新固定集合,再更换证书;在受控环境验证两个密钥,并在回滚风险消失后移除旧固定。

固定应像凭据一样有负责人、评审和监控。可结合代理凭据轮换,让秘密与信任材料互不耦合地变更。

升级验收清单

  • 已盘点所有 curl 版本和 TLS 后端。
  • 受影响构建已升级或应用供应商补丁。
  • 对端验证与主机名验证保持开启。
  • 代理链路和目标链路已分别审查。
  • 正确固定测试成功。
  • 错误固定、错误 CA、主机名不匹配和过期证书测试失败。
  • 连接复用不会携带过期信任配置。
  • 重试有上限且保留原 TLS 策略。
  • 不存在未获批准的直连回退。
  • 日志不暴露凭据、私钥或完整代理 URL。
  • 发布后旧进程和连接池已排空。
  • 固定轮换具有重叠和回滚方案。

常见问题

公钥固定可以代替 CA 与主机名验证吗?

不可以。公钥固定应作为附加控制,标准对端验证和主机名验证必须保持启用。

所有 TLS 后端都受影响吗?

公告将问题限定于 OpenSSL 及兼容分支。应检查实际部署二进制使用的后端,不能根据操作系统猜测。

所有代理请求都受影响吗?

不是。它要求关闭标准验证、配置固定、使用受影响后端和版本,并且连接没有服务端证书等条件同时成立。

首选修复是什么?

升级 curl 和 libcurl 至 8.22.0,或使用包含修复的官方供应商软件包,然后验证最终有效 TLS 配置。

来源说明与合规

来源:curl 项目,《OpenSSL pinning bypass》,CVE-2026-80230,发布于 2026 年 9 月 2 日。外部来源地址仅保存在内部运营记录中。

代理只能用于获授权的系统与数据。请遵守合同、隐私义务、访问控制、速率限制及适用法律。证书测试必须使用受控基础设施,不得用于拦截或绕过第三方保护。