Back to skill

Security audit

prd-design

Security checks for vulnerabilities and agentic risk

Overview

The skill appears to be a legitimate Chinese-language product-design workflow, but it needs review because it saves potentially sensitive internal materials and generates prototypes that run unpinned third-party scripts.

Review before installing. Use this skill only with sanitized product materials, redact personal data, credentials, internal URLs, and confidential business data from screenshots or HTML prototypes, and avoid opening generated prototypes in a sensitive browser context unless CDN dependencies are pinned, integrity-protected, or vendored locally.

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
iteration/references/templates/prototype-template.html:11
Finding
Unpinned Third-Party JavaScript Dependencies Without Integrity Verification## Vulnerability Details **File Location**: `iteration/references/templates/prototype-template.html`, lines 11-14 **Vulnerability Type**: External dependency supply-chain exposure **Risk Level**: Medium ### Vulnerable Code ```html <script crossorigin src="https://unpkg.com/react@18/umd/react.production.min.js"></script> <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script> <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script> <script src="https://cdn.tailwindcss.com"></script> ``` ### Technical Analysis The prototype template loads and executes JavaScript from third-party CDNs whenever the generated HTML file is opened. The React resources use mutable major-version aliases, while the Babel and Tailwind resources do not specify versions. None of the resources includes a Subresource Integrity hash. Consequently, the effective executable code can change after the Skill package has been reviewed. A compromised CDN, compromised upstream package, malicious package release, DNS or network interception scenario, or unexpected change to a mutable alias could cause generated prototypes to execute unauthorized JavaScript. The `crossorigin` attribute does not verify resource integrity. Without an `integrity` attribute containing a trusted cryptographic hash, the browser has no mechanism to determine whether the downloaded script is the exact version approved by the project author. ### Attack Path 1. An attacker compromises one of the referenced CDN resources, an upstream package release, or the resolution of a mutable version alias. 2. The Skill generates a prototype based on this template. 3. A user opens the generated prototype while network access is available. 4. The browser retrieves the modified JavaScript from the external CDN. 5. The browser executes that code in the prototype page context without integrity verification. 6. The malicious script can inspect or modify prototype content, read brow ...[truncated 994 chars]
Remediation
## Remediation Suggestions 1. **Bundle dependencies locally** - Download reviewed releases of React, ReactDOM, Babel, and Tailwind during a controlled build process. - Store the required compiled assets within the project or package. - Serve generated prototypes without runtime dependency retrieval. 2. **Pin exact immutable versions** - Replace mutable aliases such as `react@18` with exact versions. - Specify exact versions for Babel and Tailwind. - Avoid CDN endpoints whose response can change without a corresponding URL change. 3. **Add Subresource Integrity** - Generate and verify SHA-384 or SHA-512 hashes for every external resource. - Add an `integrity` attribute and use `crossorigin="anonymous"`. - Update integrity hashes only after reviewing and approving dependency changes. 4. **Apply a restrictive Content Security Policy** - Limit `script-src` to explicitly approved locations and hashes. - Restrict outbound connections through `connect-src`. - Disable unnecessary object, frame, and plugin sources. 5. **Remove runtime compilers from distributed prototypes** - Precompile JSX and Tailwind CSS during generation. - Distribute static JavaScript and CSS rather than loading Babel and Tailwind's runtime CDN scripts. 6. **Establish dependency review controls** - Maintain a dependency inventory and approved-version lock file. - Monitor dependency advisories and verify checksums during updates. - Require security review before changing external assets.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (30)

Description-Behavior Mismatch

High
Confidence
99% confidence
Finding
The documented behavior is not limited to routing; it directs full artifact generation, workflow gating, file mutation, self-validation, and final delivery. This violates least privilege for a router skill and creates a broad attack surface where a supposedly simple dispatcher can perform high-impact actions across the workspace.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger phrases are broad enough to match many ordinary product-related requests, which can cause the router to invoke this skill in contexts it was not designed for. That increases the chance of misrouting, incorrect assumptions, and inappropriate downstream behavior, especially because the skill then auto-generates substantial outputs with limited confirmation points.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
All user-facing routing instructions and prompts are written in Chinese, including fixed response options such as '请回复 A、B、C 或 D', with no indication that other languages are supported or that the language constraint is intentional. This can constitute a language/locale policy violation because the skill implicitly enforces one language without user opt-in.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger list is very broad and includes common product-discussion terms such as PRD, 原型, 迭代, 加功能, and 改功能. In a router skill, this can cause unintended activation and misrouting of unrelated user requests, which may push the agent into an inappropriate workflow and degrade safety or correctness of downstream outputs.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The routing table relies on ambiguous keywords like 改造, 从零, 改一下, and 删除某功能, which are too generic to reliably distinguish between iteration, new workflow design, and productization. This creates a real risk of incorrect skill loading, causing the agent to collect the wrong inputs, lock into the wrong process, and produce misleading design artifacts.

Natural-Language Policy Violations

Medium
Confidence
91% confidence
Finding
The skill description specifies trigger phrases only in Chinese, while the document title and structure are otherwise mixed-language. This creates a de facto language constraint for invocation without stating that users may use another language or that the Chinese-only trigger set is intentional and limited to a specific locale.

