Back to skill

Security audit

IMDb Details API

Security checks for vulnerabilities and agentic risk

Overview

The skill appears to perform the advertised IMDb lookup, but it handles the user’s JustOneAPI token through command-line arguments and URL query parameters, which creates a real credential-exposure concern.

Review before installing. Use a narrowly scoped, revocable JustOneAPI token, assume the token may appear in process metadata or service-side URL logs, and rotate it if exposed. No hidden persistence or unrelated data access was found.

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

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

Content
View full analysis
"}' ``` The operation definition declares the token as a query parameter: ```js { "defaultValue": null, "description": "User's authentication token.", "enumValues": [], "location": "query", "name": "token", "required": true, "schemaType": "string" } ``` All parameters declared with `location === "query"`, including the 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 resulting URL is then sent to the fixed HTTPS service: ```js let response; try { response = await fetch(url, requestInit); } catch (error) { fail("Network request failed.", { cause: error instanceof Error ? error.message : String(error), operationId: operation.operationId, }); } ``` ### Technical Analysis Shell expansion of `"$JUST_ONE_API_TOKEN"` makes the actual credential part of the Node process argument vector. Depending on operating-system permissions and runtime environment, command-line arguments can b ...[truncated 2344 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 (5)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

Passing an authentication token in the query string is dangerous because URLs are commonly logged by clients, proxies, observability tools, browser history, and upstream infrastructure. This can expose the token to unintended parties and enable unauthorized API access if the token is reused or long-lived.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill invokes a networked helper (node .../run.mjs) and requires an API token, but it does not declare an explicit tool or permission scope in the skill manifest. That mismatch weakens policy enforcement and reviewability, because an agent/runtime may permit network access implicitly without a clear, auditable declaration of what external capabilities the skill needs.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill sends the authentication token as a URL query parameter (token), which is commonly exposed in browser history, proxy logs, server access logs, monitoring systems, and error messages. Even though the base URL uses HTTPS, query-string secrets are still broadly propagated and retained by infrastructure, increasing the chance of credential leakage and replay by anyone who obtains those logs.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

This manifest-style JSON describes what the skill does but provides no specific activation phrases, scope limits, or exclusion conditions. In a skill-routing context, generic descriptions like calling for IMDb details by id can be matched too broadly unless the trigger conditions are explicitly constrained.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The skill documentation limits languageCountry to a fixed set of locales, and no nearby text indicates that users can opt into other language behavior or that the restriction is required for a documented regional/compliance reason. Under the policy, locale constraints should be user-selectable or clearly justified.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.