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 JustOneAPI helper, but it sends the user's API token in the request URL, which creates an avoidable credential exposure risk.

Review before installing if the JustOneAPI token has valuable quota, billing access, or private data access. Prefer a dedicated, least-privilege, short-lived token for this skill, avoid logging command invocations, and rotate the token if it may have been captured in URL 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:219
Finding

Authentication Token Transmitted as a URL Query Parameter

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; } ``` All parameters marked as query parameters—including `token`—are then appended to the request URL: ```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 resulting URL is passed directly to `fetch`: ```javascript const baseUrl = manifest.baseUrl; const url = new URL(operation.path, ensureBaseUrl(baseUrl)); applyPathParams(operation, params, url); applyQueryParams(operation, params, url); const requestInit = { headers: { "accept": "application/json", }, method: operation.method, }; let response; try { response = await fetch(url, requestInit); ``` Consequently, requests take the following effective form: ```text https://api.juston ...[truncated 2447 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
92% confidence
Finding

The skill instructs the agent to invoke a network-capable helper (node {baseDir}/bin/run.mjs) and call an external API, but it does not declare any explicit tool scope such as allowed tools or permissions. This creates a governance gap: an agent platform may permit broader-than-intended network execution or fail to enforce least-privilege constraints, making misuse or unintended external calls harder to prevent and audit.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill defines the authentication token as a query parameter and then appends all query parameters directly to the request URL. Tokens placed in URLs are commonly exposed through logs, browser/history tooling, proxy infrastructure, monitoring systems, crash reports, and upstream server access logs, creating avoidable credential leakage risk even when HTTPS is used.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The manifest explicitly requires a user authentication token to be sent as a query parameter to an external API, but provides no user-facing warning or handling guidance. Query-string tokens are prone to exposure through logs, browser history, proxy traces, analytics, and error reports, increasing the risk of credential leakage and unauthorized API access.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

This JSON file describes the skill in broad functional terms but does not specify when it should or should not be invoked. For manifest files, the absence of clear trigger scope or exclusion conditions can lead to unintended activation in adjacent request contexts.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown file describes a token query parameter as a user authentication token, which is sensitive credential material. The document provides no warning about secure handling, avoiding logging/sharing, or the privacy implications of transmitting the token in requests.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.