Back to skill

Security audit

Task Planner

Security checks for vulnerabilities and agentic risk

Overview

This task-planning skill is mostly coherent, but it instructs the agent to overwrite its packaged daily-plan schema with user plan data, which can corrupt the skill and unexpectedly persist private schedule details.

Review before installing. The skill does not appear to run code or contact external services, but it should be fixed to treat assets/daily_plan_schema.json as read-only and write generated plans only to a user-approved output file or current response. Users should also expect Chinese-language prompts and should avoid entering sensitive personal schedule details until the storage behavior is corrected.

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
SKILL.md:186
Finding

Runtime Plan Data Overwrites the JSON Schema Definition

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, line 186 and lines 279–280
Vulnerability Type: Destructive overwrite of a packaged configuration asset
Risk Level: Medium

Relevant instruction excerpts, translated into English:

markdown
After generation, save the result as a JSON file following the structure of `assets\daily_plan_schema.json` and overwrite the file.
markdown
### Output target
- `assets\daily_plan_schema.json` — The daily-plan JSON data-structure definition; overwrite this schema during output.

Technical Analysis

assets/daily_plan_schema.json is a JSON Schema definition used as a validation contract, not an appropriate destination for generated runtime data. The instructions explicitly direct the Agent to overwrite that packaged schema with a user's generated daily plan.

This conflates immutable application configuration with mutable user data. Once the workflow reaches daily-plan generation, a compliant Agent may destroy the original schema and replace it with an instance document. Subsequent executions can then lose schema validation, behave inconsistently, or fail when attempting to interpret plan data as a schema.

The behavior can also persist user-provided task names, schedules, dependencies, goals, and notes inside the Skill package. If that directory is backed up, shared, packaged, or committed to source control, the data could be retained or disclosed beyond the user's expected planning session.

Attack Path

  1. A user invokes the Skill and supplies task or scheduling information.
  2. The workflow proceeds through collection, decomposition, and daily-plan generation.
  3. At step 5, the Agent follows the overwrite instruction in SKILL.md.
  4. The Agent writes the generated plan into assets/daily_plan_schema.json.
  5. The original schema is destroyed and replaced by user-derived runtime data.
  6. Later runs may fail validation, consume malformed confi ...[truncated 1016 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove every instruction that directs the Agent to overwrite assets/daily_plan_schema.json.
  2. Treat files under assets/ as immutable Skill resources.
  3. Write generated plans to a distinct runtime destination, such as output/daily_plan.json, a per-user application-data directory, or a user-selected path.
  4. Validate generated plan data against assets/daily_plan_schema.json before saving it.
  5. Require explicit user approval before persisting plan data outside the current response.
  6. Avoid storing user-derived data in source-controlled or distributable project directories.
  7. Use unique or atomic output files to prevent partial writes and accidental replacement of existing data.
  8. Add a regression test confirming that daily-plan generation does not modify any file under assets/.
  9. Restore the instruction at lines 279–280 to describe the schema as a read-only validation input rather than an output target.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (12)

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

Manifest 在 L003 将本技能定位为“整理规划”,并明确排除“单条待办的增删改查”;但正文流程不仅在 L186 要求将每日计划“保存为 JSON 文件(覆盖写入)”,还在 L206-L225 定义了运行时对单个新增任务插入、替换、推迟等更新逻辑。这使技能实际行为超出纯规划输出,进入了对任务状态和计划数据的持续维护。

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The description includes broad activation examples such as “帮我理一下” and also says the skill may activate when the user “just throws out a bunch of tasks waiting to be organized.” These conditions are not narrowly scoped and could match ordinary conversation, increasing the chance of unintended invocation despite the brief inapplicability note.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The natural-language instructions and examples are entirely in Chinese, which implies a fixed language/locale for operation, but the file does not offer a language choice or state that the skill is intentionally region-specific. Under the policy, language constraints should be opt-in or clearly justified.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

L147-L149 要求加载重要-紧急矩阵并“对…所有周级任务进行重要性排序”,L197-L204 及 L216-L225 还要求在调整和新增任务时按重要性重排;但 L259 明确声明“ 不替用户判断重要性,通过提问引导用户自己决定”。这不是简单的信息缺失,而是文档内部对技能是否自行判定重要性的意图发生了直接冲突。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file title and instructions are written as a mandatory Chinese-language output template, and L03 explicitly directs daily plans to use this format. This imposes a specific language/locale without offering the user a choice or documenting that the skill is intentionally region-specific.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The file title and instruction explicitly require output in Chinese (e.g., '长期计划模板' and '输出长期计划时,使用以下格式'), which imposes a specific language on users. Under the policy, forcing a language without user opt-in or documented justification 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
94% confidence
Finding

The file title and instruction explicitly require weekly plans to be produced in Chinese, which is a language/locale constraint expressed in natural language. Under the policy rule, forcing a specific language without user opt-in is a violation unless the locale restriction is clearly 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
89% confidence
Finding

This markdown skill file presents all user-facing guidance and agent instructions exclusively in Chinese. Under the policy rule, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is clearly documented and 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
92% confidence
Finding

The entire prompt is written as mandatory Chinese instructions and includes fixed Chinese user-facing prompts such as the opening question, but nowhere offers a language choice or states that Chinese is optional. This can violate language/locale policy because it implicitly constrains the interaction to a specific language without user opt-in.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

Manifest 将该技能描述为把杂乱事项整理成“按优先级排序、贴合精力节奏的每日行动清单”,且不适用于单个复杂任务的执行方案。但该文档在收集阶段要求 Agent 主动生成“本周任务清单”、区分硬截止/弹性并按资料类型推断每条任务耗时,这已接近针对具体目标的详细拆解与执行规划,而不只是整理清单。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

This JSON schema uses Chinese natural-language descriptions and examples throughout, such as the top-level description and field descriptions, with no indication that language selection is optional. That can violate a language/locale policy when a skill implicitly forces one language without user opt-in or documented regional justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

This JSON schema uses Chinese-only natural-language descriptions such as "长期计划结构定义" and "计划开始日期,格式 YYYY-MM-DD" without indicating that the skill is region-specific or that users can choose a language. That can violate a language/locale policy when a skill implicitly forces a specific language on all users.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.