内容提要
Python 发布安全更新,涉及3.12.14、3.11.16和3.10.21版本,修复了webbrowser URL处理、tarfile路径遍历、HTTP头注入、XML解析崩溃及拒绝服务等漏洞,并更新libexpat至2.8.3。建议用户升级至最新版本以确保安全。
延伸解读
安全修复重点
本次更新修复了多个安全漏洞,包括webbrowser模块的URL处理、tarfile的路径遍历、HTTP头注入、XML解析崩溃及拒绝服务等。特别值得关注的是,tarfile模块的多个修复(如gh-149486、gh-151558)堵住了数据提取过滤器的路径遍历绕过,而http.client新增的响应行数限制可防止恶意服务器无限发送数据导致客户端挂起。建议所有使用受影响版本的用户尽快升级。
性能与稳定性改进
除了安全修复,本次更新还包含多项性能优化。例如,unicodedata.normalize()的规范化排序从二次复杂度降为线性,html.parser和configparser的解析也避免了二次回溯,csv.Sniffer.sniff()的指数时间问题得到修复。这些改进能有效缓解恶意输入导致的CPU资源耗尽,提升应用在异常数据下的稳定性。
版本维护状态
Python 3.10、3.11和3.12已进入安全修复模式,本次发布仅提供源代码,没有预定的发布节奏。这意味着这些版本不再添加新功能,只修复安全问题和关键缺陷。用户应关注官方安全公告,及时升级到包含修复的最新补丁版本,或考虑迁移到仍在完整维护的版本(如3.13及以上)以获取持续的功能更新。
Q&A
Python 3.12.14、3.11.16和3.10.21这些版本主要修复了哪些安全问题?
这些版本修复了多个安全漏洞,包括webbrowser模块的URL处理(拒绝以破折号开头的URL)、tarfile模块的路径遍历漏洞、HTTP头注入、XML解析崩溃及拒绝服务等,并更新了libexpat至2.8.3。
如何修复webbrowser.open()中的URL处理漏洞?
修复了webbrowser.open()中接受以破折号开头的URL的问题,现在会拒绝这类URL,并修复了通过%action前缀绕过检查的漏洞。
tarfile模块在路径遍历方面有哪些修复?
修复了多个路径遍历绕过,包括:data_filter()现在使用与写入磁盘相同的规范化值验证链接目标,去除符号链接目录解析时的尾部分隔符,并拒绝替换目标目录本身的链接成员;同时修复了提取过滤器可能创建指向目标目录外部符号链接的漏洞。
这些版本如何防止HTTP头注入?
修复了wsgiref.handlers中允许状态包含控制字符的问题,以及http.cookies.Morsel的update()和js_output()中的控制字符问题,从而防止HTTP头注入。
XML解析相关的漏洞有哪些修复?
修复了xml.parsers.expat中ElementDeclHandler处理深层嵌套XML内容模型时的崩溃(CVE-2026-4224),并改进了对billion laughs攻击的保护,新增了SetBillionLaughsAttackProtectionActivationThreshold()和SetBillionLaughsAttackProtectionMaximumAmplification()方法。
这些版本在性能方面有哪些改进?
修复了多个可能导致拒绝服务的性能问题,包括unicodedata.normalize()中的二次时间排序、html.parser.HTMLParser解析长未终止结构时的二次复杂度、configparser.RawConfigParser选项解析正则的二次回溯、csv.Sniffer.sniff()的指数时间等。
这些版本是否更新了libexpat?
是的,这些版本将捆绑的libexpat更新到了2.8.3,并改进了对XML哈希洪水攻击的保护(当Python使用libExpat 2.8.0或更高版本编译时)。
这些版本是源代码发布吗?
是的,由于这些Python版本已处于仅安全修复模式,因此这些是仅源代码的发布,没有预定的发布节奏。