近日,广泛使用的npm包md-to-pdf (Markdown to PDF)被披露存在一个严重安全漏洞( CVE-2025-65108 )。该npm包每周下载量逾 4.7 万次,用于将 Markdown 文档转换为 PDF 文件。此漏洞的CVSS评分为最高级别的 10.0 分,攻击者可通过构造恶意的 Markdown 前端元数据(front-matter),在目标系统上实现 任意 JavaScript 代码执行。
任何使用该工具处理不可信 Markdown 内容的应用程序、构建系统或云服务均面临严重风险。
Part01
漏洞成因与攻击原理
根据安全公告,当Markdown前置元数据块包含JavaScript分隔符时,会触发gray-matter库中的JS引擎在Markdown转PDF转换进程中执行任意代码。若用户提交的Markdown数据通过md-to-pdf处理且前置元数据含恶意JS代码,转换进程将直接执行该代码。
该漏洞源于md-to-pdf包在解析Markdown的YAML/JSON前置元数据块时,调用的gray-matter库存在可选JavaScript评估模式。该模式默认关闭,但当遇到—js或—javascript等特定分隔符时会自动激活。攻击者只需在Markdown文件前置元数据中嵌入恶意JavaScript,即可将普通文档上传操作升级为完整的系统入侵。
Part02
PoC示例
通告中提供了一个清晰且极具危害性的概念验证(PoC)代码,展示了如何利用该漏洞执行任意操作系统命令:
const { mdToPdf } = require('md-to-pdf'); var payload = '---javascript\n((require("child_process")).execSync("calc.exe"))\n---RCE'; (async () => {await mdToPdf({ content: payload }, { dest: './output.pdf'});})();
上述载荷通过前端元数据注入 JavaScript,调用 Node.js 的 child_process 模块执行系统命令(示例中为启动 Windows 计算器 calc.exe)。
这意味着:这意味着任何将Markdown转换为PDF的服务器、CI/CD流水线或桌面工具,仅需打开恶意Markdown文件即可被利用。
Part03
影响范围与修复建议
-
受影响版本:md-to-pdf 5.2.5 之前的所有版本
-
修复措施:请用户立即升级至 5.2.5 或更高版本
参考来源:
Critical Markdown to PDF Flaw (CVE-2025-65108, CVSS 10.0) Allows RCE via JS Injection in Markdown Front-Matter
https://securityonline.info/critical-markdown-to-pdf-flaw-cve-2025-65108-cvss-10-0-allows-rce-via-js-injection-in-markdown-front-matter/







暂无评论内容