IPBUF安全漏洞报告
English
CVE-2025-65108 CVSS 10.0 严重

CVE-2025-65108 md-to-pdf远程代码执行漏洞

披露日期: 2025-11-21

漏洞信息

漏洞编号
CVE-2025-65108
漏洞类型
远程代码执行
CVSS评分
10.0 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
md-to-pdf

相关标签

远程代码执行md-to-pdfgray-matterNode.js供应链安全命令注入CVE-2025

漏洞概述

md-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库的代码执行能力来消除该风险。

攻击链分析

STEP 1
步骤1
攻击者创建恶意Markdown文件,在front-matter块中嵌入JavaScript代码
STEP 2
步骤2
攻击者通过钓鱼邮件、恶意仓库或供应链攻击等方式分发该恶意Markdown文件
STEP 3
步骤3
受害者在本地或服务器上使用存在漏洞的md-to-pdf版本处理该Markdown文件
STEP 4
步骤4
md-to-pdf调用gray-matter库解析front-matter块,触发恶意JavaScript代码执行
STEP 5
步骤5
攻击者获得目标系统的命令执行权限,可窃取敏感数据、安装后门或进一步渗透

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
--- title: test --- {{constructor.constructor('console.log(process.env)')()}}

影响范围

md-to-pdf < 5.2.5

防御指南

临时缓解措施
如果无法立即升级到修复版本,应避免使用md-to-pdf处理来源不明的Markdown文件,或在隔离环境中处理所有外部文档。同时可以暂时禁用front-matter解析功能,或实现自定义的输入验证来过滤可疑的JavaScript代码模式。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表