Skip to content
Report library
Purpose / Data analysis

Azure Kusto Skill Security Audit

What the author says it does (original text)

Query and analyze data in Azure Data Explorer (Kusto/ADX) using KQL for log analytics, telemetry, and time series analysis. WHEN: KQL queries, Kusto database queries, Azure Data Explorer, ADX clusters, log analytics, time series data, IoT telemetry, anomaly detection.

Independent security check

Do not install or run it yet

Files checked
1
Risks found
3
Could it run dangerous commands?Looks for programs run straight after downloading, remote control of your computer, and hidden commands.Risks found: 1
High risk

The Azure CLI example embeds query text in a double-quoted shell argument, enabling possible local command execution

Source references: 2
What we found

The fallback command requires substituting `<kql-query>` inside a double-quoted `--body`. If the query, database, cluster, or region value contains a quote, backtick, `$()`, or similar shell syntax, direct textual substitution can escape the intended argument and cause the shell to run local commands.

Why this matters

A malicious or unreviewed query value could read or alter files, access locally available credentials, or execute other commands with the agent user's privileges.

The Skill explicitly directs a CLI fallback and places the database and KQL placeholders inside a double-quoted shell argument. If an agent executes it using direct text substitution, `"`, backticks, or `$()` in a query could be interpreted by the shell, causing local command execution or request tampering. No script is shown, so this establishes a hazardous template, not execution. A user can require structured argument passing and JSON encoding, or disable CLI fallback.

SKILL.md:187In the instructionsOpen original file
If Azure MCP Kusto tools fail, timeout, or are unavailable, use Azure CLI commands as fallback.
Show 1 other places
SKILL.md:200In the instructionsOpen original file
For queries, use the Kusto REST API or direct cluster URL:```bashaz rest --method post \  --url "https://<cluster>.<region>.kusto.windows.net/v1/rest/query" \  --body "{ \"db\": \"<database>\", \"csl\": \"<kql-query>\" }"```
Could it expose your files or keys?Looks for uploads of files containing passwords or keys, and keys written directly in the code.Risks found: 1
Medium risk

Broad activation plus default resource discovery may enumerate Azure data assets beyond the specific request

Source references: 6
What we found

The Skill says to activate immediately for broad mentions such as Kusto, log analytics, or SIEM tasks, then makes listing available clusters and databases in the subscription the first workflow step. This can occur even when the user only wants KQL guidance or authorized access to one known database.

Why this matters

Cluster names, database names, and table schemas can reveal organizational structure, system names, or the layout of security-sensitive data; subsequent queries may also expand beyond the scope the user specified.

Activation covers merely mentioning Kusto/KQL and broad log or security-analysis requests, while the core workflow starts by discovering available clusters and databases in the subscription. For a user asking only about KQL syntax or authorizing one known database, this could cause unnecessary asset enumeration. The listed tool also says it lists all clusters. Users can require skipping discovery and constrain access to an explicitly named subscription, cluster, and database.

SKILL.md:16In the instructionsOpen original file
**Use this skill immediately when the user asks to:**- "Query my Kusto database for [data pattern]"- "Show me events in the last hour from Azure Data Explorer"- "Analyze logs in my ADX cluster"- "Run a KQL query on [database]"- "What tables are in my Kusto database?"- "Show me the schema for [table]"- "List my Azure Data Explorer clusters"- "Aggregate telemetry data by [dimension]"- "Create a time series chart from my logs"
Show 5 other places
SKILL.md:27In the instructionsOpen original file
**Key Indicators:**- Mentions "Kusto", "Azure Data Explorer", "ADX", or "KQL"- Log analytics or telemetry analysis requests- Time series data exploration- IoT data analysis queries- SIEM or security analytics tasks- Requests for data aggregation on large datasets- Performance monitoring or APM queries
SKILL.md:48In the instructionsOpen original file
1. **Discover Resources**: List available clusters and databases in subscription2. **Explore Schema**: Retrieve table structures to understand data model3. **Query Data**: Execute KQL queries for analysis, filtering, aggregation4. **Analyze Results**: Process query output for insights and reporting
SKILL.md:169In the instructionsOpen original file
|------|---------|| `kusto_cluster_list` | List all Azure Data Explorer clusters in a subscription || `kusto_database_list` | List all databases in a specific Kusto cluster || `kusto_query` | Execute KQL queries against a Kusto database || `kusto_table_schema_get` | Retrieve schema information for a specific table |
SKILL.md:46In the instructionsOpen original file
## Core Workflow1. **Discover Resources**: List available clusters and databases in subscription2. **Explore Schema**: Retrieve table structures to understand data model3. **Query Data**: Execute KQL queries for analysis, filtering, aggregation4. **Analyze Results**: Process query output for insights and reporting
SKILL.md:165In the instructionsOpen original file
## MCP Tools Used| Tool | Purpose ||------|---------|| `kusto_cluster_list` | List all Azure Data Explorer clusters in a subscription || `kusto_database_list` | List all databases in a specific Kusto cluster || `kusto_query` | Execute KQL queries against a Kusto database || `kusto_table_schema_get` | Retrieve schema information for a specific table |
Could it delete files or keep running?Looks for broad file deletion, disk overwrites, and programs set to start automatically.No risks found
Could it bypass safety checks?Looks for skipped website security checks, excessive file access, or actions that skip your approval.Risks found: 1
Medium risk

Falling back to Azure CLI after authentication failure may cross the user's intended MCP identity and control boundary

Source references: 4
What we found

The Skill explicitly treats MCP authentication failure as a reason to switch to Azure CLI. The CLI may use an existing, different, and more privileged local Azure identity. It also treats an empty query result as a fallback trigger even though emptiness does not establish tool failure.

