Back to skill

Security audit

Douyin Creator Marketplace (Xingtu) Showcase Items API

Security checks for vulnerabilities and agentic risk

Overview

The skill is narrowly scoped to one JustOneAPI lookup, but it sends the API token in the request URL where logs or monitoring systems could expose it.

Install only if you are comfortable using a JustOneAPI token with this endpoint. Prefer a narrowly scoped, revocable token, avoid sharing command lines or logs, and rotate the token if it may have appeared in URL logs, shell history, process listings, or monitoring systems.

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
bin/run.mjs:18
Finding

API Authentication Token Exposed Through URL Query Parameters

Content
View full analysis
parameter.name === "token"); if (!tokenParam || params.token !== undefined) { return; } if (!cliToken) { fail("--token is required for this operation.", { operationId: operation.operationId, }); } params.token = cliToken; } ``` Every query parameter, including the token, is appended to the request URL: ```js function applyQueryParams(operation, params, url) { for (const parameter of operation.parameters.filter((item) => item.location === "query")) { const value = params[parameter.name]; if (value === undefined) { continue; } appendValue(url.searchParams, parameter.name, value); } } function appendValue(searchParams, name, value) { if (Array.isArray(value)) { for (const item of value) { appendValue(searchParams, name, item); } return; } if (value && typeof value === "object") { searchParams.append(name, JSON.stringify(value)); return; } searchParams.append(name, String(value)); } ``` ### Technical Analysis The Skill transmits its API authentication token in the query string of an HTTPS request to the fixed host `api.justoneapi.com`. HTTPS protects the request from passive interception while in transit, but it does not prevent the complete URL from being captured by components that process or obse ...[truncated 2426 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
87% confidence
Finding

The skill instructs use of a network-capable helper (node .../bin/run.mjs) and an external API token, but it does not declare any explicit tool scope such as permissions or allowed-tools. That gap weakens policy enforcement and reviewability because an agent may be able to perform outbound network actions without the skill manifest clearly constraining or documenting them.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill requires the authentication token to be sent as a URL query parameter, and the implementation automatically injects it into the request URL. Query parameters are commonly exposed in logs, browser/history tooling, proxy records, monitoring systems, and error reports, which increases the chance of credential leakage even when HTTPS is used. In this skill context, the risk is more concrete because the token is a primary credential for a third-party API and the code provides no warning or safer alternative.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

This file presents the operation entirely in English for a platform and parameter domain that are tied to a specific locale, but it does not state that English is optional or that the skill is intended for English-speaking users. Under the policy, forcing a specific language without opt-in can be a natural-language policy issue.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The documentation explicitly requires a user authentication token in a query parameter but provides no guidance about treating it as sensitive, avoiding logging, or preferring safer transport patterns. Query-string tokens are commonly exposed in browser history, proxy logs, analytics, and server access logs, so omitting credential-handling warnings increases the chance of accidental token leakage.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.