关键信息 漏洞概述 漏洞类型: 堆栈使用后释放 (Heap-use-after-free) 受影响组件: PoDoFo PDF-Libary PdfDictionary 影响函数: PdfParser::ReadDictionary() 源文件: pdfparser.cpp 行号: 705 信号: SIGABRT (6) 内存访问: 写入 受影响内存范围: 24-byte 区域包含 PdfName: NameData 机制和根本原因 1. 分配阶段: PdfName 对象在 PdfParser::ReadObject() 中创建。 2. 过早解除分配: 在字典解析期间,PdfParser::ReadDictionary() 释放了共享的 PdfName 对象。 3. 使用后访问: PdfName::~PdfName() 尝试访问已释放的共享对象。 4. 内存损坏: 触发对已释放内存的写入。 地址检查器报告 提供了详细的堆栈跟踪和内存访问错误信息。 概念验证 (PoC) 提供了一个恶意形成的 PDF 文件,用于触发漏洞。 下载链接: POC_download.pdfname_use_after_free 复现步骤 1. 编译 PoDoFo。 2. 执行命令: 。 3. 程序将崩溃并显示堆栈使用后释放错误。 受影响版本 PoDoFo 版本 1.1.0-dev(commit 893f7c7)及最新主版本。 致谢 发现者: Xudong Cao (UCAS) 验证团队: Zhongguancun Laboratory