🔴 【深度分析】严重安全漏洞:CVE-2026-47708

CVSS 评分: 严重(9.3)🔴  状态: Deferred  发布时间: 2026-07-21


🔍 技术细节速览

字段 值
CVE ID CVE-2026-47708
CVSS 评分 9.3 🔴
严重程度 严重
CVSS 向量 CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
CWE 分类 CWE-77
发布时间 2026-07-21
最后更新 2026-07-23
状态 Deferred
数据来源 security-advisories@github.com

⚠️ CVE-2026-47708 深度分析:MCP-for-Stata 命令注入漏洞(CVSS 9.3 严重)

CVSS 评分:9.3(严重)
CVSS 向量: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
危害等级: 严重(Critical)


漏洞概述

CVE-2026-47708 是一个存在于 MCP-for-Stata 中的命令注入漏洞。MCP-for-Stata 是一个用于将 Stata(统计分析软件)集成到智能体(Agent)系统中的 MCP(Model Context Protocol)服务器。该漏洞源自 stata_do API 和 CLI 中的 log_file_name 参数,该参数在未经任何清理的情况下直接嵌入到 Stata 命令字符串中。尽管存在一个 GuardValidator 用于防护 do-file 内容,但该守卫并未检查 log_file_name 参数。攻击者可以构造恶意的 log_file_name(包含引号、换行符或 Stata 命令分隔符),从而注入任意 Stata 命令(如 shell、python、erase 等)。该漏洞影响 1.17.3 之前的所有版本,1.17.3 版本已修复。


受影响组件与版本

  • 组件: MCP-for-Stata(MCP server for Stata)
  • 受影响版本: < 1.17.3
  • 修复版本: 1.17.3

该服务器可能以服务形式在网络上暴露,或作为本地集成组件运行。


漏洞原理分析

成因

根据 NVD 描述,漏洞根因是 直接字符串插值(Direct String Interpolation)。在 stata_do API 或 CLI 中,log_file_name 参数被拼接进一个 Stata 命令字符串,例如:

capture log close
log using `malicious_log_file_name', replace

如果 malicious_log_file_name 没有被任何转义或引用处理,攻击者可以通过包含以下特殊字符来打破原有语法结构:

  • 双引号或单引号:用于结束字符串,然后插入新命令。
  • 换行符(\n):Stata 允许多行命令,换行符可以开始新行执行新命令。
  • Stata 命令分隔符:如 ;(分号)在某些上下文中可分隔多个命令。

例如,一个恶意 log_file_name 可能为:

log_file.dta"; shell del /F *.dta; "

拼接后变成:

capture log close
log using log_file.dta"; shell del /F *.dta; ", replace

其中 "; shell del /F *.dta; " 部分导致 Stata 解析为 log using log_file.dta 结束后,立即执行 shell del /F *.dta 命令(调用操作系统命令删除所有 .dta 文件)。

GuardValidator 的局限性

GuardValidator 被设计为扫描 do-file 内容(即实际的 Stata 脚本)以阻止危险操作,但它 未验证 log_file_name 参数。攻击者可以将恶意命令注入到文件名参数中,从而绕过守卫。

攻击向量

  • 攻击复杂度 (AV:N / AC:L / AT:N):无需网络访问特殊条件,攻击者只需能够向服务器发送 stata_do 请求(例如通过 MCP 协议),即可远程利用。
  • 权限要求 (PR:N):无需预先认证或权限。
  • 用户交互 (UI:N):无需用户介入。

影响范围

攻击者可执行任意 Stata 命令,包括:

  • shell 命令:直接执行操作系统命令(如删除文件、执行反弹 shell)。
  • python 命令:执行 Python 代码(如果 Stata 配置了 Python 集成)。
  • erase 命令:删除 Stata 数据文件。
  • 其他:修改全局设置、访问敏感数据等。

影响评估

评估维度 详情
攻击复杂度 低(AC:L),仅需构造恶意字符串,无需额外条件。
所需权限 无(PR:N),任何能访问 API/CLI 的实体均可利用。
利用条件 服务器需暴露 MCP 接口,或用户主动触发 stata_do 调用。
潜在后果 完全丧失机密性、完整性和可用性(VC:H/VI:H/VA:H):攻击者可读取/篡改数据、执行任意命令、破坏系统。
横向移动风险 取决于服务器所在环境,shell 命令可导致内网横向渗透。
漏洞状态 Deferred(官方可能尚未发布完整公告或补丁已出但未广泛部署)。

修复建议

官方修复

  • 升级至 1.17.3 或更高版本:该版本已对 log_file_name 参数进行严格清理/转义,阻止了注入。

临时缓解措施

若无法立即升级,可采取以下措施:

  1. 限制 API 暴露范围:将 MCP-for-Stata 服务器仅绑定到本地回环地址(127.0.0.1),避免远程攻击。
  2. 输入验证:在反向代理或 WAF 层对 log_file_name 参数进行白名单验证,仅允许安全的文件名(如只包含字母、数字、下划线、点,且长度有限)。
  3. 权限最小化:以低权限用户运行 Stata 进程,减少 shell 命令的破坏能力。
  4. 禁用危险命令:在 Stata 配置中禁用 shell、python 等命令(如果业务不需要)。

参考资料

  • CVE 详情页:https://nvd.nist.gov/vuln/detail/CVE-2026-47708
  • CWE-77:Improper Neutralization of Special Elements used in a Command ('Command Injection')
  • GitHub 安全公告:security-advisories@github.com(具体链接未提供,可关注 MCP-for-Stata 仓库的 Security Advisories)
  • 修复版本发布说明:MCP-for-Stata v1.17.3 的 Release Notes(需在 GitHub Releases 中查找)

注意:本分析基于 NVD 公布的描述和 CVSS 向量进行合理推断,所有技术细节均以官方数据为准。若需进一步验证,建议查阅 Stata 命令执行机制及 MCP-for-Stata 源码补丁。