Back to skill

Security audit

项目流程管理器

Security checks for vulnerabilities and agentic risk

Overview

This is a local project-management skill, but unsafe path handling can let project IDs read or overwrite JSON and generated files outside the intended project folders.

Review before installing. Use this only in a trusted workspace, avoid project IDs containing slashes or '..', and do not open generated HTML boards from project data supplied by untrusted people. Treat reports, boards, project JSON, and email drafts as potentially sensitive local business 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 (3)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/generate_board.py:153
Finding

Stored HTML Injection in Generated Project Boards

Content
View full analysis
{project['name']} - 项目看板 ...

📊 {project['name']}

...
{t['name']}
负责人: {t.get('assignee', '未分配')} | 截止: {t.get('endDate', '未设置')}
...
{t['name']}
负责人: {t.get('assignee', '未分配')}
...
{t['name']}
负责人: {t.get('assignee', '未分配')}
阻塞: {', '.join(t.get('blockers', []))}
``` ### Technical Analysis The HTML board generator interpolates project data directly into an HTML document without context-appropriate escaping. Untrusted fields include the project name, task name, assignee, end date, blockers, and progress value. Several of these fields can be supplied through normal command-line operations and are persisted in project JSON files. An attacker able to influence project data can inject arbitrary HTML elements or event handlers. The payload becomes persistent because it is stored in the project data and reproduced whenever an HTML board is generated. For example, a task name containing the following value would be inserted directly into the document: ```html
Remediation
View remediation
``` 5. Validate the complete loaded project schema before rendering it, even when the JSON file is expected to have been created by another project script. ]]>

T09 · Insecure Skill Coding Practices

Error
Location
scripts/generate_board.py:16
Finding

Project Identifier Path Traversal Allows Access Outside the Projects Directory

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/generate_board.py:131
Finding

Stored Project ID Controls Generated Board Output Path

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (18)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

声明描述的是一个功能较完整的项目管理系统,覆盖项目全生命周期中的多项核心能力。但提供的代码片段只负责初始化项目文件并预填充模板化的部门和里程碑数据,属于项目管理工具中的一个子功能。虽然数据结构中预留了 tasks、kpis、reports 等字段,与声明场景有一定相关性,但并没有实现这些能力本身,也没有邮件、报表、看板或预警等行为。因此,代码实际行为与声明用途相比明显更窄,构成描述与行为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Yes, this is a mismatch. The description claims a substantial project management capability set, but the code chunk does not implement any of those behaviors. It is merely a stub/example script with a print statement and TODO comments. There are no undeclared dangerous capabilities present; the mismatch is that the declared functionality is not actually implemented in the provided code.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The declared description presents a comprehensive project management tool with multiple operational capabilities such as milestone planning, cross-department coordination, KPI tracking, reporting, email reminders, and dashboard creation. The supplied code only lists locally stored project records from JSON files, optionally filters them by status, calculates a simple average progress from tasks, and prints the result. This is not merely a partial implementation detail; the actual behavior is materially narrower and does not substantiate the broad declared purpose. Therefore, the description does not accurately represent what this code chunk actually does.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

声明描述的是一个功能完整的项目管理工具,涵盖管理、跟踪、报告、提醒、看板等多项核心能力;但提供的代码片段只是一个只读查看脚本,读取本地JSON文件并输出摘要信息。虽然它确实涉及项目详情、部门、里程碑、任务和KPI的展示,与声明中的部分领域对象相关,但其实际行为远不足以支撑“全流程项目管理工具”的主要用途。该代码没有生成报告、发送邮件、创建看板、管理排期、更新数据或执行预警,因此描述明显夸大了该代码块的能力,构成实质性不匹配。

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill advertises and documents file read/write behavior via local project JSON files, report outputs, boards, and backups, but it does not declare any explicit tool scope such as allowed-tools or permissions. Missing scope declarations weaken least-privilege controls and make it harder for users or hosting platforms to understand and constrain filesystem access before use.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill describes sending reminder emails, which may transmit project names, deadlines, assignees, blockers, or other internal business data through SMTP or external mail infrastructure, yet it provides no privacy, classification, or data-handling warning. In a project-management context, this can expose sensitive operational information to unintended recipients or third-party providers if misconfigured or used with confidential projects.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill documents persistent writes of project data, reports, boards, and exports to local files without warning about retention, overwrite, path safety, or privacy implications. In this context, project records may contain personnel assignments, schedules, KPIs, and internal status notes, so silent persistence increases the risk of unauthorized local disclosure, accidental commit to source control, or destructive overwrites.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The docstrings, CLI description/help text, warnings, and success messages are all hard-coded in Chinese throughout the script. This imposes a specific language on users without opt-in or any documented locale constraint, which matches the natural-language policy violation criteria.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The module docstring and CLI usage text are written only in Chinese, and the interactive prompts and status output later in the file also assume Chinese-speaking users. This is a natural-language policy concern because the script imposes a specific language without any user opt-in or documented regional justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

This code file includes user-facing documentation and output strings only in Chinese, including the module docstring and CLI help context. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is explicitly justified, which is not present here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The file’s user-facing documentation and descriptions are entirely in Chinese, including the purpose and usage text. This imposes a specific language/locale on users without offering a choice or documenting that the skill is intended only for a Chinese-speaking or region-specific context.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The module docstring says '发送任务提醒邮件' and provides usage implying email sending, while the implementation only writes email content to an emails/*.txt file and prints instructions to send it manually. This is an intent-level contradiction because the documented primary action is sending, but the actual behavior is draft generation only.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This code file contains natural-language instructions and output entirely in Chinese, beginning with the module docstring and continuing throughout CLI help and status messages. Under the policy rule, forcing a specific language without user opt-in is a locale/language policy violation unless the constraint is explicitly documented and justified, which it is not here.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The function name send_reminder and docstring '生成提醒邮件内容' are paired with a CLI parser description '发送任务提醒', suggesting an email-sending operation. However, the code's side effect is limited to creating a local text file in the emails directory, as confirmed by the '保存邮件草稿' comment and manual-send instructions.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The module docstring, argparse help text, and printed status messages are all written exclusively in Chinese, which imposes a specific language on users. There is no opt-in, alternative locale, or documented reason that this skill is intentionally region-specific, so this is a natural-language policy violation 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
96% confidence
Finding

The file’s docstrings and all user-facing output strings are hard-coded in Chinese, which imposes a specific language on users without any opt-in or selection mechanism. This matches the language/locale policy violation category because the skill does not offer an alternative language or document a justified locale restriction.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file's user-facing text, help output, and allowed status values are all hard-coded in Chinese, including the docstring, argparse descriptions, and printed messages. For a general-purpose CLI skill, this imposes a specific language/locale without user opt-in, which matches the natural-language policy violation criteria.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

This is a natural-language policy issue because the file hardcodes its usage and descriptive strings in a single language. Users who do not read Chinese are not given an opt-in, fallback, or explanation that the skill is intended only for a Chinese-speaking context.

Content

No source excerpt is available for this finding.