Back to skill

Security audit

Xiaohongshu Creator Marketplace (Pugongying) Data Summary API

Security checks for vulnerabilities and agentic risk

Overview

The skill does what it claims, but it handles an API token in ways that can expose it through command arguments and URL logs.

Install only if you are comfortable sending your JustOneAPI token, KOL ID, and business parameter to api.justoneapi.com. Prefer short-lived or narrowly scoped tokens, avoid sharing command output or process logs, and rotate the token if it may have appeared in shell history, process telemetry, proxy logs, or 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:199
Finding

API Token Exposed Through Process Arguments and URL Query Parameters

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 the token, are appended to the URL before the request is sent: ```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); } } function appendValue(searchParams, name, value) { if (Array.isArray(value)) { for (const item of value) { appendValue(searchParams, name, item); } return; } if (value && typeof value === "object") { searchParams.append(name, JSON.stringify(value)); return; } searchParams.append(name, String(value)); } ``` The resulting URL is sent to the documented exter ...[truncated 2921 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 (6)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding

The skill instructs execution of a Node helper that performs outbound API calls, but the manifest does not declare any explicit tool scope such as allowed network access or permissions. This creates a least-privilege and reviewability gap: an agent or platform may permit broader-than-expected network behavior without a clear, user-visible declaration of what external access the skill requires.

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, which is commonly exposed through logs, browser/history mechanisms, reverse proxies, monitoring systems, and referrer leakage paths. Even though the request uses HTTPS, putting secrets in the URL materially increases accidental credential disclosure risk compared with sending the token in an Authorization header or other protected header.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This is a markdown file, so SQP-2 applies to omissions in user-facing warnings. The parameter list states that a token must be supplied, but the document provides no caution about treating it as sensitive authentication data, avoiding accidental exposure in logs, URLs, or shared output.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The script constructs a remote URL and calls fetch to api.justoneapi.com, transmitting parameters including kolId, business, and potentially a token. While network access is core to the skill's interface purpose, the code itself provides no visible disclosure such as a comment, prompt, or log indicating that user-provided data will be sent to an external service.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

This manifest-style JSON describes what the skill does but provides no explicit trigger phrases, activation boundaries, or exclusion conditions. In systems that derive invocation behavior from descriptions, this broad capability wording could contribute to unintended activation because the scope is not clearly constrained.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
61% confidence
Finding

The natural-language descriptions are centered on 'Xiaohongshu Creator Marketplace (Pugongying)', which implies a specific language/platform context, but the file does not state whether this regional focus is intentional or user-selected. Because policy violations here are limited to language/locale concerns, this is only a weak signal rather than a definitive issue.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.secret_argv_exposure

Instructions pass high-value credentials through process argv.

Critical
Code
suspicious.secret_argv_exposure
Location
SKILL.md:44