首页 网络安全 正文

Python bz2栈缓冲区溢出漏洞CVE-2026-9669

摘要

栋科技漏洞库关注到 Python bz2 模块解压器复用导致栈缓冲区溢出漏洞,该漏洞现已经被追踪为CVE-2026-9669,CVSS 4.0评分8.2。

Python是广泛使用的开源编程语言,CPython是官方原版、最标准、最常用的 Python 解释器,bz2模块提供bz2压缩格式的解压功能。

一、基本情况

Python 是一门编程语言,CPython是这门语言的官方实现/运行程序,bz2 是 Python 内置标准库,提供对 bzip2 无损压缩算法的封装。

bz2 封装bzip2无损压缩算法(Burrows–Wheeler 变换 + 哈夫曼编码),该标准库主打高压缩比,适合文本、日志、备份等大文件场景。

Python bz2栈缓冲区溢出漏洞CVE-2026-9669

bz2 是 CPython 内置标准库,底层是由 C 语言实现(_bz2),上层使用 Python 封装(Lib/bz2.py),而且 bz2 压缩比通常高于 gzip。

栋科技漏洞库关注到 Python bz2 模块解压器复用导致栈缓冲区溢出漏洞,该漏洞现已经被追踪为CVE-2026-9669,CVSS 4.0评分8.2。

二、漏洞分析

CVE-2026-9669是CPython在 3.16.0 之前版本中的bz2 高危栈溢出漏洞,影响 bz2.BZ2Decompressor组件,但不影响 lzma/gzip 模块。

受影响版本中,当 bz2.BZ2Decompressor 对象在解压过程中遇到错误(如抛出 OSError)后,内部状态未被重置。

若应用程序捕获解压产生的操作系统异常后,继续复用同一个 bz2.BZ2Decompressor 解压对象,

即如果应用程序捕获该异常并使用同一个解压器重试,bz2内部状态会处于不一致状态。

此时再次调用 decompress() 会导致解压器从无效状态恢复执行,导致栈缓冲区越界写入;

攻击者构造的恶意数据会让解压器在非法内部状态下继续运行,造成栈缓冲区越界写入,处理不可信数据时,该漏洞可导致进程崩溃。

触发条件:必须复用已报错的 BZ2Decompressor 实例;每次新建实例不受影响。

崩溃速度:通常处理首个恶意包即崩溃,耗时小于 1 秒。

三、影响范围

CPython:0 ~ 3.15.x(3.16.0 已修复)

发行包:Debian、Ubuntu、RHEL、CentOS、Fedora 等默认 Python 包均受影响。

四、解决建议

CPython ≥ 3.13.7

CPython ≥ 3.14.6

CPython ≥ 3.12.8

CPython ≥ 3.15.0

五、参考链接

管理员已设置登录后刷新可查看



扫描二维码,在手机上阅读
评论
更换验证码
友情链接