Python bz2栈缓冲区溢出漏洞CVE-2026-9669
Python是广泛使用的开源编程语言,CPython是官方原版、最标准、最常用的 Python 解释器,bz2模块提供bz2压缩格式的解压功能。
一、基本情况
Python 是一门编程语言,CPython是这门语言的官方实现/运行程序,bz2 是 Python 内置标准库,提供对 bzip2 无损压缩算法的封装。
bz2 封装bzip2无损压缩算法(Burrows–Wheeler 变换 + 哈夫曼编码),该标准库主打高压缩比,适合文本、日志、备份等大文件场景。

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
五、参考链接
管理员已设置登录后刷新可查看