Back to skill

Security audit

Toutiao API

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent Toutiao API wrapper, but it passes the JustOneAPI token through command-line arguments and URL query strings where it may be exposed in logs or process metadata.

Review this skill before installing if your JustOneAPI token has billing, quota, or account-sensitive access. Use a narrowly scoped or disposable token if available, avoid logging full commands or request URLs, and rotate the token if it may have appeared in process logs, shell history, or HTTP infrastructure 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:273
Finding

API Token Exposed Through Process Arguments and URL Query Parameters

Content
View full analysis
" --token "$JUST_ONE_API_TOKEN" --params-json '{"key":"value"}' ``` `bin/run.mjs:162-163`: ```js const params = parseParams(args.paramsJson); applyDefaults(operation, params); injectToken(operation, params, args.token); validateRequired(operation, params); const baseUrl = manifest.baseUrl; const url = new URL(operation.path, ensureBaseUrl(baseUrl)); applyPathParams(operation, params, url); applyQueryParams(operation, params, url); ``` `bin/run.mjs:273-285`: ```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; } ``` `bin/run.mjs:319-326`: ```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); } } ``` ### Technical Analysis The documented invocation expands `JUST_ONE_API_TOKEN` into the `--token` command-line argument. Depending on the operating system, runtime environment, and access controls, command-line arguments may be visible through process inspection, job telemetry, shell debugging, crash reports, or orchestration logs. The helper then copies the token into `params.token`. Because the operation manifest declares `token` as a query parameter, `applyQueryParams ...[truncated 2213 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (9)

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · SKILL.md (reported line 54)May include surrounding context.

md
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_toutiao&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_toutiao&utm_content=project_link).

## Output Rules

- Start with a plain-language answer tied to the Toutiao task the user asked for.
- Include the most decision-relevant fields from the selected endpoint before dumping raw JSON.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
86% confidence
Finding

The skill instructs the agent to run a Node helper that makes authenticated network requests, but the manifest does not declare an explicit tool scope such as permissions or allowed-tools. This creates an authorization gap where the skill's actual capabilities are broader than what a reviewer or policy layer can easily verify, increasing the risk of unintended outbound access and misuse of the API token.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

This skill transmits the API authentication token as a query parameter by appending every query parameter, including token, into url.searchParams. Query-string credentials are commonly exposed through logs, browser/history equivalents, proxy/CDN access logs, monitoring tools, crash reports, and can also leak via referrer-like mechanisms in some integrations. In this skill's context, the token is a required secret for all operations, so every request carries this exposure by design.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Passing an authentication token in the query string is dangerous because URLs are commonly logged by clients, proxies, web servers, analytics tools, browser history, and error monitors. Even though the base URL uses HTTPS, query parameters can still be exposed through operational logging and accidental sharing, leading to credential leakage and unauthorized API use.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This operation also places the API token in the URL query string, creating the same leakage risk through logs, monitoring systems, and copied URLs. Because the endpoint retrieves user profile data, a leaked token could be reused for broader scraping or unauthorized access against the provider's API.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Embedding the authentication token in the search request URL exposes secrets anywhere the full URL is retained or observed, including reverse proxies and diagnostics. Search endpoints are often high-volume and heavily logged, which can increase the practical chance of token disclosure.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The web search operation repeats the insecure pattern of sending a sensitive token in the query string, which may be captured in logs or shared unintentionally. Since this is a search endpoint, the combination of keyword data and exposed credentials can also leak user activity context alongside the secret.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This markdown documents multiple API endpoints that require a token query parameter, which is a credential and may expose account or system access if mishandled. The file describes the parameters and use cases but does not include any warning about protecting tokens, avoiding accidental disclosure, or the privacy implications of transmitting authenticated requests.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The manifest description says the skill includes article details, user profile, and app keyword search across 4 operations, but the listed capabilities also include a distinct web/PC keyword search endpoint. This creates a semantic mismatch because the description enumerates the scope incompletely while the code exposes an additional search mode.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.