Back to skill

Security audit

Intelligent Data Analysis Assistant

Security checks for vulnerabilities and agentic risk

Overview

The skill is purpose-aligned for data analysis, but it handles databases, credentials, local data previews, and generated HTML reports without enough safety scoping or disclosure.

Review this before installing if you plan to use real company or personal data. Use least-privilege read-only database accounts, avoid pasting production passwords into chat, inspect generated SQL before execution, do not point it at sensitive files unless row previews are acceptable, and treat generated HTML reports as persistent files that may execute third-party JavaScript from a CDN when opened.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
references/visualization-template.md:15
Finding

Unescaped Dynamic Content in Generated HTML and JavaScript

Content
View full analysis
{report title} ``` ```html

📊 {report title}

{time range} | Mock Data

Total Orders
{value}
Total Revenue
{value}
Daily Avg
{value}
YoY Growth
{value}

📈 Trend

Category Distribution

Region Comparison

📋 Insights

    {insights}
``` ### Technical Analysis The visualization template places report titles, time ranges, KPI values, generated insights, chart labels, and chart data dir ...[truncated 2215 chars]
Remediation
View remediation
`, `"`, and `'`. 3. Do not interpolate generated insights as raw HTML. Create list elements programmatically and assign their contents through `textContent`. 4. Serialize chart labels and datasets with a trusted JSON serializer. Do not construct JavaScript arrays by concatenating strings. 5. If rich HTML insights are intentionally supported, process them through a maintained allowlist-based HTML sanitizer before insertion. 6. Add a restrictive Content Security Policy that blocks inline event handlers and limits outbound connections to approved destinations. Where practical, move initialization code to a reviewed local script. 7. Validate generated filenames separately to prevent path traversal or unsafe path characters. 8. Add tests using payloads containing closing tags, quotation marks, event handlers, and script-context terminators to verify that generated reports render them only as text. ]]>

T08 · Insecure Dependencies

Note
Location
references/visualization-template.md:12
Finding

Mutable Third-Party JavaScript Dependency Without Integrity Verification

Content
View full analysis
``` ### Technical Analysis Every generated visualization report loads and executes JavaScript from jsDelivr. The dependency is specified only as `chart.js@4`, which is a mutable major-version range rather than an exact audited release. The element also lacks a Subresource Integrity (`integrity`) hash. Consequently, the code executed when a report is opened can differ from the dependency reviewed during the skill audit. A compromised package release, CDN response, or other supply-chain failure could cause attacker-controlled JavaScript to execute in generated reports. Opening a report also creates an external network request that may disclose ordinary request metadata to the CDN. ### Attack Path 1. The skill generates a visualization containing the remote Chart.js script element. 2. A victim opens the generated HTML report while network access is available. 3. The browser requests the current resource matching `chart.js@4` from jsDelivr. 4. The CDN returns JavaScript that was not cryptographically bound to the audited content, potentially because of an upstream package or CDN compromise. 5. The browser executes the returned code with access to the generated page. 6. Malicious dependency code can read report contents, alter visualizations, and send embedded report data to a remote server. ### Impact Assessment Exploitation would provide JavaScript execution in the context of every affected report opened while the compromised resource is served. The code could falsify report output or exfiltrate data embedded in the page. No operating-system privilege escalation is established. The direct scope is the visualization page and its accessible data. The effect ...[truncated 97 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (10)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
74% confidence
Finding

The phrase 'Chinese questions auto-converted to SQL' indicates a language-specific behavior, but the markdown does not clarify that other languages are supported or that Chinese is optional. This can violate language/locale policy when a specific language is implied without explicit user choice or justification.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

The skill advertises automatic reading of Excel, JSON, JSONL, and CSV files and automatically outputting an overview including the first five rows. That behavior can expose sensitive contents, secrets, personal data, or proprietary records from local or uploaded files without clear consent, filtering, or minimization.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill claims SQL is restricted to read-only SELECT, but this file only documents the behavior and provides no enforceable safeguard. In an LLM-driven SQL generation workflow, prompt injection, model mistakes, or connector quirks can lead to non-SELECT statements or dangerous read operations unless the execution layer validates and enforces a strict allowlist.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill asks users for database usernames and passwords without any warning about secure secret handling, storage, logging, or least-privilege use. In an LLM-powered, multi-turn assistant, this is risky because users may paste production credentials into prompts or config fields that could be retained in chat history, telemetry, or downstream tooling.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The template loads Chart.js from a third-party CDN, which introduces a supply-chain and privacy risk: generated reports will fetch executable JavaScript over the network at runtime and depend on the integrity and availability of that external source. In the context of a data-analysis skill that may render business data into local HTML reports, this can leak access metadata and expose users to script compromise if the CDN resource is tampered with or blocked.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documented behavior automatically writes a standalone HTML chart file to disk without warning or user opt-in. Unprompted artifact creation can leak data into persistent storage, create discoverable files in shared environments, and surprise users who expect analysis to remain in-session.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest says the skill supports MySQL, PostgreSQL, Snowflake, and Excel/JSON file reading. This file documents additional supported sources and formats: sqlite, bigquery, redshift, JSONL, and CSV. That creates a semantic mismatch between the advertised capability in the manifest and the broader behavior described in the skill documentation.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
94% confidence
Finding

Line L03 states the output is a standalone HTML file, which ordinarily implies the page is self-sufficient. However, line L14 imports Chart.js from jsDelivr, so the page depends on external network access and third-party hosted code, contradicting the documentation's characterization.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

This markdown file instructs the generation of a standalone HTML file and includes a Chart.js script loaded from a public CDN. The description does not warn that the output file will reference an external network resource when opened, nor that a new file will be created on disk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The template sets <html lang="en">, which forces an English language locale in the generated output. The file does not indicate that this is configurable, user-selected, or justified as a region-specific requirement.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.