Back to skill

Security audit

Douyin Creator Marketplace (Xingtu) Author Commerce Seeding Base Info API

Security checks for vulnerabilities and agentic risk

Overview

This is a focused API wrapper, but it handles the user's JustOneAPI token in ways that can expose it through process listings or URL logs.

Install only if you are comfortable giving this skill a JustOneAPI token for the Douyin/Xingtu endpoint. Prefer a low-privilege, rotateable token, avoid logging command lines or full request URLs, and rotate the token if it may have appeared in shell history, process telemetry, proxy logs, or API logs.

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

API Credential Exposed Through Process Arguments and URL Query Parameters

Content
View full analysis
","range":""}' ``` Command-line token processing in `bin/run.mjs:154-158`: ```javascript if (flag === "--token") { parsed.token = value; index += 1; continue; } ``` Request URL construction in `bin/run.mjs:91-94`: ```javascript const baseUrl = manifest.baseUrl; const url = new URL(operation.path, ensureBaseUrl(baseUrl)); applyPathParams(operation, params, url); applyQueryParams(operation, params, url); ``` Query parameter insertion in `bin/run.mjs:212-219`: ```javascript 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); } } ``` The operation manifest defines `token` as a required query parameter: ```javascript { "defaultValue": null, "description": "User authentication token.", "enumValues": [], "location": "query", "name": "token", "required": true, "schemaType": "string" } ``` ### Technical Analysis Supplying secrets through command-line arguments can expose them to process inspection, endpoint monitoring, command telemetry, shell tracing, debugging tools, and audit systems. Expanding `"$JUST_ONE_API_ ...[truncated 2444 chars]
Remediation
View remediation
","range":""}' ``` 7. Rotate any token that may already have been retained in shell traces, process telemetry, URL logs, proxy logs, or monitoring systems. ]]>
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) and is explicitly designed to call an external API, but it does not declare any explicit tool scope such as permissions or allowed-tools. This weakens policy enforcement and reviewability because an agent/runtime may permit broader tool use than intended, increasing the risk of unintended outbound requests or misuse of the provided API token.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill sends the authentication token as a URL query parameter, which is commonly exposed through logs, browser history, proxy logs, monitoring systems, and error reporting. Even though the request uses HTTPS, placing secrets in the URL increases the chance of credential leakage far beyond using an Authorization header or other protected transport mechanism.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

This is a JSON manifest file, so vague-trigger checks apply. The file describes what the skill does but does not define any explicit invocation phrases, scope limits, or exclusion conditions, which can make activation criteria ambiguous in systems that infer triggers from manifest text.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
61% confidence
Finding

The descriptions are exclusively framed around Douyin Creator Marketplace/Xingtu, a China-specific platform context, without indicating whether this locale/domain restriction is intentional or user-selected. While this may be justified by the skill purpose, the file does not explicitly document that justification or offer any user choice.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.