高危Markdown转PDF漏洞,可通过Markdown前置元数据实现JS注入攻击(CVE-2025-65108,CVSS 10.0)

2025年11月24日,广受欢迎的npm包md-to-pdf(每周下载量超47,000次的命令行工具)曝出高危漏洞(CVE-2025-65108)。该漏洞获得CVSS满分10分评级,攻击者可通过恶意前置元数据解析执行任意JavaScript代码。任何使用该包处理不可信Markdown内容的应用程序、构建系统或云服务均面临严重风险。

漏洞原理分析

安全公告指出:"当Markdown前置元数据块包含JavaScript分隔符时,gray-matter库中的JS引擎会在Markdown转PDF过程中执行任意代码[...]如果将用户提供的Markdown内容输入md-to-pdf且前置元数据包含恶意JS,转换进程将执行该代码。"

漏洞根源在于md-to-pdf包使用gray-matter库解析Markdown中的YAML/JSON前置元数据块时存在缺陷。gray-matter包含一个通常禁用的可选JavaScript评估模式,但当出现---js或---javascript等特定分隔符时会自动激活。

攻击场景演示

攻击者可将恶意JavaScript嵌入Markdown文件的前置元数据,使简单的文档上传操作演变为完整的系统入侵。公告包含一个极具威胁性的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'});
})();

这意味着任何将Markdown转换为PDF的服务器、CI/CD流水线或桌面工具,只需打开恶意Markdown文件即可被攻陷。

影响范围与修复建议

5.2.5以下版本均受影响,用户应立即升级至安全版本。

相关推荐
i***66504 小时前
SpringBoot实战(三十二)集成 ofdrw,实现 PDF 和 OFD 的转换、SM2 签署OFD
spring boot·后端·pdf
~无忧花开~4 小时前
JavaScript实现PDF本地预览技巧
开发语言·前端·javascript
靠沿4 小时前
Java数据结构初阶——LinkedList
java·开发语言·数据结构
4***99744 小时前
Kotlin序列处理
android·开发语言·kotlin
froginwe114 小时前
Scala 提取器(Extractor)
开发语言
t***D2644 小时前
Kotlin在服务端开发中的生态建设
android·开发语言·kotlin
Want5955 小时前
C/C++跳动的爱心②
c语言·开发语言·c++
初晴や5 小时前
指针函数:从入门到精通
开发语言·c++
悦悦子a啊5 小时前
项目案例作业(选做):使用文件改造已有信息系统
java·开发语言·算法