Back to skill

Security audit

Douyin Creator Marketplace (Xingtu) Follower Growth Trend API

Security checks for vulnerabilities and agentic risk

Overview

The skill appears purpose-built for one JustOneAPI Douyin/Xingtu follower-trend endpoint, but its API token handling creates a meaningful credential exposure risk.

Use this skill only with a JustOneAPI token you are comfortable exposing to the JustOneAPI request path, and prefer a narrowly scoped or short-lived token if available. Be aware the current helper can reveal the token in process listings or URL logs; rotate the token if you suspect it was captured.

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

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

Content
View full analysis
","startDate":"","endDate":""}' ``` The helper parses the token from the process command line: ```js function parseArgs(argv) { const parsed = { operation: null, paramsJson: "{}", token: null }; for (let index = 0; index < argv.length; index += 1) { const flag = argv[index]; const value = argv[index + 1]; if (flag === "--operation") { parsed.operation = value; index += 1; continue; } if (flag === "--params-json") { parsed.paramsJson = value; index += 1; continue; } if (flag === "--token") { parsed.token = value; index += 1; continue; } fail(`Unknown argument "${flag}".`); } return parsed; } ``` It then injects the token into request parameters: ```js function injectToken(operation, params, cliToken) { const tokenParam = operation.parameters.find((parameter) => parameter.name === "token"); if (!tokenParam || params.token !== undefined) { return; } if (!cliToken) { fail("--token is required for this operation.", { operationId: operation.operationId, }); } params.token = cliToken; } ``` The manifest declares the credential as a query parameter: ```js { "defaultValue": null, "description": "User authentication token.", "enumValues": [], "location": "query", "name": "token", "required": true, "schemaType": "string" } ``` All query parameters, including the token, are appended to the URL: ```js fun ...[truncated 3531 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 (4)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding

The skill invokes a network-capable helper to call an external API but does not declare an explicit tool scope such as allowed-tools or permissions. This weakens policy enforcement and reviewability because an agent may be permitted to make outbound requests without a clearly constrained declaration of intended capabilities.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill sends the authentication token in the URL query string, which is commonly logged by proxies, servers, browser history, telemetry systems, and other intermediaries. Even though the base URL uses HTTPS, query parameters are still more broadly exposed than headers, so token leakage can lead to unauthorized API access.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

This is a JSON manifest file, so vague-trigger review applies. The manifest provides a broad capability description of calling the follower trend endpoint, but it does not specify when this skill should or should not be invoked, nor any limiting context or negative examples to prevent accidental matching.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
70% confidence
Finding

The manifest is entirely specialized to Douyin Creator Marketplace (Xingtu), which is a China-specific platform context, but it does not indicate whether this locale/platform restriction is intentional, optional, or user-selected. Under the policy, locale or language constraints should either offer user choice or be clearly documented and justified.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.