Back to skill

Security audit

Software Manager Skill

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a product-management assistant, but its export and prototype features introduce under-disclosed local execution, browser-sandbox, and remote-script risks.

Review this skill before installing. Use it in a disposable or low-privilege environment for DOCX export, avoid rendering Mermaid diagrams from untrusted sources, do not put real credentials or confidential data into generated H5 prototypes, and pin/install dependencies locally rather than globally where possible.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (3)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/mermaid_render_multi.js:287
Finding

Untrusted Mermaid Content Is Rendered in an Unsandboxed Browser with Permissive Security Settings

Content
View full analysis
console.log('SUCCESS')) .catch(err => { console.error('ERROR:', err.message); process.exit(1); }); ``` ### Technical Analysis The renderer accepts Mermaid content from an input file and processes it in a headless browser. The browser is launched with both its normal sandbox and setuid sandbox disabled. Chromium-based browsers also receive `--allow-file-access-from-files`, while Mermaid is initialized with `securityLevel: 'loose'`. Disabling the browser sandbox is not necessary for the declared diagram-rendering functionality in a normally configured environment. It removes a major containment boundary around a complex parser and browser engine. The `loose` Mermaid setting and broad file-origin access further weaken defense in depth when processing diagrams that may originate from an untrusted PRD or `.mmd` file. The code does not itself contain a demonstrated browser exploit. Exploitation would require malicious Mermaid content capable of abusing an applicable Mermaid, SVG, or browser vulnerability. Nevertheless, the configuration materially increases the consequences of such a vulnerability. ### Attack Path 1. An attacker provides a crafted Markdown PRD containing a malicious Mermaid block, or directly provides a crafted `.mmd` file. 2. The user invokes the DOCX export workflow or the M ...[truncated 1234 chars]
Remediation
View remediation

T03 · Remote Payload Retrieval and Execution

Warning
Location
SKILL.md:393
Finding

Generated H5 Prototypes Retrieve and Execute Mutable Third-Party JavaScript

Content
View full analysis
Page title /* Page-specific styles */ ``` The accompanying instruction explicitly requires the remote source: ```text Directly use the CDN:
Remediation
View remediation
` element from generated prototypes. - Compile a reviewed, version-pinned Tailwind stylesheet during generation and embed the resulting CSS directly in the HTML. - If inline CSS size is undesirable, generate a local CSS file and clearly describe the prototype as a local multi-file artifact rather than claiming that it is a zero-dependency single file. - If a remote resource is unavoidable, pin an immutable version and use Subresource Integrity and a restrictive Content Security Policy where supported. - Clearly disclose all network dependencies and the metadata sent when a prototype is opened. - Do not store real credentials, authentication tokens, personal information, or confidential product data in prototype `localStorage`. - Add a Content Security Policy that denies unexpected script and network sources. - Make the Skill's dependency statements consistent so users can accurately assess whether an exported prototype is safe to open offline. ]]>

T08 · Insecure Dependencies

Warning
Location
SKILL.md:33
Finding

Unpinned Global Runtime Dependencies Create Supply-Chain and Reproducibility Risk

