Back to skill

Security audit

Douyin Creator Marketplace (Xingtu) Creator Channel Metrics API

Security checks for vulnerabilities and agentic risk

Overview

The skill does only the advertised JustOneAPI lookup, but it handles the API token in ways that can expose it through command arguments and request URLs.

Review this skill before installing if the JustOneAPI token has meaningful account, billing, quota, or data-access authority. Prefer a version that reads the token directly from a protected environment variable and sends it in an Authorization header, or ensure logs, process monitoring, proxies, and API gateways redact token values and rotate the token if exposure is suspected.

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:228
Finding

API Credential Exposure Through Command-Line Arguments and URL Query Parameters

Content
View full analysis
"}' ``` The executable injects that credential into the request parameters: ```js const params = parseParams(args.paramsJson); applyDefaults(operation, params); injectToken(operation, params, args.token); validateRequired(operation, params); ``` The manifest defines `token` as a query parameter, and all defined query parameters are appended to the 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); } } ``` Consequently, the authentication token is exposed in two sensitive contexts: 1. The `--token` value may be visible to other local users or monitoring tools through process-command-line inspection. 2. The token becomes part of the HTTPS request URL. TLS protects the URL in transit, but the complete URL may still be retained by application telemetry, reverse proxies, gateways, debugging tools, browser-like network instrumentation, or server access logs. The network request itself is necessary for the declared API-wrapper functionality and is restricted to the hard-coded HTTPS origin `api.justoneapi.com`. The unnecessary risk is the credential transport mechanism rather than the existence of the network request. ### Attack Path 1. A user invokes the documented command with a valid value in `JUST_ONE_API_TOKEN`. 2. Shell expansion places the cr ...[truncated 1348 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
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill invokes a network-capable helper (node .../bin/run.mjs) that sends user-supplied parameters to an external API, but it does not declare any explicit tool scope such as permissions or allowed-tools. This creates a governance gap: an agent/runtime may permit broader execution or network access than intended, making it harder to constrain, review, or safely sandbox outbound requests.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill sends the authentication token as a URL query parameter (token), which is commonly recorded in logs, browser/history equivalents, proxy telemetry, monitoring systems, and error traces. Even though the request uses HTTPS, query-string secrets are still more likely to leak through infrastructure and observability layers than headers or request bodies.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

Passing an authentication token in the query string is unsafe because URLs are commonly logged by servers, proxies, analytics tools, browser history, and monitoring systems. This increases the chance of credential disclosure and replay if the token is captured, especially for an API skill that may be invoked across multiple integration layers.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

This manifest-style JSON describes the skill's purpose but provides no explicit trigger phrases, activation boundaries, or exclusion conditions. In manifest files, such missing specificity can make it unclear when the skill should activate versus when similar user requests should not invoke it.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The documentation explicitly requires a user authentication token in a query parameter but does not warn that tokens are sensitive secrets that can be exposed through logs, browser history, analytics, referrers, or shared URLs. In an API skill context, this omission can lead integrators to handle credentials insecurely, increasing the chance of token leakage and unauthorized API access.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.