天下漏洞,尽知其名
HIGH 重点关注

CVE-2026-102993 pypdf 拒绝服务漏洞

影响攻击者可利用特制 PDF 造成内存耗尽,导致应用不可用

AI 研判

pypdf 是一个免费开源的纯 Python PDF 处理库。在 6.17.0 版本之前,当应用调用接口获取文档页码标签时,特制的 PDF 可提供异常巨大的罗马数字页码值,导致 _page_labels.py 生成超长数字字符串。该问题会消耗大量内存,可能使应用不可用,官方已在 6.17.0 版本修复。

影响范围

pypdf

pypdf 6.17.0 之前的版本;具体受影响版本范围暂无更细公开信息。

漏洞详情

漏洞类型为拒绝服务(资源耗尽)。成因是 pypdf/_page_labels.py 在处理 PDF 中的罗马数字页码标签时,未对数值大小做合理限制,遇到异常大的罗马数字值会生成极长的数字字符串。攻击者只需构造包含超大罗马页码标签的 PDF,并诱导应用调用获取页码标签的接口,即可触发大量内存分配。

利用条件与风险

利用前提是应用使用受影响版本的 pypdf 解析并读取攻击者可控 PDF 的页码标签;实战中可造成服务内存耗尽、响应缓慢甚至崩溃,属于拒绝服务风险。

修复建议

官方修复方案为升级至 pypdf 6.17.0 或更高版本;临时缓解措施包括避免对不可信 PDF 调用页码标签相关接口,或对解析过程施加内存与超时限制。

原始情报

pypdf is a free and open-source pure-python PDF library. Prior to 6.17.0, a crafted PDF can provide unusually large Roman page-label values that cause pypdf/_page_labels.py to generate excessively large numeral strings when an application retrieves document page labels, consuming large amounts of memory and potentially making the application unavailable. This issue is fixed in version 6.17.0.