Back to skill

Security audit

把播客变成可读文章。支持输入音频文字稿、节目链接或摘要笔记,自动提炼核心观点、精选金句,生成适配微信公众号、知乎、企业内刊等多平台的图文内容。提供深度解析、精华摘要、对话体重构、社交媒体切片四种风格,开箱即用。

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent podcast-to-article skill, but its HTML webpage mode can carry unsafe content from untrusted podcast material into a browser page.

Use the skill for Chinese podcast article drafting, but treat webpage output as review-required: escape plain-text fields, sanitize BODY and QUOTES, and avoid opening or publishing generated HTML from untrusted podcast sources until it has been checked for scripts, event handlers, dangerous links, iframes, forms, SVG/MathML, and other active content.

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 (1)

T09 · Insecure Skill Coding Practices

Warning
Location
assets/template.html:168
Finding

Unsafe Interpolation of Untrusted Podcast Content into Generated HTML

Content
View full analysis
` for paragraphs, `

` for headings, and `
` for quotations | | `{{QUOTES}}` | Quote list, with one `
  • ` element per quote | | `{{DATE}}` | Article generation date in `YYYY-MM-DD` format | ``` The corresponding placeholders in `assets/template.html:168-203` are inserted directly into executable HTML contexts: ```html {{TITLE}}
    🎙 {{PODCAST_NAME}} · {{EPISODE}}

    {{TITLE}}

    {{SUBTITLE}}

    📅 {{DATE}}
    {{LEAD}}
    {{BODY}}

    ✦ 值得记住的话

      {{QUOTES}}
    🎙 来源:{{PODCAST_NAME}} {{EPISODE}} 整理于 {{DATE}}
    ``` `SKILL.md:73-74` activates this workflow: ```markdown When `webpage` is selected, read `assets/template.html`, fill the article content into the template, output a complete HTML file, and save it as `article.htm ...[truncated 3135 chars]
  • Remediation
    View remediation
    `, `"`, and `'`. - Do not rely on the language model to avoid producing unsafe markup. 2. **Sanitize fields that intentionally contain HTML** - Process `BODY` and `QUOTES` with a mature allowlist-based HTML sanitizer before interpolation. - Permit only the structural elements required by the specification, such as `p`, `h2`, `blockquote`, `cite`, `ul`, `ol`, `li`, `strong`, and `em`. - Remove all event-handler attributes, including attributes beginning with `on`. - Reject `script`, `style`, `iframe`, `object`, `embed`, `form`, `input`, `button`, `meta`, `base`, SVG, and MathML unless a documented requirement and safe sanitizer configuration exist. - Reject dangerous URL schemes such as `javascript:` and unsafe `data:` content. 3. **Generate HTML through a safe rendering layer** - Prefer a template engine that escapes values by default. - Require explicit, reviewed handling only for sanitized HTML fragments. - Avoid raw string replacement as the security boundary. 4. **Add browser-level defense in depth** - Add a restrictive Content Security Policy, for example: ```html ``` - If images are unnecessary, use `img-src 'none'` instead. - Keep external scripts, frames, forms, and network resources disabled. 5. **Clarify the Skill instructions** - State explicitly that podcast transcripts, metadata, summaries, and fetched webpage content are untrusted. - Require escaping and sanitization before saving `article.html`. - Prohibit copying source-provided raw HTML directly into the template. 6. **Add adversarial tests** - Test ...[truncated 293 chars]
    Vulnerability Patterns
    • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
    • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
    • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
    • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
    • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
    Findings (6)

    Vague Triggers

    Medium
    Category
    Not specified by scanner
    Confidence
    90% confidence
    Finding

    Line L07 says the skill should trigger whenever the user provides podcast-related materials or asks to secondarily create readable articles from podcast content. This activation condition is broad and lacks boundaries or exclusion examples, making it unclear when this skill should activate versus other summarization or writing skills.

    Content

    No source excerpt is available for this finding.

    Missing User Warnings

    Medium
    Category
    Not specified by scanner
    Confidence
    95% confidence
    Finding

    The skill explicitly instructs the agent to create a dated subfolder and write output files without requiring user confirmation or warning about filesystem side effects. In agent environments with file-write permissions, this can cause unintended persistence of sensitive podcast transcripts, notes, or derived content, and may violate user expectations about non-mutating assistance.

    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 root element hard-codes lang="zh-CN", which makes the template explicitly target Simplified Chinese regardless of user preference. This is a natural-language/locale policy concern because the file does not indicate any user choice, opt-in, or region-specific justification for enforcing that locale.

    Content

    No source excerpt is available for this finding.

    Natural-Language Policy Violations

    Medium
    Category
    Not specified by scanner
    Confidence
    93% confidence
    Finding

    Lines L030-L041 prescribe output formatting entirely through Chinese punctuation and examples, and require a fixed Chinese interaction prompt, which effectively forces a specific language/locale. The file does not offer user opt-in, alternative locales, or a documented justification that this restriction is required for a region-specific compliance purpose.

    Content

    No source excerpt is available for this finding.

    Natural-Language Policy Violations

    Medium
    Category
    Not specified by scanner
    Confidence
    92% confidence
    Finding

    The entire skill is written as a prescriptive Chinese-only rule set for quote extraction, with no indication that language choice is optional or that the skill is limited to Chinese-language content. Under the policy, forcing a specific language or locale without user opt-in is a natural-language policy violation.

    Content

    No source excerpt is available for this finding.

    Natural-Language Policy Violations

    Medium
    Category
    Not specified by scanner
    Confidence
    93% confidence
    Finding

    The title '输出风格模板' and the entire document prescribe output templates exclusively in Chinese, which can function as a language constraint for the skill's responses. The policy forbids forcing a specific language unless the skill offers user choice or clearly documents a justified locale restriction, neither of which appears here.

    Content

    No source excerpt is available for this finding.

    Static analysis

    No suspicious patterns detected.