pypdf LZWDecode内存耗尽漏洞分析与修复

本文详细分析了pypdf库中LZWDecode流处理漏洞,攻击者可通过特制PDF文件耗尽系统内存,每流最高可达1GB内存占用。漏洞已在6.4.0版本修复,提供临时解决方案和详细技术参考。

漏洞详情

包信息

  • 包管理器: pip
  • 包名称: pypdf
  • 受影响版本: < 6.4.0
  • 已修复版本: 6.4.0

影响描述

攻击者可以利用此漏洞制作特制的PDF文件,在使用LZWDecode过滤器解析页面内容流时,每个流最多可消耗1GB内存。这是对GHSA-jfx9-29x2-rv3j的后续跟进,旨在将默认限制与zlib的限制对齐。

修复方案

此漏洞已在pypdf==6.4.0版本中修复。

临时解决方案

如果用户暂时无法升级,可以使用以下代码行覆盖默认设置:

1
pypdf.filters.LZW_MAX_OUTPUT_LENGTH = 75_000_000

参考链接

安全评估

严重程度

  • 等级: 中等
  • CVSS总体评分: 6.6/10

CVSS v4基础指标

可利用性指标:

  • 攻击向量: 网络
  • 攻击复杂度: 低
  • 攻击要求: 无
  • 所需权限: 无
  • 用户交互: 无

脆弱系统影响指标:

  • 机密性: 无影响
  • 完整性: 无影响
  • 可用性: 高影响

后续系统影响指标:

  • 机密性: 无影响
  • 完整性: 无影响
  • 可用性: 无影响

弱点分类

  • CWE-400: 不受控制的资源消耗
  • CWE-409: 对高压缩数据的处理不当(数据放大)

安全标识

  • CVE ID: 无已知CVE
  • GHSA ID: GHSA-m449-cwjh-6pw7

致谢

  • 报告者: aydinnyunus
  • 分析师: stefan6419846
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计