Back to skill

Security audit

阿里云云效mcp对接

Security checks for vulnerabilities and agentic risk

Overview

This Yunxiao skill is purpose-aligned but should be reviewed because it runs an unpinned npm MCP server with broad environment access and includes an immediate comment-posting action.

Review before installing. Use a least-privileged Yunxiao token, avoid running this where unrelated secrets are present in environment variables, and require explicit user confirmation before create_comment. Prefer pinning the MCP server dependency and passing only the required environment variables.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Error
Location
scripts/yunxiao-mcp.cjs:67
Finding
Unpinned Runtime Dependency Executes with Access to the Full Parent Environment## Vulnerability Details **File Location**: `scripts/yunxiao-mcp.cjs:67-70` **Vulnerability Type**: Unpinned runtime dependency execution and excessive environment inheritance **Risk Level**: High ### Vulnerable Code ```js const server = spawn('npx', ['-y', 'alibabacloud-devops-mcp-server'], { env: { ...process.env, YUNXIAO_ACCESS_TOKEN: ACCESS_TOKEN }, stdio: ['pipe', 'pipe', 'inherit'] }); ``` The same unpinned execution pattern is recommended in `SKILL.md:42-51`: ```json { "mcpServers": { "yunxiao": { "command": "npx", "args": ["-y", "alibabacloud-devops-mcp-server"], "env": { "YUNXIAO_ACCESS_TOKEN": "<your-token>" } } } } ``` ### Technical Analysis The CLI invokes `npx -y alibabacloud-devops-mcp-server` without specifying an exact package version. Because the package is not declared in `package.json`, no lockfile or package integrity record constrains the code executed at runtime. Depending on the local npm cache and registry state, `npx` can retrieve and execute a newer package release each time the Skill is invoked. This creates a supply-chain trust boundary in which the effective executable payload can change after the Skill has been reviewed. A registry compromise, maintainer account takeover, or malicious future release could therefore introduce arbitrary code without any modification to this repository. The spawned package also receives `{ ...process.env }`. Although access to `YUNXIAO_ACCESS_TOKEN` is necessary for the declared Yunxiao functionality, inheritance of the entire parent environment is broader than necessary. It may expose unrelated API keys, cloud credentials, CI tokens, proxy credentials, and other secrets available to the parent process. No evidence was found that the currently referenced package is malicious. The vulnerability is the unsafe, mutable dependency execution model and the unnecessaril ...[truncated 1645 chars]
Remediation
## Remediation Suggestions 1. Add `alibabacloud-devops-mcp-server` to `package.json` using a reviewed, exact version rather than invoking an unconstrained registry version. 2. Commit the generated lockfile and use a deterministic installation method such as `npm ci`. 3. Invoke the locally installed binary instead of `npx -y`, preventing automatic runtime installation and version changes. 4. Review package integrity and provenance before upgrades. Apply dependency updates through an explicit review process. 5. Replace `{ ...process.env }` with an allowlisted environment containing only values required for operation, for example: ```js const server = spawn(localServerPath, [], { env: { PATH: process.env.PATH, YUNXIAO_ACCESS_TOKEN: ACCESS_TOKEN }, stdio: ['pipe', 'pipe', 'inherit'] }); ``` 6. Include additional variables only when they are demonstrably required, and document why each one is necessary. 7. Update the MCP configuration example in `SKILL.md` to reference a locally installed, pinned binary rather than an unversioned `npx -y` command. 8. Configure the Yunxiao token with the minimum API permissions needed by the Skill and rotate it immediately if dependency compromise is suspected.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (9)

Credential Access

High
Category
Privilege Escalation
Content
## Prerequisites

1. A Yunxiao Personal Access Token
2. Node.js 18+

## Installation
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
## Prerequisites

1. A Yunxiao Personal Access Token
2. Node.js 18+

## Installation
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
includeDetails  Include full details (default: false)

Environment Variables:
  YUNXIAO_ACCESS_TOKEN  (required) Your Yunxiao access token
  YUNXIAO_ORG_ID        (optional) Default organization ID

Organization Resolution Order:
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
includeDetails  Include full details (default: false)

Environment Variables:
  YUNXIAO_ACCESS_TOKEN  (required) Your Yunxiao access token
  YUNXIAO_ORG_ID        (optional) Default organization ID

Organization Resolution Order:
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Session Persistence

Medium
Category
Rogue Agent
Content
- Search work items
- Search projects
- List comments
- Create comments
- Search organization members
- List organizations
Confidence
60% confidence
Finding
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Lp3

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding
The skill documents use of environment variables and an MCP server that can access remote Yunxiao APIs, but it does not declare any explicit tool scope such as allowed tools or permissions. That ambiguity can let an agent invoke networked capabilities and access tokens more broadly than a user may expect, increasing the chance of unintended data access or actions.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The documentation includes a create_comment command that performs a remote write to Yunxiao, but it is presented alongside read operations without a prominent warning or confirmation requirement. This can mislead an agent or user into treating it as a harmless retrieval action, resulting in unintended modification of production work items, audit noise, or disclosure via accidental posting.

Vague Triggers

Medium
Confidence
89% confidence
Finding
The invocation examples use broad natural-language triggers like '帮我看看' and '我有哪些待办', which can cause overbroad or automatic skill activation without clear boundaries. In a skill that can query organization data and potentially perform writes, ambiguous triggering raises the risk of unnecessary data exposure or execution in contexts the user did not specifically intend.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The create_comment command performs a real remote state-changing action against Yunxiao with no guardrail such as confirmation, dry-run mode, or explicit acknowledgement. In an agent skill context, this increases the risk of unintended writes from prompt confusion, misrouting, or malicious instruction injection, because a single invocation can modify external systems immediately.

Static analysis

Detected: suspicious.dangerous_exec

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/yunxiao-mcp.cjs:62