Back to skill

Security audit

Z视介APP Skills

Security checks for vulnerabilities and agentic risk

Overview

The skill’s app features fit its stated purpose, but its runtime configuration sends bearer authorization over plaintext HTTP to a bare IP address despite documentation claiming HTTPS.

Review before installing. Only authorize this skill if you trust the publisher and the MCP endpoint has been corrected to HTTPS on the documented domain. Treat publishing and deletion as high-impact actions: confirm exact content before posting and exact article identity before deletion.

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

Error
Location
skill.json:7
Finding

Bearer Tokens and Privileged MCP Operations Transmitted over Plaintext HTTP

Content
View full analysis

Vulnerability Details

File Location: skill.json, lines 7-14
Vulnerability Type: Plaintext transmission of bearer credentials and authenticated operations
Risk Level: High

Vulnerable Code

json
"mcp": {
  "transport": "http",
  "url": "http://43.160.247.46:8090/mcp/call",
  "sse_url": "http://43.160.247.46:8090/sse",
  "auth": {
    "type": "bearer",
    "header": "Authorization",
    "token_prefix": "",
    "acquire_url": "http://43.160.247.46:3000"
  }
},

Technical Analysis

The machine-readable Skill configuration sends bearer-authenticated MCP requests and authorization traffic to a bare IP address over unencrypted HTTP. HTTP provides neither transport confidentiality nor reliable server authentication. An attacker able to observe or modify network traffic can therefore capture authorization headers, tamper with MCP requests and responses, or impersonate the configured service.

This configuration also materially contradicts the documented configuration in skill.md, which identifies https://zmg-mcp.cztv.com as the MCP and token-acquisition origin. Clients are expected to execute the configuration from skill.json, so the secure endpoint shown in the documentation does not mitigate the insecure runtime configuration.

The affected MCP interface exposes account-bound capabilities, including private message retrieval, user-content retrieval, content publication, and irreversible article deletion. Consequently, interception of the bearer token could expose more than public browsing functionality.

Attack Path

  1. A user authorizes the Skill and configures or receives a valid bearer token.
  2. The Skill client follows skill.json and connects to 43.160.247.46 using plaintext HTTP.
  3. An attacker with a suitable network position, such as control of an untrusted access point, compromised router, proxy, or upstream network segment, observes or modifies the connection.

...[truncated 1190 chars]

Remediation
View remediation

Remediation Suggestions

  1. Replace all plaintext MCP and authorization endpoints with the documented HTTPS origin:
    • https://zmg-mcp.cztv.com/sse
    • An HTTPS MCP call endpoint under the same authenticated domain
    • https://zmg-mcp.cztv.com for token acquisition
  2. Enforce TLS certificate-chain and hostname validation. Do not permit fallback to plaintext HTTP or bypass certificate errors.
  3. Use a stable domain name rather than a bare IP so clients can authenticate the intended service through its TLS certificate.
  4. Reconcile skill.json with both documentation files so the transport, URLs, and token-prefix behavior are consistent.
  5. Revoke and rotate any bearer tokens that may already have been transmitted through the plaintext endpoints.
  6. Issue short-lived, narrowly scoped tokens and bind them to the minimum capabilities required by the requested operation.
  7. Require explicit user confirmation immediately before publication and irreversible deletion, and enforce authorization checks on the server rather than relying only on Skill instructions.
  8. Add automated validation that rejects release artifacts containing non-HTTPS authentication, MCP, SSE, publication, or deletion endpoints.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (8)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill exposes a destructive action, delete_article, with no stated requirement for explicit user confirmation, preview of the target content, or other safeguard before deletion. In an agent setting, this increases the risk of accidental or prompt-induced deletion of user content, especially because article IDs may be obtained from prior listing calls and passed directly into the delete operation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill exposes publish_post and publish_short_video actions that create real user-facing content, but the guidance does not clearly require an explicit warning or confirmation that content will be publicly published. This creates a risk of unintended posting, especially because an agent may interpret a broad user request as authorization to publish and cause reputational or account-impacting actions on the user's behalf.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The trigger examples for watch_live_channel are broad enough to overlap with common conversational requests like '看电视' or '看新闻', which can cause unintended invocation of a live-streaming action. Because the function opens or directs the user to content without strong disambiguation, an innocent utterance may be misinterpreted as consent to navigate or launch media content.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The open_app_page examples are too vague and may match broad user requests such as '打开APP' or '去APP里看' without specifying destination, scope, or user intent. This increases the risk of unintended app launching or deep-link navigation, which is especially sensitive because the skill explicitly returns wake-up links intended for direct user interaction.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The message center capability reads personal interaction data such as mentions, comments, and likes, but the skill description does not warn that invoking it accesses private user message history. In an agent setting, lack of an explicit privacy cue can cause users to disclose or retrieve sensitive personal data without informed awareness, making over-collection more likely.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The works-list functions expose a user's own content history, including short videos, posts, and audio works, yet the description lacks an explicit privacy warning that personal content records will be fetched. In context, these calls are tied to authenticated identity extraction from the token, so an agent may retrieve personal archives automatically once authorized, increasing the sensitivity of accidental or overly broad invocation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

This manifest-style JSON uses only Chinese natural-language descriptions and labels throughout, with no indication that the skill is intentionally region-specific or that users can opt into this locale. Under the language/locale policy rule, a file that implicitly forces one language without justification can be considered a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The user-facing descriptive and response text is entirely in Chinese, including the description and success message, with no indication that language choice is configurable or limited to a region-specific context. This can violate language/locale policy when a skill implicitly forces one language without offering opt-in or documenting the constraint.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.install_untrusted_source

Install source points to URL shortener or raw IP.

Warn
Code
suspicious.install_untrusted_source
Location
skill.json:7