Back to skill

Security audit

Chart Image

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent for chart generation, but it needs Review because it ships outdated rendering dependencies with current security advisories.

Review before installing, especially on systems that process untrusted chart specs or publish SVG output. Prefer upgrading sharp and Vega-family dependencies first, and keep --spec, --csv-file, and --output paths controlled by trusted runtime code rather than free-form user text.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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 (13)

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · README.md (reported line 264)May include surrounding context.

Read from stdin:

bash
curl -s api.example.com/metrics | node scripts/chart.mjs --type line --dark --output metrics.png
echo '[{"x":"A","y":1},{"x":"B","y":2}]' | node scripts/chart.mjs --output out.png

Known Vulnerable Dependency: sharp==0.33.5 — 2 advisory(ies): GHSA-f88m-g3jw-g9cj (sharp inherited vulnerabilities in libvips: CVE-2026-33327, CVE-2026-33328, CVE-); GHSA-rgj7-g3m4-5g8c (sharp: Vulnerabilities in libheif: GHSA-g89c-p67h-r497 and GHSA-2jg2-4ch7-h545)

High
Category
Supply Chain
Confidence
95% confidence
Finding

The lockfile pins sharp 0.33.5, and the supplied advisories indicate inherited memory-safety issues in bundled native image libraries such as libvips/libheif. In a chart-generation skill that processes image/chart inputs and emits image files, malformed input could trigger crashes or potentially deeper native-library exploitation, making this a real dependency risk rather than a false positive.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: vega==5.33.1 — 1 advisory(ies): CVE-2025-59840 (Vega Cross-Site Scripting (XSS) via expressions abusing toString calls in enviro)

High
Category
Supply Chain
Confidence
92% confidence
Finding

The lockfile includes vega 5.33.1, and the cited advisory describes XSS through Vega expressions. This skill's purpose is to render charts from potentially user-supplied specifications/data, so if generated Vega specs or expressions are later rendered in HTML/SVG contexts or reused by downstream systems, attacker-controlled content could execute script or inject active content.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: vega-functions==5.18.1 — 1 advisory(ies): CVE-2025-66648 (`vega-functions` vulnerable to Cross-site Scripting via `setdata` function)

High
Category
Supply Chain
Confidence
91% confidence
Finding

vega-functions 5.18.1 is flagged for XSS via the setdata function, which is relevant because charting workflows often transform untrusted data into visualization specs. In this skill context, that increases risk if users can influence Vega/Vega-Lite behavior directly or if outputs are consumed in browsers, dashboards, or SVG-capable renderers.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: vega-expression==5.1.2 — 1 advisory(ies): CVE-2025-59840 (Vega Cross-Site Scripting (XSS) via expressions abusing toString calls in enviro)

High
Category
Supply Chain
Confidence
90% confidence
Finding

vega-expression 5.1.2 is directly implicated in the same expression-based XSS issue, and expression evaluation is a core part of Vega/Vega-Lite processing. For a skill that converts data into publication-quality charts, accepting attacker-influenced specs or expressions makes this especially relevant because the library may evaluate hostile expressions during rendering or produce dangerous output for downstream display.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: vega==5.33.1 — 1 advisory(ies): CVE-2025-59840 (Vega Cross-Site Scripting (XSS) via expressions abusing toString calls in enviro)

High
Category
Supply Chain
Confidence
90% confidence
Finding

The dependency range for vega can resolve to 5.33.1, which is flagged as vulnerable to expression-based XSS. In a chart-generation skill that may process user-supplied chart specs or data, a vulnerable Vega expression engine can increase the risk of script injection or unsafe expression evaluation in downstream rendered outputs or consuming environments.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: sharp==0.33.5 — 2 advisory(ies): GHSA-f88m-g3jw-g9cj (sharp inherited vulnerabilities in libvips: CVE-2026-33327, CVE-2026-33328, CVE-); GHSA-rgj7-g3m4-5g8c (sharp: Vulnerabilities in libheif: GHSA-g89c-p67h-r497 and GHSA-2jg2-4ch7-h545)

High
Category
Supply Chain
Confidence
87% confidence
Finding

The resolved sharp version is reported to include vulnerable native imaging dependencies such as libvips/libheif. In an image-generation skill that parses and renders image content, vulnerable codecs can expose the service to memory corruption, denial of service, or malicious file parsing attacks when handling crafted inputs.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest description says to use the skill when 'visualizing data, creating graphs, plotting time series, showing distributions, or generating chart images,' which is a very broad natural-language trigger surface for a markdown/manifest file. It does not provide clear boundaries, explicit trigger phrases, or negative examples to distinguish when this skill should or should not be invoked.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill instructs automatic use of Israel time to decide dark mode without user opt-in, which can cause behavior based on an unrelated locale and leak assumptions about geography or operator preferences into outputs. In agent settings, hardcoded locale/timezone rules are risky because they create nondeterministic behavior and can conflict with user context, policy, or audit expectations.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

The markdown repeatedly instructs users to run commands with --output chart.png, which creates or overwrites local files, but it does not include any warning about filesystem effects. For a markdown skill description, file-writing behavior that affects user data should be disclosed, even briefly, so users understand the command will generate files on disk.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · scripts/package.json (reported line 5)May include surrounding context.

json
"name": "chart-image-scripts",
  "type": "module",
  "dependencies": {
    "vega": "^5.30.0",
    "vega-lite": "^5.21.0",
    "sharp": "^0.33.0"
  }

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · scripts/package.json (reported line 6)May include surrounding context.

json
"type": "module",
  "dependencies": {
    "vega": "^5.30.0",
    "vega-lite": "^5.21.0",
    "sharp": "^0.33.0"
  }
}

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · scripts/package.json (reported line 7)May include surrounding context.

json
"dependencies": {
    "vega": "^5.30.0",
    "vega-lite": "^5.21.0",
    "sharp": "^0.33.0"
  }
}

Static analysis

No suspicious patterns detected.