Back to skill

Security audit

netease-music-cli

Security checks for vulnerabilities and agentic risk

Overview

The skill is a plausible NetEase music CLI helper, but it unnecessarily forwards recent conversation summaries and private credentials through command-line arguments.

Install only if you are comfortable with ncm-cli receiving contextual summaries of your recent conversation for non-playback actions. Avoid entering real API private keys in visible command lines or chats, and prefer a secure credential flow if the CLI supports one.

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 (2)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:70
Finding

Conversation Context Forwarded to an External CLI Without Adequate Data Minimization

Content
View full analysis
"` 参数**,用于传递用户意图上下文。 ``` ### Technical Analysis The skill requires almost every non-playback operation to include a summary of the user's recent conversation in the `--userInput` command-line argument. Music search, playlist management, and similar operations generally require only the explicit music-related query or requested action. A conversation summary can contain unrelated personal, confidential, or security-sensitive information. The instructions do not require redaction, define a strict data-minimization boundary, obtain explicit consent, or document where `ncm-cli` sends and retains this information. Passing the summary as a command-line argument also makes it potentially observable through process inspection, diagnostic output, execution logs, telemetry, or agent transcripts. Whether it is transmitted to a remote service depends on the implementation of `ncm-cli`, which is not included in the audited project. ### Attack Path 1. A user discusses personal or confidential information during the conversation. 2. The user subsequently requests a non-playback music operation. 3. The agent summarizes the user's recent conversation rather than extracting only the minimum music-related intent. 4. The summary is placed in the `--userInput` command-line argument. 5. The sensitive context becomes available to `ncm-cli` and may also appear in process metadata, logs, telemetry, or transcripts. 6. Any party with access to those channels may obtain information that was not necessar ...[truncated 414 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:31
Finding

API Private Key Supplied Through a Command-Line Argument

Content
View full analysis
如果还没有 API Key,请先前往[网易云音乐开放平台](https://developer.music.163.com/st/developer/document?docId=9504d35aa41a47c6ac9830b2dbf48f94)申请 API Key(appId 和 privateKey) ncm-cli config set appId <你的AppId> ncm-cli config set privateKey <你的privateKey> ``` ### Technical Analysis The documented setup procedure places the API private key directly in the process argument list. Command-line arguments are not an appropriate secret-input channel because they can be captured by process-monitoring utilities, debugging tools, command telemetry, terminal recording, automation logs, or agent execution transcripts. Depending on how the command is invoked, the key may also be retained in shell history. The audited instructions do not require history suppression, secret redaction, an interactive hidden prompt, protected standard input, or a dedicated secret store. The external developer documentation link uses the expected `music.163.com` domain; the vulnerability is the local handling of the resulting private key, not the referenced URL. ### Attack Path 1. The user obtains an application private key. 2. Following the skill instructions, the user or agent substitutes the real secret into `ncm-cli config set privateKey`. 3. The secret becomes part of the process command line and possibly an execution transcript or shell history. 4. A local process, user, monitoring system, or log reader with access to those records captures the key. 5. The exposed key is used to authenticate requests as the affected application, subject to the permissions and controls assigned by the service. ### Impact Assessment Successful exploitation can compromise the application's API identity. An attacker may perform API actions, consume quotas, generate unauthorized charges where applicable, ...[truncated 305 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (6)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The skill instructs users to set appId and privateKey but provides no warning about secret handling risks. This can lead users or agents to paste credentials into insecure contexts, expose them in transcripts or shell history, or store them without appropriate protections.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill mandates reviewing the user's recent conversation for broad policy categories before any CLI action, despite being a music-control skill. This expands processing of user content beyond what is necessary for the function, and the moderation scope over the whole conversation can cause unnecessary collection and handling of unrelated sensitive data.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill mandates a specific Chinese rejection message and surrounding moderation behavior, effectively forcing a single language/locale behavior without offering user opt-in or choice. Under the policy, fixed language constraints should be flagged unless clearly optional or justified as region-specific.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill explicitly requires attaching a summary of the user's recent conversation to non-playback CLI commands via --userInput, even though the stated purpose is music search/control. This creates unnecessary data exposure to the CLI process, shell history, logs, and potentially upstream services, exceeding data minimization expectations for the task.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

Passing a summary of the user's recent conversation to CLI commands without any user-facing notice creates an undisclosed data transmission path. Command-line arguments are often exposed in process listings, logs, telemetry, and wrapper scripts, increasing the chance of inadvertent leakage of personal or sensitive information.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

Embedding a summary of recent conversation content in every non-playback command argument is a direct data leakage risk because shell arguments are commonly visible to local users, process monitors, audit logs, and crash reports. In this music skill, that context is not necessary for most operations, so the exposure is unjustified and increases privacy risk.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.