Back to skill

Security audit

云效工作项管理

Security checks for vulnerabilities and agentic risk

Overview

The skill appears purpose-built for Yunxiao work-item management, but it uses a persistent read/write token and can change live project data without strong confirmation or secure secret handling.

Review this before installing if your Yunxiao workspace contains sensitive or business-critical data. Use the narrowest possible token, avoid committing or sharing config.json, restrict local file access, rotate any exposed token, and require explicit user confirmation before create, update, complete, or close actions.

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
config.json:1
Finding

Privileged Personal Access Token Stored in Plaintext Configuration

Content
View full analysis
Dict[str, Any]: """加载配置文件""" with open(CONFIG_PATH, 'r', encoding='utf-8') as f: return json.load(f) def get_headers(config: Optional[Dict] = None) -> Dict[str, str]: """获取请求头""" if config is None: config = load_config() return { 'Content-Type': 'application/json', 'x-yunxiao-token': config['token'] } ``` ### Technical Analysis The distributed `config.json` does not contain a live credential, but the documented setup process requires users to write their personal access token into that file. The application then reads the secret directly from disk ...[truncated 2300 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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
Findings (11)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The README instructs users to place a personal access token directly into a local config.json file but provides no warning about file permissions, avoiding commits, or secure secret storage. This can lead to accidental exposure through source control, backups, logs, or shared environments, especially because the token has work-item read/write access to the user's Yunxiao organization.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill exposes file-read and network-capable scripts but does not declare any explicit tool scope or permissions boundary. In an agent environment, this can lead to overbroad execution authority, making it easier for the skill to access local files or perform remote API actions without transparent user or platform controls.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The trigger description includes broad phrases such as project management and task management concepts that may appear in ordinary conversation, causing unintended activation. Because this skill can query and modify remote Yunxiao work items, accidental routing to this skill could expose project metadata or lead to unintended state changes.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill description and guidance do not prominently warn that create and update operations will modify remote project data in Yunxiao. Users may interpret the skill as informational only, which increases the risk of unintended changes to tasks, requirements, or defects when the agent acts on ambiguous requests.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The file uses Chinese-only natural-language values for workflow states and the usage note, which imposes a specific language/locale in configuration-visible text. There is no indication that this skill is intentionally region-specific or that users can opt into another language, which matches the policy-violation criterion for forced language without user choice.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The file’s docstring, argument descriptions, and user-facing output are all hard-coded in Chinese, with no option to select another language or locale. This can violate a language/locale policy when skills are expected to respect user preference or provide opt-in for a fixed language.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

This skill exposes create and update functions that directly perform authenticated, state-changing operations against a live Yunxiao organization without any built-in confirmation, dry-run mode, or policy gate. In an agent context, ambiguous or prompt-injected user input could cause unintended task creation or modification, leading to integrity issues, workflow disruption, and accidental changes in project-management data.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The docstring for list_workitems explicitly states at L44 and L47 that space_id is required, but the __main__ test invokes list_workitems(assigned_to=config['user_id']) without providing space_id. This is an active contradiction between the inline documentation and the demonstrated code usage, indicating intent/code divergence.

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 natural-language interface is entirely in Chinese, including the module docstring, argument descriptions, warnings, and success/error messages. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is explicitly documented and justified, which is not present here.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

The script fetches a work item via an API call and then prints the returned fields, including description, creator, assignee, and custom fields, which may contain sensitive project data. While the script is read-only, there is no comment, docstring, or user-facing notice warning that invoking it will retrieve and display potentially sensitive remote data.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

This Python file contains user-facing natural-language strings only in Chinese, including the module docstring and argparse descriptions. Under the stated policy, forcing a specific language without offering a language or locale choice is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.