CVE-2025-64512CVE-2025-64512是pdfminer.six库中的一个高危安全漏洞,CVSS评分8.6。pdfminer.six是用于从PDF文档中提取信息的Python工具,是原始PDFMiner的社区维护分支。该漏洞源于CMapDB._load_data()函数使用pickle.loads()对pickle文件进行反序列化操作。在20251107版本之前,攻击者可以通过构造恶意PDF文件,指定任意的.pickle.gz文件路径,绕过原本仅允许读取cmap/目录下文件的安全限制。当pdfminer处理该恶意PDF时,会加载并反序列化攻击者精心构造的pickle文件,由于pickle反序列化可以执行任意Python代码,攻击者可以实现远程代码执行(RCE)攻击。此漏洞需要用户交互才能触发,攻击向量为本地,机密性、完整性和可用性影响均为高危。
漏洞根源在于pdfminer.six的CMapDB._load_data()函数对pickle文件的不安全反序列化处理。正常情况下,该函数应仅加载pdfminer.six分发包中cmap/目录下的官方pickle.gz文件。但攻击者可在恶意PDF文件的CMap字段中指定任意目录路径和文件名,只要文件名以.pickle.gz结尾即可绕过安全检查。函数通过pickle.loads()对这些文件进行反序列化,而pickle协议允许在反序列化时执行任意Python代码构造器和还原器函数。攻击者可以创建一个包含恶意__reduce__()方法的Python对象,将其序列化为pickle格式并压缩为.gz文件。当用户使用pdfminer.six处理该恶意PDF时,反序列化过程会自动触发代码执行。攻击者可以借此在受害者系统上执行任意命令,完全控制受害机器。修复方案(版本20251107)移除了pickle反序列化,改用更安全的JSON格式存储CMap数据。