Back to skill

Security audit

design-analysis

Security checks for vulnerabilities and agentic risk

Overview

This skill mostly does what it says, but it generates HTML in a way that can run unsafe JavaScript when opened and logs full invocation parameters.

Install only if you trust the design folder, filenames, and any custom section content. Treat generated HTML as active content: do not open or host reports created from untrusted inputs on an authenticated or shared origin, and choose a new output filename to avoid overwriting existing files.

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
index.js:566
Finding

Arbitrary JavaScript Execution in Generated HTML Reports

Content
View full analysis
`
  • ${path.basename(file)} - 第${index + 1}张设计稿
  • ` ).join('\n')} ``` ```javascript ${title} ``` ```javascript const pages = ${JSON.stringify(sections, null, 2)}; ``` ```javascript pages.forEach((page, index) => { const pageEl = document.createElement('div'); pageEl.className = 'page'; pageEl.id = `page-${index}`; // 使用绝对路径加载图片 const imagePath = page.image ? `${window.location.pathname.replace(/[^/]*$/, '')}${page.image}` : ''; const imageHtml = imagePath ? `${page.title}` : `
    图片位置: ${page.title}
    `; pageEl.innerHTML = `

    ${page.title}

    ${page.tags ? page.tags.map(tag => `${tag}`).join('') : ''} ${page.content}
    ${imageHtml}
    `; container.appendChild(pageEl); }); ``` ### Technical Analysis The report generator embeds multiple untrusted values into HTML, HTML attributes, CSS, and an executable inline JavaScript block without context-appropriate encoding or sanitization. These values include: - The report `title` - Cu ...[truncated 3811 chars]
    Remediation
    View remediation
    /g, '\\u003E') .replace(/&/g, '\\u0026') .replace(/\u2028/g, '\\u2028') .replace(/\u2029/g, '\\u2029'); } ``` A safer design is to place encoded JSON in a non-executable `

    T09 · Insecure Skill Coding Practices

    Warning
    Location
    run.js:24
    Finding

    Sensitive OpenClaw Context May Be Disclosed Through Unrestricted Parameter Logging

    Content
    View full analysis
    Remediation
    View remediation
    Vulnerability Patterns
    • 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
    • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
    Findings (14)

    Natural-Language Policy Violations

    Medium
    Category
    Not specified by scanner
    Confidence
    92% confidence
    Finding

    The document title, section headings, usage examples, and sample dialogue are all written as if the skill is to be used in Chinese, including explicit example commands the user should say. Because the file does not offer an opt-in language choice or explain that the skill is intentionally region-specific, this creates a natural-language locale policy concern under the language/locale rule.

    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 description is presented entirely in Chinese and the invocation example also assumes Chinese-language use, with no indication that users may choose another language. Per the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is documented and 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 skill instructions and examples are presented entirely in Chinese, which effectively forces a specific language for users without any opt-in or explanation of a region-specific requirement. The policy requires either offering a language/locale choice or clearly documenting why the locale restriction is necessary.

    Content

    No source excerpt is available for this finding.

    Natural-Language Policy Violations

    Medium
    Category
    Not specified by scanner
    Confidence
    94% confidence
    Finding

    The document declares lang="zh-CN", and the visible UI text throughout the page is Chinese-only, which imposes a specific language/locale on users. Under the stated policy, locale constraints should either provide user opt-in/choice or be clearly documented as justified for a region-specific use case.

    Content

    No source excerpt is available for this finding.

    Intent-Code Divergence

    Medium
    Category
    Not specified by scanner
    Confidence
    97% confidence
    Finding

    The embedded page content states that on mobile the layout automatically switches to a vertical arrangement, but the actual CSS fixes both html/body and page containers to 1920x1280 and provides no media queries or alternate mobile layout rules. This is an active contradiction between the documented behavior presented to users and the implemented behavior.

    Content

    No source excerpt is available for this finding.

    Natural-Language Policy Violations

    Medium
    Category
    Not specified by scanner
    Confidence
    97% confidence
    Finding

    The generated document hard-codes lang="zh-CN", and the surrounding UI text is also fixed in Chinese. This imposes a specific language/locale on all users without any opt-in, selection mechanism, or documented region-specific requirement, which matches the language/locale policy violation criteria.

    Content

    No source excerpt is available for this finding.

    Natural-Language Policy Violations

    Medium
    Category
    Not specified by scanner
    Confidence
    95% confidence
    Finding

    The comments, status messages, and example invocation text throughout the script are written in Chinese, including user-facing installation and usage guidance. This creates a language/locale restriction for users without offering an alternative language or documenting that the skill is intended only for a Chinese-speaking audience.

    Content

    No source excerpt is available for this finding.

    Natural-Language Policy Violations

    Medium
    Category
    Not specified by scanner
    Confidence
    91% confidence
    Finding

    The package description is written entirely in Chinese, indicating a language-specific skill presentation with no opt-in or alternative locale described. Under the policy rules, forcing a specific language without user choice is a natural-language policy concern unless the locale restriction is explicitly justified.

    Content

    No source excerpt is available for this finding.

    Natural-Language Policy Violations

    Medium
    Category
    Not specified by scanner
    Confidence
    89% confidence
    Finding

    The manifest's permission and usage fields are presented only in Chinese, which can impose a single-language experience on users without an explicit opt-in mechanism. The file does not state that the skill is intentionally limited to a Chinese-speaking audience or region-specific workflow.

    Content

    No source excerpt is available for this finding.

    Natural-Language Policy Violations

    Medium
    Category
    Not specified by scanner
    Confidence
    94% confidence
    Finding

    This code presents its title, status messages, and errors in Chinese throughout the file, which forces a specific language/locale on users. The policy allows locale constraints only when users are given a choice or when the restriction is clearly documented and justified, neither of which is present here.

    Content

    No source excerpt is available for this finding.

    Missing User Warnings

    Low
    Category
    Not specified by scanner
    Confidence
    91% confidence
    Finding

    This markdown file documents a file-output behavior ('写入UTF-8编码的HTML文件') and earlier examples require an explicit output path, but it does not disclose overwrite risk or advise users to choose a safe destination. For markdown files, omissions around behaviors affecting user data or filesystem state should be flagged when no warning is present.

    Content

    No source excerpt is available for this finding.

    Missing User Warnings

    Low
    Category
    Not specified by scanner
    Confidence
    88% confidence
    Finding

    This markdown file documents a skill that generates and writes an HTML file to a user-specified path via outputFile, but it does not warn that running the skill will create or overwrite a local file. For markdown files, user-impacting file modification behavior should be disclosed so users understand the effect on their filesystem.

    Content

    No source excerpt is available for this finding.

    Natural-Language Policy Violations

    Low
    Category
    Not specified by scanner
    Confidence
    95% confidence
    Finding

    The document declares lang="zh-CN", and the visible interface text throughout the file is also fixed in Chinese. For an all-file-types policy check, this is a natural-language locale constraint with no visible opt-in, alternative language selection, or justification that the skill is intentionally region-specific.

    Content

    No source excerpt is available for this finding.

    Natural-Language Policy Violations

    Low
    Category
    Not specified by scanner
    Confidence
    88% confidence
    Finding

    The file's natural-language comments, log messages, errors, and CLI usage are presented exclusively in Chinese, with no indication that users can choose another language. This can violate a language/locale policy when a skill is expected to be locale-neutral or user-selectable.

    Content

    No source excerpt is available for this finding.