CVE-2026-19553
SSLContext.wrap_bio() 缺少对 server_hostname 参数的验证
- 已发布
- 2026年9月30日
- 已更新
- 2026年9月30日
- 分配 CNA
- PSF
- 观察到的证据
- 2026年10月2日
初级CVSS
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X总结
ssl.SSLContext.wrap_bio() 在设置了 ssl.SSLContext.check_hostname 时,并未要求 server_hostname 参数不能为 None。由于 SSLObject 中缺少参数检查,如果未提供 server_hostname 参数,主机名验证将被静默跳过。此缺陷可能导致程序在 SSLContext.check_hostname = True 的情况下,证书主机名验证*看似*成功,且由于配置错误而不会引发 ValueError。如果程序向这些 API 中的任何一个传递了非空字符串且非 None 的 server_hostname 值,则证书主机名验证会按预期进行,程序不受此漏洞影响。缓解此漏洞无需更新 Python 或应用补丁。要缓解,请向 SSLContext.wrap_bio()、asyncio.create_connection() 或 asyncio.loop.start_tls() 传递一个有效的非 None 且非空的 server_hostname 值,证书主机名验证将按预期进行。升级到最新版本的 Python 或应用补丁只会将行为从静默跳过主机名验证改为在未提供 server_hostname 时引发 ValueError,类似于 SSLContext.wrap_socket()。
来源
复现 CVE-2026-19553 的概念验证实验环境,其中 CPython 的 ssl.SSLContext.wrap_bio() 在 server_hostname 为 None 时会静默跳过 TLS 主机名验证。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。