
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 代理可能形成两个独立证书验证上下文:
- 客户端到代理的 TLS 连接;
- 经代理到目标站点的 TLS 连接。
应分别盘点两段链路的固定与验证策略。代理 TLS 和目标 TLS 的选项名称及行为可能不同。目标策略正确不能证明代理链路同样严格,反之亦然。
普通 HTTP 代理承载 CONNECT 隧道时,代理链路本身不是 TLS,但隧道内目标连接仍需正常证书与主机名验证。
立即响应步骤
- 记录实际部署的 curl 与 libcurl 版本。
- 记录每个构建使用的 TLS 后端,不能只看软件包名称。
- 搜索公钥固定及关闭对端或主机名验证的配置。
- 把代理链路选项与目标链路选项分开检查。
- 将受影响系统升级至 curl 8.22.0 或包含修复的供应商构建。
- 恢复所有不应关闭的标准对端与主机名验证。
- 在扩大发布前执行公钥固定正向与负向测试。
- 新版本启动后排空旧进程和连接池。
如果暂时不能升级,不要把公钥固定本身视为缓解措施。应恢复标准验证,并按供应商支持的方式应用补丁。
建立有效的固定回归测试
只能使用自己控制的端点与证书,不要对第三方系统执行证书操纵测试。
测试夹具至少包括:
- 有效证书链、匹配主机名和匹配公钥固定;
- 有效证书链和主机名,但使用故意错误的固定;
- 来自不受信任测试 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 日。外部来源地址仅保存在内部运营记录中。
代理只能用于获授权的系统与数据。请遵守合同、隐私义务、访问控制、速率限制及适用法律。证书测试必须使用受控基础设施,不得用于拦截或绕过第三方保护。