pypdf PDF解析漏洞:缺少/Root对象与大/Size值导致潜在长时运行风险

本文详细介绍了pypdf库中存在的一个低严重性安全漏洞(GHSA-4xc4-762w-m6cg)。当攻击者构造缺少/Root条目但具有较大/Size值的恶意PDF文件时,可能导致非严格读取模式下的运行时间显著延长。漏洞已在pypdf 6.6.0版本中修复。

漏洞详情

包名: pypdf (pip)

受影响版本: < 6.6.0

已修复版本: 6.6.0

影响描述

攻击者可以利用此漏洞,通过构造一个实际上无效的PDF文件来可能导致长时间运行。具体方法是:在PDF文件的尾部(trailer)中省略 /Root 条目,同时使用一个较大的 /Size 值。只有非严格(non-strict)读取模式会受此影响。

修复方案

此问题已在 pypdf==6.6.0 版本中修复。

临时解决方案

提供以下代码示例作为临时应对措施:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
from pypdf import PdfReader, PdfWriter

# 替代方案:
# 替换原来的写法
# reader = PdfReader("file.pdf")
# 使用严格模式:
reader = PdfReader("file.pdf", strict=True)

# 替代方案:
# 替换原来的写法
# writer = PdfWriter(clone_from="file.pdf")
# 使用显式的严格模式读取器:
writer = PdfWriter(clone_from=PdfReader("file.pdf", strict=True))

相关资源

漏洞信息摘要

  • 漏洞标识符: GHSA-4xc4-762w-m6cg
  • 严重等级: 低 (CVSS 分数:2.7)
  • 弱点类型: CWE-400 - 不受控制的资源消耗
  • CVSS v4 向量: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:U
  • 报告者: N0zoM1z0
  • 分析师: stefan6419846
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计