CVE-2025-65108md-to-pdf是一个基于Node.js和headless Chrome开发的命令行工具,用于将Markdown文件转换为PDF文档。该工具在5.2.5之前的版本中存在严重的远程代码执行漏洞。漏洞的根本原因在于处理Markdown文件中的front-matter块时,gray-matter库会解析其中的JavaScript分隔符(---),导致在转换过程中执行任意代码。攻击者可以通过构造恶意的Markdown文件,在front-matter块中嵌入JavaScript代码,当目标用户使用md-to-pdf工具处理该文件时,恶意代码将在服务器或用户本地环境中执行,从而实现远程代码执行。由于该工具通常用于自动化文档处理流程,攻击者可能通过供应链攻击、恶意文档分发或社交工程等方式诱导受害者处理特制的Markdown文件。此漏洞的CVSS评分达到满分10.0,属于最严重的安全漏洞,对使用该库的所有用户构成重大威胁。
该漏洞源于md-to-pdf对Markdown front-matter块的解析机制存在缺陷。Front-matter是Markdown文件开头使用---包裹的元数据区域,gray-matter库负责解析该区域的内容。在解析过程中,库会将front-matter中的内容作为JavaScript对象进行处理。攻击者可以利用这一特性,在front-matter块中注入JavaScript代码,例如使用JS函数调用或表达式。当md-to-pdf调用gray-matter解析front-matter时,这些恶意代码将在Node.js环境中执行,从而实现任意代码执行。漏洞利用的关键在于---分隔符的解析逻辑,攻击者可以在---包裹的区域中嵌入可执行的JavaScript表达式。由于md-to-pdf在转换过程中会启动headless Chrome进程,并且整个解析流程以较高权限运行,攻击成功后可能获得对系统的完全控制权。修复方案在5.2.5版本中通过增强输入验证和限制gray-matter库的代码执行能力来消除该风险。