高危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以下版本均受影响,用户应立即升级至安全版本。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值