Natural-Language Policy Violations

Medium
Confidence
89% confidence
Finding
This markdown file presents all instructions, examples, and user confirmation language exclusively in Chinese, including required confirmation phrases at L202. That imposes a specific language/locale on users without opt-in, which matches the policy category for language or locale violations.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
All prompts, examples, and user-facing instructions are written exclusively in Chinese, which effectively constrains the skill's language behavior. There is no indication that the user can choose another language, nor any documented reason that the skill must be Chinese-only.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill explicitly instructs collecting and saving uploaded screenshots of existing system interfaces into project files, but provides no warning that screenshots may contain sensitive business data, personal data, credentials, or internal URLs. In a product-design routing skill, this is dangerous because users are encouraged to upload real production/admin UI captures, increasing the likelihood of unintended retention and propagation of sensitive information.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
This section requests current-interface screenshots or HTML prototypes and instructs saving them for later analysis without disclosing privacy, confidentiality, or retention implications. HTML prototypes can also embed internal links, comments, test data, or proprietary logic, so silently storing them expands exposure of sensitive enterprise artifacts beyond what users may expect.

Natural-Language Policy Violations

Medium
Confidence
91% confidence
Finding
The title and all user-facing prescribed output text are written in Chinese, and the final required completion message is specified only in Chinese. This creates a language-policy risk because it implicitly forces a specific locale without any stated opt-in or alternative language path.

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
The HTML root sets `lang="zh-CN"`, and the visible UI text throughout the template is exclusively Chinese, which indicates the skill is fixed to a specific language/locale. The file does not offer any user opt-in or alternative locale handling, and no region-specific justification is documented in the template.

Description-Behavior Mismatch

Medium
Confidence
90% confidence
Finding
The template loads executable JavaScript and CSS from multiple external CDNs at runtime, which creates a supply-chain and integrity risk if those providers are compromised, content changes unexpectedly, or the environment forbids network access. In a skill described as a routing/template asset, this exceeds a minimal static-template trust boundary and can introduce unreviewed behavior into generated prototypes.

Context-Inappropriate Capability

Medium
Confidence
91% confidence
Finding
The file depends on third-party execution of React, ReactDOM, Babel, and Tailwind via CDN, meaning arbitrary upstream code executes in the consumer's browser. Because the skill's stated purpose is a product-design router/template, this execution capability is not clearly necessary and increases attack surface through remote code execution in the page context.

Natural-Language Policy Violations

Medium
Confidence
89% confidence
Finding
The skill’s natural-language description and operational instructions are entirely specified in Chinese, including trigger words, workflow, and final output expectations, with no indication that users may choose another language. Under the language/locale policy rule, forcing a specific language without opt-in is a policy concern unless the restriction is explicitly justified as region-specific.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The entire skill file is written as mandatory instructions in Chinese, including repeated '强制' requirements, but it does not state that the skill is region-specific or provide any opt-in for language/locale. Under the policy, forcing a specific language without user choice is a natural-language policy violation.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
The document is written entirely in Chinese and prescribes the checklist and output format in that language, with no indication that users may choose another language. Under the policy, forcing a specific language without user opt-in is a natural-language locale violation unless the regional constraint is explicitly justified.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The entire skill is authored in Chinese and assumes Chinese-language interaction without checking the user's language preference or obtaining opt-in. If routed to users who do not read Chinese, they may misunderstand prompts, confirmations, or file-writing behavior, undermining informed consent and increasing the chance of erroneous approvals.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The entire step definition is written in Chinese and explicitly instructs the model to output a checklist in that language/context, but there is no indication that this skill is region-specific or that users may opt into another language. This can violate language/locale policy when a skill imposes a specific language by default.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The step instructions are entirely specified in Chinese, including required output structure such as '格式严格遵守' and the Chinese user-story template. This effectively forces a specific language/locale for skill use, and the file does not provide any user opt-in, alternative language option, or documented region-specific justification.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
The file is entirely written as mandatory Chinese-only instructions and does not provide any mechanism to respect or negotiate the user's preferred language. In a router or reusable skill, this can cause unintended behavior, reduced usability, and prompt-level policy conflict when the user interacts in another language.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
The entire skill file is written in Chinese and provides no indication that users may choose another language or locale. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is clearly documented and justified.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
This markdown file contains user-facing instructions exclusively in Chinese, including headings, requirements, and examples. Under the policy, forcing a specific language without offering the user a language or locale choice is a natural-language policy violation.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The entire skill file is written as mandatory Chinese-language instructions, with no indication that the user can choose another language or that the skill is intentionally limited to a Chinese-speaking or region-specific context. This creates a natural-language policy concern because it imposes a specific language without opt-in.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The file explicitly instructs the agent to autonomously generate and save a tracking/telemetry plan without user confirmation, while providing no guardrails for privacy review, data minimization, consent, or compliance checks. In a product-design routing skill, this can normalize collection planning for user or business data without surfacing data-impact implications, increasing the risk of privacy-invasive analytics being silently propagated into downstream artifacts.

Static analysis

No suspicious patterns detected.