Back to skill

Security audit

anything-to-html

Security checks for vulnerabilities and agentic risk

Overview

This is a Chinese-focused skill for turning deliverables into single-file HTML, with no install scripts or persistence, though users should notice its optional third-party CDN use.

Install only if you want agents to produce polished HTML deliverables by default. For sensitive business data, ask the agent to avoid CDN scripts and use inline SVG/native JavaScript so the generated file does not load third-party code when opened.

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

T08 · Insecure Dependencies

Warning
Location
SKILL.md:34
Finding

Mutable Third-Party JavaScript Is Loaded Without Integrity Verification

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:34-40
Vulnerability Type: Remote, insufficiently pinned JavaScript dependencies without Subresource Integrity
Risk Level: Medium

Vulnerable Code

markdown
### Allowed CDN List

The following libraries may be referenced through `<script src="...">` or `<link href="...">`:

- **Tailwind (browser build)**: `https://cdn.tailwindcss.com`
- **ECharts**: `https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js`
- **Chart.js**: `https://cdn.jsdelivr.net/npm/chart.js`
- **D3**: `https://cdn.jsdelivr.net/npm/d3@7`
- **Google Fonts**: when a specific Chinese font is required

The dashboard reference provides a directly executable example:

html
<script src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script>

Technical Analysis

The Skill permits generated HTML documents to load and execute JavaScript from third-party CDNs. Several dependency URLs use a floating major version or omit the version entirely. None of the prescribed script tags includes a Subresource Integrity (integrity) hash.

Consequently, the code executed when a generated document is opened is not fully represented by the audited Skill package. It may change after the Skill has been reviewed because of a new package release, CDN compromise, upstream account compromise, or malicious alteration of the delivered resource.

This is primarily an insecure dependency and supply-chain issue. It also exhibits characteristics of remote payload retrieval because the effective executable payload is fetched at document-open time.

Attack Path

  1. A user requests an interactive dashboard or visualization.
  2. The Agent follows the Skill guidance and generates an HTML document containing one of the approved CDN script tags.
  3. An attacker compromises the relevant package release process, package owner account, CDN infrastructure, or another upstream delivery component.
  4. The user or another recipient opens th ...[truncated 1175 chars]
Remediation
View remediation

Remediation Suggestions

  1. Prefer inline SVG, CSS, and minimal native JavaScript so generated documents remain genuinely self-contained and offline-capable.

  2. Prohibit floating dependency URLs such as echarts@5, d3@7, and unversioned chart.js.

  3. If remote dependencies are unavoidable, pin every dependency to an exact reviewed version.

  4. Require a cryptographic Subresource Integrity digest and CORS mode:

    html
    <script
      src="https://cdn.example.invalid/library-x.y.z.min.js"
      integrity="sha384-REVIEWED_DIGEST"
      crossorigin="anonymous"></script>
    
  5. Verify that the selected CDN serves immutable content for the pinned URL.

  6. Maintain an approved dependency manifest containing the exact version, URL, expected digest, review date, and update procedure.

  7. Document that CDN-enabled output requires a network connection and contacts third parties when opened.

  8. Offer an offline alternative in which reviewed library code is embedded into the single HTML file.

  9. Add a generated Content Security Policy that restricts script sources and blocks unnecessary network capabilities. Ensure any required script hashes or nonces are explicitly enumerated.

  10. Add an automated validation step that rejects generated HTML containing unversioned scripts, unauthorized domains, or external scripts without integrity metadata.

Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (11)

Vague Triggers

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The instruction to trigger even when the user did not ask for HTML, based only on a subjective judgment that Markdown would 'look long or ugly,' makes activation ambiguous and non-deterministic. In multi-skill systems, this kind of self-expanding scope can capture routine summarization, analysis, and documentation tasks, potentially altering outputs, workflow, and downstream trust assumptions.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The instruction to trigger even when the user did not ask for HTML, based only on a subjective judgment that Markdown would 'look long or ugly,' makes activation ambiguous and non-deterministic. In multi-skill systems, this kind of self-expanding scope can capture routine summarization, analysis, and documentation tasks, potentially altering outputs, workflow, and downstream trust assumptions.

Content

No source excerpt is available for this finding.

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/archetype-article.md (reported line 253)May include surrounding context.

用来强调关键观点、提醒坑点、引用原文。提供三种语气:

html
<!-- 中性引用 -->
<blockquote class="callout">
  <p>这里是被引用的一段话或关键观点。</p>
</blockquote>

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Forcing Chinese as the default output language without user opt-in can override user intent, system defaults, or locale requirements, especially in multilingual environments. While not directly enabling code execution, it can cause policy or workflow violations, misdelivery, and silent corruption of expected output semantics for downstream consumers.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

This is a JSON manifest-like file, so vague-trigger review applies. The skill name "anything-to-html" is extremely broad and does not constrain what kinds of inputs or contexts should invoke the skill, increasing the risk of unintended activation for many unrelated requests involving conversion or formatting.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The prompt and expected output explicitly require Chinese content (for example, "中文内容为主") and the other evals are also written to elicit Chinese-language deliverables, but the file does not indicate this is optional, user-selectable, or justified by a region-specific constraint. This can violate language/locale policy when a skill implicitly forces a specific language without opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill content is written entirely in Chinese and strongly prescribes behavior for when the skill should be triggered, but it does not offer any mechanism to preserve or adapt to the user's language preference. In a multi-language environment, this can cause unwanted language switching in final outputs, reducing usability, causing misunderstandings, and potentially leading users to trust or share deliverables they cannot fully review.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This markdown file is written entirely in Chinese and includes prescriptive language such as '中文场景"万/亿"单位更友好' and formatting guidance tailored to Chinese usage, but it does not state that the skill is region-specific or optional by locale. That creates a natural-language policy concern because the skill appears to impose a specific language/locale without user opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The line explicitly instructs that typography should be adjusted for Chinese reading habits rather than directly using English typography. Because this is a general design-tokens document for 'all archetypes', it imposes a locale-specific preference without user opt-in or a clearly documented region-specific justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

Line L037 states this is a 'verified' optimal width for Chinese reading, and the document overall presents Chinese typography defaults as the standard. Because the skill file is guidance that may be reused broadly, this can be read as forcing a specific language/locale convention without explicit user opt-in or a documented region-specific scope.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

The table defines long-form reading width based on '中文最佳阅读宽度', which bakes a Chinese-locale assumption into general output guidance. In a shared token reference, this can amount to a locale policy bias unless the skill either scopes itself to Chinese outputs or allows locale-dependent layout choices.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.