CVE-2025-68278CVE-2025-68278是TinaCMS内容管理系统中的一个高危远程代码执行漏洞。TinaCMS是一个无头内容管理系统(Headless CMS),被广泛应用于静态网站生成和内容管理场景。该漏洞源于tinacms在3.1.1版本之前不安全地使用了gray-matter包进行Markdown文件解析。gray-matter是一个用于解析YAML front matter的流行工具,但它在处理包含JavaScript代码的front matter时存在安全隐患。攻击者可以通过控制Markdown文件的内容(例如博客文章),在文件被TinaCMS处理时注入并执行任意代码。由于该系统通常用于管理网站内容,攻击者成功利用此漏洞可能导致服务器完全沦陷、敏感数据泄露或网站被篡改。漏洞的CVSS评分为8.8,属于高危级别,攻击复杂度低,无需认证即可发起攻击,但需要一定的用户交互(如诱使管理员预览或发布恶意内容)。
该漏洞的核心问题在于gray-matter包在解析Markdown文件的YAML front matter时,会将包含特定语法的内容作为JavaScript代码执行。gray-matter支持通过`!!js/function`或`!!js/code`标签来声明JavaScript函数或代码块,当解析器遇到这些标签时,会使用Function构造函数将字符串内容转换为可执行代码。攻击者可以在Markdown文件的front matter中注入恶意JavaScript代码,格式如下:---
title: Test
js_code: !!js/function |
function(){ require('child_process').exec('malicious_command')() }
---
当TinaCMS调用gray-matter解析此文件时,注入的代码会在服务器端执行。由于tinacms在处理Markdown文件(如博客文章)时调用了gray-matter,攻击者只需上传或提交包含恶意代码的Markdown文件即可实现RCE。漏洞的利用需要攻击者能够控制目标系统处理的Markdown文件内容,这可能通过博客评论、内容提交功能或直接访问文件系统实现。修复后的版本(tinacms 3.1.1、@tinacms/cli 2.0.4、@tinacms/graphql 2.0.3)移除了对危险JS标签的支持或增加了安全过滤机制。