T09 · Insecure Skill Coding Practices
- Location
templates/update.sh:16- Finding
Arbitrary JavaScript Execution Through Unsafely Interpolated Changelog Message
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent PRD-generation workflow, but it includes unsafe local automation that can execute injected JavaScript and generated reports that load unpinned remote code.
Review before installing. Use this skill in a dedicated project directory, prefer the JavaScript updater over update.sh, do not pass untrusted changelog text to the shell updater, and pin or vendor dependencies and report assets before relying on generated outputs in a sensitive environment.
templates/update.sh:16Arbitrary JavaScript Execution Through Unsafely Interpolated Changelog Message
scripts/score.js:449Unpinned Remote JavaScript Executes When Generated Score Reports Are Opened
package.json:29Dependency Installation Is Not Reproducible Due to Missing Lockfile and Broad Version Range
A skill that updates version.json, changelogs, builds outputs, and archives artifacts while posing as a PRD co-author creates a significant consent and transparency problem. Users may unintentionally permit repository writes and artifact generation because the declared purpose sounds content-focused rather than operational.
A skill that updates version.json, changelogs, builds outputs, and archives artifacts while posing as a PRD co-author creates a significant consent and transparency problem. Users may unintentionally permit repository writes and artifact generation because the declared purpose sounds content-focused rather than operational.
A skill that updates version.json, changelogs, builds outputs, and archives artifacts while posing as a PRD co-author creates a significant consent and transparency problem. Users may unintentionally permit repository writes and artifact generation because the declared purpose sounds content-focused rather than operational.
A skill that updates version.json, changelogs, builds outputs, and archives artifacts while posing as a PRD co-author creates a significant consent and transparency problem. Users may unintentionally permit repository writes and artifact generation because the declared purpose sounds content-focused rather than operational.
A skill that updates version.json, changelogs, builds outputs, and archives artifacts while posing as a PRD co-author creates a significant consent and transparency problem. Users may unintentionally permit repository writes and artifact generation because the declared purpose sounds content-focused rather than operational.
A skill that updates version.json, changelogs, builds outputs, and archives artifacts while posing as a PRD co-author creates a significant consent and transparency problem. Users may unintentionally permit repository writes and artifact generation because the declared purpose sounds content-focused rather than operational.
A skill that updates version.json, changelogs, builds outputs, and archives artifacts while posing as a PRD co-author creates a significant consent and transparency problem. Users may unintentionally permit repository writes and artifact generation because the declared purpose sounds content-focused rather than operational.
A skill that updates version.json, changelogs, builds outputs, and archives artifacts while posing as a PRD co-author creates a significant consent and transparency problem. Users may unintentionally permit repository writes and artifact generation because the declared purpose sounds content-focused rather than operational.
A skill that updates version.json, changelogs, builds outputs, and archives artifacts while posing as a PRD co-author creates a significant consent and transparency problem. Users may unintentionally permit repository writes and artifact generation because the declared purpose sounds content-focused rather than operational.
A skill that updates version.json, changelogs, builds outputs, and archives artifacts while posing as a PRD co-author creates a significant consent and transparency problem. Users may unintentionally permit repository writes and artifact generation because the declared purpose sounds content-focused rather than operational.
A skill that updates version.json, changelogs, builds outputs, and archives artifacts while posing as a PRD co-author creates a significant consent and transparency problem. Users may unintentionally permit repository writes and artifact generation because the declared purpose sounds content-focused rather than operational.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
<h4>10.4.1 认证授权</h4>
<ul>
<li><strong>JWT Token:</strong>包含用户ID、角色、过期时间</li>
<li><strong>Token有效期:</strong>Access Token 7天,Refresh Token 30天</li>
<li><strong>权限控制:</strong>RBAC模型,接口级别鉴权</li>
</ul>
标题及全文均以中文撰写,且未说明这是仅面向中文用户的区域性技能,也未提供用户可选择其他语言的说明。根据语言/地区策略,未经用户选择而默认强制特定语言属于自然语言层面的政策风险。
该技能文件标题和正文均以中文规定工作流与产出形式,如“全栈PRD工作流设计”“目标:输出一份...完整PRD”,体现出默认强制使用特定语言/locale。根据规则,若未明确提供用户语言选择或说明该语言限制的合理地域性原因,可构成语言/locale policy violation。
The title and primary usage instructions are written as Chinese-only guidance, and the skill instructs users to interact in Chinese without mentioning any alternative language option. This can violate language/locale policy requirements when a skill implicitly mandates a specific language rather than offering user choice.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
The manifest positions this skill as a collaborative PRD-writing workflow triggered by requests like '帮我写PRD', suggesting an assistant-led documentation process. The README shows the skill additionally initializes projects, generates HTML/PDF artifacts, and manages iterative version history and rollback, which is substantially broader operational behavior than the manifest description states.
The documented features include interactive iteration, automatic changelog updates, version diffing, and rollback. These are product/document lifecycle management capabilities rather than merely producing a complete PRD for stakeholders, so the implementation scope described here exceeds the manifest's declared intent.
The skill advertises and references shell-capable scripts and build tooling but declares no explicit tool scope or permissions boundary. In an agent environment, this increases the chance that filesystem or shell actions are invoked without clear least-privilege constraints, especially since the skill structure includes build, validation, and automation scripts.
The entire skill description and examples are presented only in Chinese, and there is no indication that the user can choose another language. This creates a language/locale constraint without explicit opt-in or documented justification.
Overly broad trigger phrases increase the chance of accidental invocation in ordinary conversation, which is more concerning here because the skill appears tied to local tooling and file operations. Unintended activation can cause the system to route benign user requests into a higher-privilege or misleading workflow.
The specification includes voice-to-text for transaction notes but does not mention any privacy notice, consent flow, retention policy, or whether audio/text is sent to a third-party service. Because bookkeeping notes may contain sensitive financial or personal information, users could unknowingly disclose data off-device or have it retained longer than expected.
The requirement to 'automatically sync when back online' lacks any user notification, conflict handling, or visibility into what locally stored financial records are being transmitted. In a ledger app, silent background synchronization can expose sensitive transaction data unexpectedly and may also create integrity issues such as duplicate or unintended uploads.
This markdown file presents all headings, labels, and descriptions exclusively in Chinese, which can force a specific language on users without opt-in. The policy explicitly flags language or locale constraints when the skill does not offer user choice or justify the restriction as region-specific.
Detected: suspicious.dangerous_exec