Back to skill

Security audit

Kibana Saved Objects

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent for Kibana saved-object management, but it includes destructive Kibana operations, cleartext HTTP defaults, and unsafe local export file handling that warrant review before installation.

Use this only in a controlled Kibana environment. Prefer HTTPS, review or patch the export filename handling before using untrusted dashboard IDs or endpoints, and require explicit backup and confirmation before delete or overwrite imports.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/export_dashboard.py:91
Finding

Path Traversal and Unsafe Temporary File Creation in Dashboard Export

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:12
Finding

Cleartext HTTP Used for Kibana Saved Objects Operations

Content
View full analysis
/api/saved_objects ``` For Omni-Monitor: `http://192.168.99.43/api/saved_objects` ``` Each script also hardcodes the same cleartext default: ```python DEFAULT_KIBANA = "http://192.168.99.43" ``` The resulting URL is then used directly for sensitive saved-object operations. For example: ```python url = f"{kibana_url}/api/saved_objects/_import?overwrite={str(overwrite).lower()}" ``` ```python req = urllib.request.Request( url, data=body, headers={ "kbn-xsrf": "true", "Content-Type": f"multipart/form-data; boundary={boundary}" }, method="POST" ) ``` ### Technical Analysis HTTP provides neither confidentiality nor server authenticity nor transport integrity. These scripts perform read and write operations involving Kibana saved objects, including importing objects with overwrite enabled, creating Lens objects, and exporting dashboard definitions and references. The scripts accept arbitrary Kibana URLs and do not enforce HTTPS. The documentation and constants actively encourage cleartext deployment. The `kbn-xsrf` header is an application-level request requirement and does not protect network traffic from interception or modification. Although these scripts do not embed authentication credentials, deployments may add authentication externally or rely on trusted-network access. Saved-object payloads themselves may disclose dashboard queries, data-view identifiers, field names, index structure, descriptions, and operational configuration. ### Attack Path 1. An ...[truncated 1180 chars]
Remediation
View remediation
Vulnerability Patterns
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (7)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 61)May include surrounding context.

4. Delete Saved Object

text
DELETE /api/saved_objects/<type>/<id>

5. Bulk Get

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 330)May include surrounding context.

md
### Corrupted saved objects (404 on GET but appears in list)

**Fix:**
1. Delete the corrupted object: `DELETE /api/saved_objects/<type>/<id>`
2. Recreate with proper data

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill documents network and likely file-writing/import capabilities but does not declare any explicit tool scope, permissions, or allowed-tools boundaries. In an agent setting, this can enable broader-than-necessary access and makes it harder to enforce least privilege for destructive API calls and NDJSON import/export workflows.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill includes a delete endpoint for saved objects without an explicit warning that deletion may be permanent and may break dependent dashboards or references. In this context, omission of safety guidance increases the chance of accidental destructive actions by an automated agent or operator.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The import example uses overwrite=true, which can replace existing saved objects, but the skill does not prominently warn that this is destructive. An agent or user following the instructions could unintentionally overwrite dashboards, visualizations, or dependencies, causing configuration loss or service disruption.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The module docstring states it exports a dashboard and its dependencies, which implies dependency closure. In code, it fetches one dashboard, reads its immediate references, and exports only those objects; it does not recursively resolve dependencies of referenced objects, so the documentation overstates what the script actually does.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The manifest describes REST API operations for creating, updating, deleting, importing, exporting, and managing saved objects in Kibana. This script additionally persists the exported data to /tmp on the local filesystem, which is not mentioned in the skill description and goes beyond pure API-based management behavior.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.