多线程 LDAPS 里改 TLS 选项会串到别的线程:CVE-2025-14017 与 curl 8.17.0 变更记录
- 安全通告页(8.17.0 批次):
- 8.17.0 变更日志:
- CVE-2025-14017 详情:
- NVD 记录:
问题现象
用 libcurl 做多线程 LDAPS(LDAP over TLS)传输时,在一个线程里修改 TLS 选项会意外地全局生效,从而影响其他并发传输的设置。具体表现是:为某一个特定传输关闭证书校验,可能把其他线程的校验也一起关掉。这类串扰不会报错,连接照样建立,只是校验已经被静默取消了。
影响版本范围
从 7.17.0 起,到 8.18.0 之前(不含 8.18.0)。NVD 记录中 8.17.0、8.16.0、8.15.0、8.14.1、8.14.0 等版本均受影响。NVD 的发布时间为 2026-01-08。
修复版本与处置
升级到 8.18.0 及以上版本。如果暂时无法升级,避免跨线程共享 TLS 选项,尤其是 CURLOPT_SSL_VERIFYPEER、CURLOPT_SSL_VERIFYHOST 这类会改变校验行为的设置,不要在一个线程里为一个 handle 改动后指望它只作用于该传输。
curl 8.17.0 的其他变更
curl 8.17.0 于 2025-11-05 发布,Changes 中的主要条目:
- build: drop Heimdal support
- build: drop the winbuild build system
- krb5: drop support for Kerberos FTP
- libssh2: up the minimum requirement to 1.9.0
- multi: add notifications API
- progress: expand to use 6 characters per size
- ssl: support Apple SecTrust configurations
- tool_getparam: add
--knownhosts - vssh: drop support for wolfSSH
- wcurl: import v2025.11.04
- write-out: make
%header{}able to output all occurrences of a header
此外,CURLOPT_MAXLIFETIME_CONN 的默认值改为 24 小时。libcurl-security.md 中增加了关于长连接(long-running connections)的说明。
同一批次里的其他安全通告
curl 8.17.0 批次共发布 34 个漏洞。部分条目:
| CVE | 问题 | 影响范围 |
|---|---|---|
| CVE-2026-12064 | proto-default skips SSH verification | 7.81.0 到 8.20.0 |
| CVE-2026-11856 | cross-origin Digest auth state leak | 7.10.6 到 8.20.0 |
| CVE-2026-11586 | WS Auto-PONG memory exhaustion | 8.16.0 到 8.20.0 |
| CVE-2026-11564 | Native CA trust persist | 8.17.0 到 8.20.0 |
| CVE-2026-10536 | HTTP/2 stream-dependency tree UAF | 7.88.0 到 8.20.0 |
| CVE-2026-9547 | SSH improper host validation | 7.69.0 到 8.20.0 |
| CVE-2026-7009 | OCSP stapling bypass with Apple SecTrust | 8.17.0 到 8.19.0 |
| CVE-2025-15224 | libssh key passphrase bypass without agent set | 7.58.0 到 8.17.0 |
| CVE-2025-13034 | No QUIC certificate pinning with GnuTLS | 8.8.0 到 8.17.0 |
当前发行序列的上一版是 8.16.0,下一版是 8.18.0。
自检建议
- 打印实际链接的库版本(
curl_version(),或curl --version)确认是否落在受影响区间。 - 检查 LDAPS/多线程代码路径中是否有对
CURLOPT_SSL_VERIFYPEER、CURLOPT_SSL_VERIFYHOST的临时改动;有的话确认这些 handle 是否与其他线程共享。 - 关注 8.17.0 批次中与自身协议栈重合的条目(HTTP/2、SSH、WS、QUIC),批量对照版本区间。
计划移除项
curl 项目计划移除的内容包括:VS2008 构建、OpenSSL 1.x 支持、OpenSSL-QUIC、c-ares 1.16.0 之前的版本、Windows XP/2003、Windows CE。