Back to skill

Security audit

TikTok Shop Product Details API

Security checks for vulnerabilities and agentic risk

Overview

The skill is narrowly focused on fetching TikTok Shop product details, but it handles the JustOneAPI token in ways that can expose it and lacks explicit network/tool scoping.

Review this before installing if your JustOneAPI token has broad account access or billable quota. Use a narrowly scoped, revocable token if available, rotate it after testing, and avoid running the documented command in environments where process arguments or request URLs are logged.

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

API Token Exposed Through Command-Line Arguments and URL Query Parameters

Content
View full analysis
"}' ``` The executable injects that value into the 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; } ``` All parameters defined as query parameters—including `token`—are appended to the URL: ```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); } } ``` The generated operation specification explicitly identifies the credential as a required query parameter: ```json { "defaultValue": null, "description": "Authentication token for this API service.", "enumValues": [], "location": "query", "name": "token", "required": true, "schemaType": "string" } ``` ### Technical Analysis The API token is exposed through two sensitive channels: 1. The token is supplied through `--token`, making it part of the process command line. Depending on the operating system, container configuration, and monitoring enviro ...[truncated 2293 chars]
Remediation
View remediation
"}' ``` 7. Add automated tests confirming that tokens never appear in command examples, generated URLs, standard output, standard error, or logged error payloads. ]]>
Vulnerability Patterns
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (1)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill invokes a network-capable helper (node .../bin/run.mjs) and is explicitly designed to call an external API, but it does not declare any permissions or allowed-tools scope. That mismatch weakens policy enforcement and user visibility into what the skill can do, making unintended or unauthorized outbound requests harder to govern. In this context the endpoint is narrowly documented and parameterized, which reduces severity, but the undeclared network capability is still a real security control gap.

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:43