Back to skill

Security audit

Zhihu Column Article List API

Security checks for vulnerabilities and agentic risk

Overview

This is a narrow JustOneAPI wrapper, but it sends the user's API token as a URL query parameter, which can expose the token in logs.

Review before installing. The skill appears purpose-built for one JustOneAPI endpoint, but use a narrowly scoped, revocable token and assume the token may appear in request URLs handled by the provider, proxies, gateways, or diagnostics. Avoid sharing command lines or logs that may contain the token, and rotate the token if you suspect URL logging exposure.

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

API Credential Exposed in URL Query String

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; } ``` ```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 operation metadata defines the API token as a query parameter. `injectToken()` copies the supplied credential into `params.token`, after which `applyQueryParams()` places it in the request URL as `?token=`. HTTPS protects the URL against passive observation while it is transmitted, and the destination is the fixed, documented host `api.justoneapi.com`. Therefore, the audit found no evidence that the token is deliberately sent to an unrelated party. Nevertheless, placing authentication credentials in a URL is an insecure coding practice because complete URLs are frequently retained by reverse proxies, API gateways, access logs, tracing platforms, monitoring ag ...[truncated 1637 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding

Without declared permissions the skill's intent is opaque and cannot be validated.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

This code performs an outbound HTTP request and includes a required token query parameter, which is sensitive authentication data, but there is no confirmation prompt, user-facing log, or comment/docstring warning that the token will be sent to an external API. For code files, transmitting credentials or sensitive data over the network without any disclosure meets the missing user warning criteria.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The operation requires a sensitive token to be supplied as a query parameter, which is unsafe because query strings are commonly logged by servers, proxies, analytics systems, browser history, and error monitoring tools. In this skill context, the risk is real because the API definition explicitly instructs clients to transmit authentication material in the URL, increasing the chance of credential leakage during normal use.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The documentation defines a required token in the query string but does not warn that query parameters commonly appear in logs, browser history, proxy records, analytics, and monitoring systems. Even though this file is only documentation, omission of that warning can encourage insecure integration patterns and increase the chance of credential exposure by downstream users of the skill.

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