Back to skill

Security audit

Consulting Slide Generator

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent Japanese consulting-slide generator, but its rendered slides load live third-party JavaScript and fonts, which is risky for confidential business content.

Review before installing if you plan to use confidential or client-sensitive slide content. Prefer bundling Tailwind CSS and fonts locally, disabling outbound network access during Chrome rendering, or avoiding sensitive data until the templates no longer depend on live CDNs. Also note that the skill is Japanese-focused and references a process template that is not included.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T03 · Remote Payload Retrieval and Execution

Warning
Location
assets/templates/problem.html:6
Finding

Unpinned Remote JavaScript Executes During Local Slide Rendering

Content
View full analysis
``` The affected HTML files are rendered through the following command in `scripts/html2png.sh:13-16`: ```bash google-chrome --headless --disable-gpu \ --screenshot="$OUTPUT" \ --window-size=1200,675 \ "file://$INPUT" 2>/dev/null ``` ### Technical Analysis Each supplied HTML template and example loads JavaScript from `https://cdn.tailwindcss.com` at rendering time. The URL is not pinned to an immutable version, and no Subresource Integrity metadata is provided. Consequently, the code that executes in headless Chrome can change after the Skill package has been reviewed. This is a remote payload execution channel rather than a purely static stylesheet dependency. When `html2png.sh` opens a generated slide, Chrome retrieves the current CDN response and executes it in the local slide page. If the CDN, its delivery path, or the referenced resource is compromised, attacker-controlled JavaScript could execute in the page context. The Google Fonts stylesheet also creates an outbound dependency and reduces rendering determinism, although the reviewed project does not contain evidence that it directly transmits sensitive slide data. No currently malicious CDN payload or deliberate exfiltration logic was found in the repository. The vulnerability is the trust placed in mutable remote code during local rendering. ### Attac ...[truncated 1534 chars]
Remediation
View remediation
` elements and unexpected external resource URLs in generated slides. 8. Revalidate screenshots after dependency updates and retain reviewed dependency artifacts to support reproducible builds. ]]>
Vulnerability Patterns
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (13)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The description and introductory instructions specify the skill in Japanese and indicate it generates consulting slides in that locale, but there is no opt-in or alternative language behavior described. Under the policy, forcing a specific language without user choice is a natural-language policy violation unless the locale restriction is clearly justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The HTML declares lang="ja" at L02 and includes Japanese text such as 原則: at L69, which forces a specific language/locale in the rendered output. Under the policy rule, locale-specific behavior should either be optional for the user or clearly documented as a justified regional constraint.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The HTML document explicitly sets lang="ja", and the visible static labels in the template are also hard-coded in Japanese. This creates a language/locale constraint with no opt-in, fallback, or documented region-specific justification, which matches the policy category for forced language selection.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This template pulls executable/style resources from external third-party CDNs (Tailwind CDN script and Google Fonts), which creates a supply-chain and privacy risk for a file that could otherwise render locally. Because the output is rendered via headless Chrome, any compromised or unavailable remote dependency can alter rendering, exfiltrate metadata such as IP/request timing, or break deterministic slide generation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The HTML document explicitly sets lang="ja", which indicates the template is fixed to Japanese. Under the policy rules, forcing a specific language without user opt-in or a clearly documented justification is a natural-language locale-policy concern.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The template pulls executable/styled resources from third-party CDNs at render time, which creates a supply-chain and network-dependency risk. In a headless Chrome rendering pipeline, compromised CDN content or unexpected remote responses could alter output, exfiltrate data via network requests, or break deterministic/offline rendering.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The HTML document declares lang="ja", which forces a specific language/locale in the rendered output. Under the policy rules, this is a natural-language policy concern because the file does not offer user opt-in or explain that the template is intentionally region-specific.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The template fetches Tailwind CSS and a Google Font from third-party CDNs at render time. In a headless Chrome HTML-to-PNG workflow, this creates a supply-chain and privacy risk because rendering depends on remote content that could change, fail, or expose metadata about the environment making the request.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

Remote third-party resource loading is not necessary for the core function of generating a slide image and expands the attack surface unnecessarily. If the renderer has network access, an attacker or compromised dependency could influence output, cause build instability, or leak usage information through external requests.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

The HTML declares lang="ja", and the visible content is exclusively in Japanese, which indicates a fixed language choice. Under the policy, locale constraints should either be optional for the user or clearly justified as region-specific; this file provides neither.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The document declares lang="ja", and the visible content is entirely Japanese, which indicates a fixed language choice. Under the policy rule, forcing a specific language without opt-in or documented justification is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The document declares lang="ja", and the visible UI text is written in Japanese throughout the file. Under the policy rule, forcing a specific language without user opt-in or documented justification is a natural-language locale constraint.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

This markdown guidance alternates between Japanese and English throughout the file, which imposes a multilingual locale expectation on users without any explicit opt-in or justification. Under the policy for natural-language violations, forcing a language or locale without user choice can be a concern even in reference documentation.

Content

No source excerpt is available for this finding.