jsPDF任意文件读取漏洞CVE-2025-68428
jsPDF 是一款在浏览器端和 Node.js 环境中都能使用的纯 JavaScript 开源库,简言之它是一个用于在 JavaScript 中生成 PDF 文档的库。
一、基本情况
jsPDF 的核心作用是让开发者无需后端支持,直接通过前端代码生成、编辑和导出 PDF 文件,具有轻量、易用、开源免费等等诸多优点。

jsPDF 是纯前端 JavaScript 库, 其基础功能可满足文本、图形、图片的 PDF 生成,而高级功能(如中文、HTML 转 PDF等)需依赖插件。
栋科技漏洞库关注到 jsPDF 受影响版本中存在的任意文件读取漏洞,该漏洞现已被追踪为CVE-2025-68428,漏洞的CVSS4.0评分为 9.2。
二、漏洞分析
漏洞是位于版本4.0.0之前的 jsPDF 中存在的漏洞,在node.js构建中,用户对loadFile方法第一个参数的控制允许本地文件包含/路径遍历。
如果允许将未经处理的路径传递给loadFile方法,用户便可以检索节点进程运行所在的本地文件系统中任意文件的文件内容。
这些文件内容将原样包含在生成的PDF中,除 loadFile 外, 其他受影响的方法包括:addImage、html、addFont等调用文件加载方法。
不过,仅受影响的为该库的node.js版本,即dist/jspdf.node.js和dist/jspdf.node.min.js文件。
示例攻击向量:
import { jsPDF } from "./dist/jspdf.node.js";
const doc = new jsPDF();
doc.addImage("./secret.txt", "JPEG", 0, 0, 10, 10);
doc.save("test.pdf"); // the generated PDF will contain the "secret.txt" file
具体来说,该漏洞源于受影响版本中loadFile、addImage、html和 addFont 等方法没有对用户传入的文件路径参数进行充分的过滤和校验。
核心在于本地文件包含(LFI)和路径遍历缺陷,因此问题出在这些文件加载机制上,这些文件内容会被原封不动地包含在生成的PDF中。
当应用程序将未经“清洗”的用户输入作为文件路径传递给 jsPDF 后,攻击者便可操纵路径指向系统敏感文件( /etc/ passwd 或配置文件)。
因此,攻击者可通过构造包含路径遍历符(如 `../`)的恶意输入,从而使得攻击者利用该缺陷可读取服务器本地文件系统中的敏感数据。
这意味着,攻击者可以读取服务器文件系统上的任意文件并将其嵌入生成的 PDF 中,从而可能会导致敏感信息泄露。
三、影响范围
jsPDF <=3.0.4
四、修复建议
jsPDF >=4.0.0
五、参考链接
管理员已设置登录后刷新可查看