Back to skill

Security audit

Douyin Creator Marketplace (Xingtu) Author Commerce Spread Info API

Security checks for vulnerabilities and agentic risk

Overview

This skill is narrowly scoped to one JustOneAPI Douyin/Xingtu lookup, but it handles the API token in ways that can expose it through command arguments and URL query logs.

Review before installing if your JustOneAPI token has sensitive account access, billing impact, or broad quota. The skill appears purpose-aligned and fixed to the declared API host, but tokens passed on the command line or in URL query strings may be captured by local process monitors, shell history wrappers, proxies, access logs, or telemetry. Prefer a version that reads the token directly from the environment and uses header authentication if the provider supports it.

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

Authentication Token Exposed Through Process Arguments and URL Query Parameters

Content
View full analysis
"}' ``` The operation defines the authentication token as a required query parameter: ```js { "defaultValue": null, "description": "User authentication token.", "enumValues": [], "location": "query", "name": "token", "required": true, "schemaType": "string" } ``` The command-line parser reads the expanded token from the process arguments: ```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; } ``` The token is injected into the general parameter object: ```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; } ``` All query parameters, including the authentic ...[truncated 3805 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
94% confidence
Finding

The skill invokes a network-capable helper (node {baseDir}/bin/run.mjs) that can make authenticated external API requests, but it does not declare an explicit tool scope such as permissions or allowed-tools. This weakens least-privilege controls and makes it easier for an agent runtime to permit broader-than-intended network access or execute the skill without clear policy gating.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This code file performs a network request to an external API, and the required token query parameter is injected into the request beforehand. Although the parameter is described in the manifest object, there is no confirmation prompt, visible user-facing warning, or disclosure at execution time that sensitive authentication data will be sent to a third-party endpoint.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

This JSON file is a manifest-style interface definition, so SQP-1 applies. The description and display name explain what the API does, but they do not define any explicit activation phrases, constraints, or exclusion conditions, leaving invocation scope ambiguous for a skill-selection system.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
72% confidence
Finding

The natural-language metadata is entirely centered on 'Douyin Creator Marketplace (Xingtu)', which is a specific regional platform, but there is no visible note offering language/locale choice or documenting the locale restriction. This can create a policy concern if the skill is surfaced broadly without clear user opt-in to a region-specific context.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.