Back to skill

Security audit

pm-requirement-flow

Security checks for vulnerabilities and agentic risk

Overview

The skill describes a coherent PM workflow, but it directs users to launch a background coding agent with approval checks disabled and unclear containment.

Install only if you understand and trust claude-code-dispatch, review the exact dispatch.sh before each use, avoid bypassPermissions unless running in an isolated disposable project environment, and do not run the nohup background command with untrusted requirement text or paths.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
SKILL.md:77
Finding

Shell Command Injection Through User-Controlled Dispatch Parameters

Content
View full analysis
" \ -n "功能名" \ --workdir /项目路径 \ --permission-mode bypassPermissions \ > /tmp/dispatch.log 2>&1 & ``` ### Technical Analysis The documented command places requirement content, a feature name, and a project path into a shell command. These values are derived from user-supplied requirements or dispatch-time input. Double quotes do not neutralize every shell construct. In particular, command substitutions such as `$(command)` and backtick substitutions remain active inside double-quoted strings if untrusted content is directly incorporated into a command that is subsequently parsed by a shell. A value containing a closing quote can also introduce additional shell syntax when command strings are assembled through textual substitution. The `--workdir` placeholder is not quoted at all, increasing exposure to whitespace splitting, glob expansion, and shell metacharacters. The documentation does not require argument-array execution, strict validation, or a non-shell data channel for the specification. ### Attack Path 1. An attacker supplies requirement text containing shell syntax, such as command substitution or a quote-breaking payload. 2. The workflow converts the attacker's requirements into the SPEC. 3. The SPEC or feature name is substituted into the documented shell command. 4. A shell parses the constructed command. 5. The injected expression executes before or alongside `dispatch.sh`. 6. The resulting process runs with the permissions of the user or agent executing the workflow. ### Impact Assessment Successful exploitation can execute arbitrary local commands with the privileges of the workflow process. Depending on those privileges, an attacker may read or modify access ...[truncated 308 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
SKILL.md:77
Finding

Delegated Agent Runs With Permission Checks Disabled

Content
View full analysis
" \ -n "功能名" \ --workdir /项目路径 \ --permission-mode bypassPermissions \ > /tmp/dispatch.log 2>&1 & ``` ```text | `--permission-mode bypassPermissions` | Claude Code native parameter that skips interactive confirmation. Without this parameter, Claude Code may stop when authorization is required. | ``` ```text - `--permission-mode bypassPermissions` is a built-in Claude Code feature intended for CI/CD scenarios. - The work directory is specified by the operator, and Claude Code only operates in the project directory. ``` ### Technical Analysis The workflow explicitly instructs the delegated coding agent to use `bypassPermissions`, disabling interactive authorization checks for operations that would otherwise require approval. The documentation claims that Claude Code only operates within the selected project directory, but it does not establish a sandbox, operating-system access-control boundary, container, filesystem allowlist, or command allowlist that enforces this restriction. A working-directory argument determines the initial directory; it does not inherently prevent access to absolute paths, parent directories, user files, network resources, or executable tools. This setting substantially increases the consequences of malicious requirement content, prompt injection in project files, incorrect model behavior, or compromise of the external dispatcher. ### Attack Path 1. An attacker places adversarial instructions in the requirement text or in files available to the delegated agent. 2. The workflow starts `claude-code-dispatch` with `--permission-mode bypassPermissions`. 3. Claude Code processes the attacker-controlled content as part of the delegat ...[truncated 847 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:11
Finding

Unpinned Executable Third-Party Dependency

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (7)

Vague Triggers

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The trigger phrases are broad everyday terms like '需求' and '帮我做XX', which can cause the skill to activate in many normal conversations that are not intended to invoke this workflow. Because the skill includes guidance to dispatch code generation/execution via an external script, accidental activation increases the risk of unintended tool use and privilege-bearing actions.

Content

No source excerpt is available for this finding.

Self-Modification

High
Category
Rogue Agent
Confidence
85% confidence
Finding

Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Content

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

md
---

*Yi 自用流程,感觉有用就拿去。使用前请先了解依赖的 claude-code-dispatch skill。*

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The manifest description and the entire operational guidance are written as Chinese-only instructions, with no indication that users may choose another language or locale. This creates a natural-language policy concern because it implicitly constrains interaction language without documenting user choice or a justified locale limitation.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill explicitly instructs launching a local shell script in the background with nohup and --permission-mode bypassPermissions, which enables unattended code execution without interactive approval. In a PM workflow skill, this materially expands from documentation into operational execution guidance, and if the downstream script or provided SPEC is unsafe, it can trigger broad unauthorized actions.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
95% confidence
Finding

Using nohup and backgrounding the dispatch process creates session persistence beyond the current interactive context, allowing the launched process to continue operating after the initiating session ends. In combination with delegated code execution and permission bypass, this reduces oversight and makes it harder for a user to observe, interrupt, or contain unintended actions.

Content

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

用 claude-code-dispatch 派给 Claude Code 开发:

bash
nohup bash ~/.openclaw/workspace/skills/claude-code-dispatch/scripts/dispatch.sh \
  -p "需求:<SPEC内容>" \
  -n "功能名" \
  --workdir /项目路径 \

Session Persistence

Medium
Category
Rogue Agent
Confidence
87% confidence
Finding

This second finding refers to the documentation line explaining nohup ... &, not a separate execution primitive, but it still reinforces intentional detached execution semantics. The risk is real but derivative of the primary background-launch instruction: it normalizes persistence and non-blocking operation for a potentially powerful delegated process.

Content

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

md
|------|------|
| `--permission-mode bypassPermissions` | Claude Code 原生参数,允许跳过交互确认。没有这个参数,Claude Code 在需要授权时会卡住。 |
| `--workdir` | 项目路径,由用户在派发时指定,不是任意路径 |
| `nohup ... &` | 后台运行,实现异步不阻塞 |
| `> /tmp/dispatch.log` | 日志写到本地 tmp 目录,不上传 |

**安全说明:**

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The safety note asserts that Claude Code only operates inside the specified project directory, but the shown invocation does not itself enforce confinement. This can mislead users into trusting a boundary that may not exist, increasing the chance they run the workflow against an unsafe script or tool that accesses files or resources outside the intended directory.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.