Back to skill

Security audit

Toutiao User Profile API

Security checks for vulnerabilities and agentic risk

Overview

This skill is a focused API wrapper, but it handles an API token and profile data in ways users should review before installing.

Install only if you intend to call JustOneAPI for Toutiao user profile lookups. Use a limited, rotatable API token where possible, be aware the token is passed in process arguments and URL query parameters, and use returned profile data only where you have appropriate authorization and privacy/legal basis.

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

API Credential Exposed Through Command-Line 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 query parameters, including the token, are appended to the request 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 documented invocation also passes the secret as a command-line argument: ```bash node {baseDir}/bin/run.mjs --operation "getToutiaoUserDetailV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"userId":""}' ``` ### Technical Analysis The Skill receives the JustOneAPI token through the `--token` command-line option and subsequently places it in the HTTPS request URL as `?token=...`. Passing secrets through command-line arguments can expose them through process inspectio ...[truncated 2351 chars]
Remediation
View remediation
"}' ``` 5. Reject a user-supplied `token` inside `--params-json` to prevent callers from bypassing the safer credential path. 6. Rotate any token that may already have appeared in process telemetry, shell history, proxy logs, or server logs. ]]>
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
89% confidence
Finding

The skill invokes a network-capable helper (node .../bin/run.mjs) and depends on an API token, but it does not declare an explicit tool scope such as allowed tools or permissions. This creates a mismatch between documented behavior and enforceable restrictions, which can let an agent execute networked actions without clear policy boundaries or user/auditor visibility.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This code injects a required token into request parameters and sends both the token and userId to an external API using a network call. While the manifest describes the API operation, there is no confirmation prompt, user-facing log/print, or inline warning in the executable path disclosing that sensitive request data is being transmitted.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

This is a manifest-style JSON file, so vague-trigger review applies. The file provides general descriptive fields like "Toutiao User Profile" and "User Profile" but does not define explicit trigger phrases, scope limits, or negative examples, leaving it unclear when the skill should activate versus when similar profile-related requests should not invoke it.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill explicitly describes fetching Toutiao user profile data and using it for influencer profiling, audience analysis, and monitoring creator performance, but provides no privacy notice, consent requirements, or data-use limitations. This creates a real privacy/compliance risk because it normalizes collection and profiling of identifiable user data without warning users about sensitivity, lawful basis, or downstream use.

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 description explicitly promotes "influencer profiling and audience analysis," which is a policy-relevant framing in the manifest text. While not a technical vulnerability, this wording can encourage profiling behavior without documenting user choice, limitations, or organizational constraints.

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