CVE-2026-28351:pypdf RunLengthDecode 中的资源消耗失控
发布: (2026年2月28日 GMT+8 15:10)
2 分钟阅读
原文: Dev.to
Source: Dev.to
漏洞概述
- CVE 编号: CVE-2026-28351
- CWE 编号: CWE-400
- CVSS v4.0 分数: 6.9
- 发布时间: 2026-02-28
- 攻击向量: 网络
- 影响: 拒绝服务 (DoS)
- 利用状态: 已提供 PoC
受影响组件
此问题存在于 pypdf 库 6.7.4 之前的版本中。漏洞位于 RunLengthDecode 过滤器的实现中。
技术细节
一个包含畸形行程长度编码 (RLE) 流的精心构造的 PDF 可以导致解码器:
- 进入无限循环,或
- 无限制地分配内存,导致内存耗尽 (OOM) 情况。
这会使处理未受信任 PDF 且未设置严格资源限制的应用程序陷入拒绝服务状态。
代码更改修复
在 6.7.4 版本中加入了最大输出长度检查:
+ RUN_LENGTH_MAX_OUTPUT_LENGTH = 75_000_000
+ if total_length > RUN_LENGTH_MAX_OUTPUT_LENGTH:
+ raise LimitReachedError("Limit reached while decompressing.")
修复措施
-
升级 库:
pip install "pypdf>=6.7.4" -
重启所有加载该库的服务,以确保使用新版本。
-
采用额外的加固措施:
- 对解析 PDF 的工作进程施加内存限制。
- 在完整处理之前验证 PDF 文件结构。
参考资料
- GitHub 安全通报: GHSA-f2v5-7jq9-h8cg
- 拉取请求 #3664: Add max output length check to RunLengthDecode
- PyPI 发布: pypdf 6.7.4
欲获取完整分析,请参阅供应商网站上 CVE‑2026‑28351 的详细报告。