Content
View full analysis
Remediation
View remediation
` and `python-docx==`. - Include a project-local `package.json` and lockfile and use deterministic installation such as `npm ci`. - Install npm dependencies locally instead of globally. - Use a dedicated Python virtual environment with a fully pinned requirements file. - Record and verify package integrity hashes. For Python, use hash-checked requirements where practical. - Review and pin transitive dependencies and use automated dependency vulnerability scanning. - Document the browser and Node.js versions tested with the renderer. - Avoid elevated installation commands and explicitly warn users not to install the dependencies with administrator or root privileges. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (46)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared purpose is product-management assistance, but the skill also instructs the agent to scan local browser locations, inspect Windows/WSL-specific paths, search local/global Node modules, write temp files, and launch a headless browser. That mismatch hides materially more invasive behavior than users would expect, increasing the risk of unauthorized local reconnaissance and execution.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 362)May include surrounding context.

md
- 渲染脚本:`scripts/prd_export.py`(调用 `scripts/mermaid_render_multi.js`)

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 · SKILL.md (reported line 410)May include surrounding context.

md
<meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  <title>页面标题</title>
  <!-- Tailwind CSS CDN,直接引用,无需本地文件 -->
  <script src="https://cdn.tailwindcss.com"></script>
  <style>
    /* 页面特定样式 */

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 · SKILL.md (reported line 410)May include surrounding context.

md
<meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  <title>页面标题</title>
  <!-- Tailwind CSS CDN,直接引用,无需本地文件 -->
  <script src="https://cdn.tailwindcss.com"></script>
  <style>
    /* 页面特定样式 */

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 · SKILL.md (reported line 744)May include surrounding context.

常用图标以内联 SVG 方式嵌入,避免外部依赖:

html
<!-- 返回箭头(推荐尺寸 w-5 h-5)-->
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"/></svg>

<!-- 主页图标 -->

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 · SKILL.md (reported line 744)May include surrounding context.

常用图标以内联 SVG 方式嵌入,避免外部依赖:

html
<!-- 返回箭头(推荐尺寸 w-5 h-5)-->
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"/></svg>

<!-- 主页图标 -->

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 · SKILL.md (reported line 822)May include surrounding context.

md
<!-- 页面容器 -->
  <div id="pages" class="pb-20">

    <!-- 首页:账单列表 -->
    <section id="page-home" class="page active">
      <div class="p-4">
        <!-- 本月总支出卡片 -->

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 · SKILL.md (reported line 822)May include surrounding context.

md
<!-- 页面容器 -->
  <div id="pages" class="pb-20">

    <!-- 首页:账单列表 -->
    <section id="page-home" class="page active">
      <div class="p-4">
        <!-- 本月总支出卡片 -->

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 · SKILL.md (reported line 945)May include surrounding context.

md
</div>
    </section>

    <!-- 我的 -->
    <section id="page-profile" class="page hidden">
      <div class="p-4">
        <div class="bg-white rounded-2xl p-5 shadow mb-4">

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The README states that the skill will perform network search and read local reference documents, but it does not present a clear user-facing consent or privacy notice before those actions occur. In this context, the omission is significant because product discussions often include confidential plans, and automatic external queries or local document access could disclose sensitive information or process data beyond the user's expectations.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The trigger keywords are broad enough to activate on ordinary product or project-management discussions, which can cause the agent to invoke this skill unexpectedly. In a skill that performs proactive questioning, network search, local RAG access, file generation, and optional file writes, over-triggering expands the chance of unnecessary data access or unintended actions without clear user intent.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill declares shell, environment, and file-access capabilities through its documented behavior, but it does not bound them with an explicit permissions or allowed-tools policy. That makes it easier for the agent to overreach into local files, environment inspection, or command execution beyond what a user would reasonably expect from a product-management skill.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The description and interaction templates are entirely in Chinese and the HTML examples explicitly set lang="zh-CN", indicating the skill is designed to respond in Chinese by default. The file does not tell the agent to ask for or respect the user’s preferred language, nor does it document a justified region-specific limitation.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest trigger list includes generic terms such as “数据分析”, “Mermaid”, “流程图”, and “架构图”, which can appear in many ordinary conversations outside the intended software product-manager context. Because the file does not provide exclusion conditions or negative examples, the activation scope is broader than necessary and may match unrelated user requests.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

文档在L0391-L0394明确宣称生成的HTML“零外部依赖”,并称Tailwind CSS应预下载后内联;但紧接着L0397-L0428又指导直接使用 https://cdn.tailwindcss.com,这与前述意图直接冲突。后文L0729、L0781、L1120再次宣称已内联、无CDN依赖,使该矛盾属于主动性文档与实际实现方式不一致。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The example HTML explicitly uses <html lang="zh-CN">, and similar locale-specific markup appears again later in the template. This directs generated artifacts toward a fixed Chinese locale regardless of the user’s preferences, which is a natural-language locale policy issue under the stated rules.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

L0645明确写明页面跳转应通过 showPage() 在同一HTML内完成,不使用 window.location.href、不依赖多文件或服务器;但L0719-L0723的“列表项点击”示例却执行 window.location.href = detail.html?id=${id}``。这不是单纯省略细节,而是对同文件原型意图的直接反向实现。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This markdown file uses Chinese throughout and does not indicate that the user can choose another language or that the skill is intentionally limited to a Chinese-speaking audience. The policy requires flagging language or locale constraints when they are imposed without user opt-in or clear justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The document title and the entire template content are written in Chinese, and the file does not indicate that Chinese is optional or that the template is intended only for a China-specific or Chinese-language context. Under the language/locale policy rule, forcing a specific language without opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The manifest describes PM support plus Mermaid/PRD/H5 generation, but this implementation performs extensive host reconnaissance: querying the Windows registry for installed browsers, running which, npm root -g, and scanning multiple user/global installation paths. While rendering needs a browser/runtime, this level of host inspection goes beyond the manifest's user-facing purpose and introduces extra capability unrelated to product-consulting intent.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dangerous_exec

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/mermaid_render_multi.js:29