CVE-2026-22691pypdf是一个免费开源的纯Python PDF库。在6.6.0版本之前,该库存在一个安全漏洞,攻击者可以通过构造格式错误的PDF文件来触发长时间运行的问题。该漏洞主要影响PDF解析过程中的交叉引用表重建机制。当PDF文件包含大量空白字符时,解析器在处理无效的startxref条目时会出现性能问题,可能导致CPU资源耗尽或程序响应缓慢。值得注意的是,只有在使用非严格读取模式(非strict mode)时才会触发此漏洞。攻击者可以利用此漏洞制作恶意PDF文件,当受害者打开或处理这些文件时,会导致应用程序出现拒绝服务情况。此漏洞已在6.6.0版本中得到修复。
该漏洞源于pypdf库在解析PDF文件时的交叉引用表(Cross-Reference Table)处理逻辑存在缺陷。PDF文件的startxref字段指向交叉引用表的位置,但恶意构造的PDF可能包含指向无效位置的startxref值。在重建交叉引用表的过程中,当遇到包含大量空白字符(空格、制表符、换行符等)的PDF文件时,解析器会陷入复杂的处理逻辑。攻击者通过在PDF中插入大量无意义的空白字符,使得解析器在验证和扫描startxref时消耗大量计算资源。这种攻击方式特别有效是因为:1)空白字符在PDF规范中是合法的;2)非严格模式下解析器会尝试容错处理;3)CPU资源消耗与空白字符数量成正比。成功利用此漏洞需要受害者打开特制的PDF文件,解析过程可能导致程序挂起、响应缓慢或内存占用激增。