Why this matters

A query could run under an unexpected subscription, tenant, or identity, bypassing the MCP path's permission scope, auditing, or approval controls and reaching data unavailable to the MCP identity.

The fallback conditions explicitly include MCP authentication failures and empty responses, followed by switching to Azure CLI. The visible instructions do not require verifying that the CLI's current tenant, subscription, and identity match MCP, or obtaining renewed user authorization; this could therefore access resources through a different local Azure identity. An empty response may also be a legitimate result rather than a tool failure. Users can require stopping on authentication errors and confirming the CLI identity, tenant, and subscription first.

SKILL.md:187In the instructionsOpen original file
If Azure MCP Kusto tools fail, timeout, or are unavailable, use Azure CLI commands as fallback.
Show 3 other places
SKILL.md:209In the instructionsOpen original file
Switch to Azure CLI when:- MCP tool returns timeout error (queries > 60 seconds)- MCP tool returns "service unavailable" or connection errors- Authentication failures with MCP tools- Empty response when database is known to have data
SKILL.md:202In the instructionsOpen original file
```bashaz rest --method post \  --url "https://<cluster>.<region>.kusto.windows.net/v1/rest/query" \  --body "{ \"db\": \"<database>\", \"csl\": \"<kql-query>\" }"```
SKILL.md:207In the instructionsOpen original file
### When to FallbackSwitch to Azure CLI when:- MCP tool returns timeout error (queries > 60 seconds)- MCP tool returns "service unavailable" or connection errors- Authentication failures with MCP tools- Empty response when database is known to have data
Could it mislead the AI or hide text?Checks the skill instructions for requests to ignore you, influence the report, or hide text in invisible characters.No risks found
Could it change links or payment recipients without asking?Looks for forced referral or payment changes combined with instructions to hide the change.No risks found

Inside this skill

8 instruction sections

The Skill directs the agent to enumerate Azure Data Explorer clusters and databases, inspect table schemas, execute KQL queries, and process the results. Queries may cover logs, telemetry, security events, and user behavior data.

View source
SKILL.md:48In the instructionsOpen original file
1. **Discover Resources**: List available clusters and databases in subscription2. **Explore Schema**: Retrieve table structures to understand data model
SKILL.md:49In the instructionsOpen original file
1. **Discover Resources**: List available clusters and databases in subscription2. **Explore Schema**: Retrieve table structures to understand data model3. **Query Data**: Execute KQL queries for analysis, filtering, aggregation
SKILL.md:50In the instructionsOpen original file
2. **Explore Schema**: Retrieve table structures to understand data model3. **Query Data**: Execute KQL queries for analysis, filtering, aggregation4. **Analyze Results**: Process query output for insights and reporting
SKILL.md:227In the instructionsOpen original file
- **Log Analytics**: Application logs, system logs, audit logs- **IoT Analytics**: Sensor data, device telemetry, real-time monitoring- **Security Analytics**: SIEM data, threat detection, security event correlation- **APM**: Application performance metrics, user behavior, error tracking- **Business Intelligence**: Clickstream analysis, user analytics, operational KPIs

The normal path uses four MCP tools to list resources, run queries, and retrieve table schemas, with parameters including subscription, cluster, database, query, or table name.

View source
SKILL.md:169In the instructionsOpen original file
|------|---------|| `kusto_cluster_list` | List all Azure Data Explorer clusters in a subscription || `kusto_database_list` | List all databases in a specific Kusto cluster || `kusto_query` | Execute KQL queries against a Kusto database || `kusto_table_schema_get` | Retrieve schema information for a specific table |
SKILL.md:174In the instructionsOpen original file
**Required Parameters**:- `subscription`: Azure subscription ID or display name- `cluster`: Kusto cluster name (e.g., "mycluster")- `database`: Database name- `query`: KQL query string (for query operations)- `table`: Table name (for schema operations)

If the MCP tools time out, fail to connect or authenticate, or unexpectedly return an empty result, the Skill directs the agent to switch to the local Azure CLI and submit the query through the Kusto REST endpoint.

View source
SKILL.md:187In the instructionsOpen original file
If Azure MCP Kusto tools fail, timeout, or are unavailable, use Azure CLI commands as fallback.
SKILL.md:209In the instructionsOpen original file
Switch to Azure CLI when:- MCP tool returns timeout error (queries > 60 seconds)- MCP tool returns "service unavailable" or connection errors- Authentication failures with MCP tools- Empty response when database is known to have data
Start here · InstructionsSKILL.md
azure-kusto
Lines connect the instruction file to its sections, not an observed execution order. Select a section to read the source. 4 more sections are available in the original file.
Files and check records1 files

Coverage and gaps

Content covered in each file

These are the source ranges included in this check, not a guarantee that every issue has been resolved.

  • SKILL.mdFull text included

This report is for the version above. We read the available code and instructions without running the skill or checking extra packages it installs. This is not a promise of safety: a different version or setup may behave differently.

  • SKILL.mdInstructions

Operations mentioned in code and instructions

Run commands
SKILL.md:201In the instructionsOpen original file
For queries, use the Kusto REST API or direct cluster URL:```bashaz rest --method post \
Connect to websites
SKILL.md:203In the instructionsOpen original file
az rest --method post \  --url "https://<cluster>.<region>.kusto.windows.net/v1/rest/query" \  --body "{ \"db\": \"<database>\", \"csl\": \"<kql-query>\" }"
Lines read
231
File checksum (to compare versions)
36e85c64c5b02585ae2ec3d9abe642212e0a27ecf72977ce626e8a342e988b7c