支持本站 — 捐款将帮助我们持续运营

目标:1000 元,已筹:752

75.2%
一、 漏洞 CVE-2025-64512 基础信息
漏洞信息
                                        # pdfminer.six 任意代码执行漏洞

## 概述

pdfminer.six 是一个用于从 PDF 文档中提取信息的工具,是原始 PDFMiner 的社区维护分支。该工具在处理特定构造的 PDF 文件时存在代码执行漏洞。

## 影响版本

版本 20251107 之前。

## 漏洞细节

`CMapDB._load_data()` 函数中使用了 `pickle.loads()` 来反序列化 pickle 文件。  
正常情况下,这些 pickle 文件应来自 pdfminer.six 自身的 `cmap/` 目录。  
攻击者可通过构造恶意 PDF 文件,指定一个外部的、含有恶意代码的 `.pickle.gz` 文件。  
当该 PDF 被解析时,恶意代码将被自动执行。

## 影响

处理恶意构造的 PDF 文件可能导致任意代码执行。
                                        
神龙判断

是否为 Web 类漏洞: 未知

判断理由:

N/A
提示
尽管我们采用了先进的大模型技术,但其输出仍可能包含不准确或过时的信息。
神龙会尽力确保数据准确,但也请结合实际情况进行甄别与判断。
神龙祝您一切顺利!
漏洞标题
pdfminer.six vulnerable to Arbitrary Code Execution via Crafted PDF Input
来源:美国国家漏洞数据库 NVD
漏洞描述信息
Pdfminer.six is a community maintained fork of the original PDFMiner, a tool for extracting information from PDF documents. Prior to version 20251107, pdfminer.six will execute arbitrary code from a malicious pickle file if provided with a malicious PDF file. The `CMapDB._load_data()` function in pdfminer.six uses `pickle.loads()` to deserialize pickle files. These pickle files are supposed to be part of the pdfminer.six distribution stored in the `cmap/` directory, but a malicious PDF can specify an alternative directory and filename as long as the filename ends in `.pickle.gz`. A malicious, zipped pickle file can then contain code which will automatically execute when the PDF is processed. Version 20251107 fixes the issue.
来源:美国国家漏洞数据库 NVD
CVSS信息
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
来源:美国国家漏洞数据库 NVD
漏洞类别
可信数据的反序列化
来源:美国国家漏洞数据库 NVD
漏洞标题
pdfminer.six 代码问题漏洞
来源:中国国家信息安全漏洞库 CNNVD
漏洞描述信息
pdfminer.six是pdfminer开源的一款用于从PDF文档中提取信息的工具。 pdfminer.six 20251107之前版本存在代码问题漏洞,该漏洞源于CMapDB._load_data函数使用pickle.loads反序列化恶意pickle文件,可能导致执行任意代码。
来源:中国国家信息安全漏洞库 CNNVD
CVSS信息
N/A
来源:中国国家信息安全漏洞库 CNNVD
漏洞类别
代码问题
来源:中国国家信息安全漏洞库 CNNVD
二、漏洞 CVE-2025-64512 的公开POC
#POC 描述源链接神龙链接
1A Proof-of-Concept for CVE-2025-64512 using a polyglot file.https://github.com/luigigubello/CVE-2025-64512-Polyglot-PoCPOC详情
三、漏洞 CVE-2025-64512 的情报信息
  • 标题: Release 20251107 · pdfminer/pdfminer.six · GitHub -- 🔗来源链接

    标签:x_refsource_MISC

    神龙速读:
                                            ### 关键漏洞信息
    
    #### Fixed
    - **TypeError** when passing wrong number of arguments to `safe_rgb` (#1118)
    - **OverflowError** in `safe_float` when input is too large (#1121)
    
    #### Additional Notes
    - 4 commits have been made to the master branch after this release.
    - No explicitly mentioned vulnerabilities or security patches.
    
    #### Relevant Links
    - [GitHub Repository](https://github.com/pdfminer/pdfminer.six)
                                            
    Release 20251107 · pdfminer/pdfminer.six · GitHub
  • 标题: Arbitrary Code Execution in pdfminer.six via Crafted PDF Input · Advisory · pdfminer/pdfminer.six · GitHub -- 🔗来源链接

    标签:x_refsource_CONFIRM

    神龙速读:
                                            ### 关键信息
    
    - **漏洞名称**:Arbitrary Code Execution in pdfminer.six via Crafted PDF Input
    - **严重性**:High (8.6 / 10)
    - **CVE ID**:CVE-2025-64512
    
    #### **主要问题**
    - **受影响的版本**:
      - `< 20251107`
    
    - **修复版本**:
      - `>= 20251107`
    
    - **CVSS v3 基准指标**
      - **攻击向量**:Local
      - **攻击复杂度**:Low
      - **所需权限**:None
      - **用户交互**:Required
      - **影响范围**:Changed
      - **保密性**:High
      - **完整性**:High
      - **可用性**:High
    
    #### **漏洞描述**
    - **总结**:
      - pdfminer.six 在处理恶意 PDF 文件时,会执行来自恶意 pickle 文件的任意代码。
      - `CMapDB._load_data()` 方法中存在漏洞,可能被带有 `/malicious` CMap 参照的恶意 PDF 攻击并控制。
    
    #### **漏洞细节**
    - **攻击步骤**:
      1. 创建带有 CMap 参照指向恶意路径的恶意 PDF 文件。
      2. 在路径中放置恶意的 pickle 文件。
      3. 处理 PDF 文件时,pdfminer 会加载、反序列化恶意 pickle 文件。
      4. 导致恶意的 Python 代码被执行。
    
    - **攻击方式**:
      ```python
      def _load_data(cls, name: str) -> Any:
        name = name.replace("\0", "")
        filename = "%s.pickle.gz" % name
        return type(str(name), (), pickle.loads(gzfile.read()))
      ```
    - **恶意样本**
      - Malicious PDF 示例提供了受影响组件的关键描述和脚本。
      
    #### **影响**
    - **Linux、MacOS 难于利用**
      - 因为路径特指约束且不支持网络存储协议。
      
    - **Windows 容易利用**
      - 支持 WebDAV 、SMB等协议,允许远程 payload 编码。
    
    #### **验证**
    - POC 脚本及 Test 说明可用于后续验证漏洞是否完全修复。
      
    #### **修复建议**
    - 充分验证 pickle 反序列化过程中的数据源。
    - 尽量使用指定支持的安全库进行反序列化等操作。
                                            
    Arbitrary Code Execution in pdfminer.six via Crafted PDF Input · Advisory · pdfminer/pdfminer.six · GitHub
  • 标题: Fix: arbitary code execution when loading pickle font files · pdfminer/pdfminer.six@b808ee0 · GitHub -- 🔗来源链接

    标签:x_refsource_MISC

    神龙速读:
                                            从这个网页截图中可以获取到以下关于漏洞的关键信息:
    
    - **修复内容**:
      - 修复了加载pickle字体文件时的任意代码执行漏洞。
      - 修复了与GHSA相关的两个安全问题:`GHSA-wf5f-4jwr-ppcp`和`GHSA-f83h-ghpp-7wcc`。
    
    - **代码变更**:
      - 在文件`pdfminer/cmapdb.py`中,修改了方法`_load_data`,更新了文件路径处理逻辑以防止目录遍历攻击。
      - 添加了路径解析和检查逻辑,确保解析后路径在预期目录内。
    
    - **关键代码变化**:
        ```python
        @@ -240,8 +240,14 @@ def _load_data(cls, name: str) -> Any:
                )
                for directory in cmap_paths:
                    path = os.path.join(directory, filename)
        -           if os.path.exists(path):
        -              .gzfile = gzip.open(path)
        +           # Resolve paths to prevent directory traversal
        +           resolved_path = os.path.realpath(path)
        +           resolved_directory = os.path.realpath(directory)
        +           # Check if resolved path is within the intended directory
        +           if not resolved_path.startswith(resolved_directory + os.sep):
        +               continue
        +           if os.path.exists(resolved_path):
        +               gzfile = gzip.open(resolved_path)
                    try:
                        return type(str(name), (), pickle.loads(gzfile.read()))
                    finally:
        ```
    
    - **安全措施**:
      - 通过使用`os.path.realpath`解析路径,防止攻击者通过构造特殊路径(如`../`)进行目录遍历攻击,确保安全加载和处理文件。
                                            
    Fix: arbitary code execution when loading pickle font files · pdfminer/pdfminer.six@b808ee0 · GitHub
  • https://nvd.nist.gov/vuln/detail/CVE-2025-64512
四、漏洞 CVE-2025-64512 的评论

暂无评论


发表评论