Back to skill

Security audit

Pyx Scanner Free

Security checks for vulnerabilities and agentic risk

Overview

This skill has a coherent security-scanning purpose, but its shell-based curl fallback can turn a crafted skill name into command execution.

Review before installing. The main issue is not the scanner API itself, but the unsafe curl fallback: only use this skill in an environment that validates skill identifiers with a strict allowlist and avoids shell interpolation. Prefer WebFetch or a structured HTTP client, and do not let it run network diagnostics or scan ambiguous input automatically.

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

Error
Location
SKILL.md:156
Finding

Command Injection Through Unsanitized Skill Identifier

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 156–171
Vulnerability Type: Shell command injection caused by unsafe interpolation
Risk Level: High

Vulnerable Code

text
1. Extract owner and name from $ARGUMENTS
2. Expected format: owner/name
3. If $ARGUMENTS is empty or lacks a slash separator, request new input
4. Trim surrounding whitespace and reject the input if either component is empty
bash
curl -s "https://scanner.pyxmate.com/api/v1/check/{owner}/{name}"

Technical Analysis

The documented validation only verifies that the input contains a slash and that the resulting components are nonempty. It does not enforce a safe character set for owner and name.

The fallback then instructs the Agent to interpolate these attacker-controlled values into a shell command. Double quotes do not prevent shell command substitution. Consequently, input containing constructs such as $(command) or backticks may be evaluated by the shell before curl executes.

For example, an identifier shaped like owner/$(id) can satisfy the documented slash and nonempty checks. If directly substituted into the fallback command, the shell executes id and places its output into the URL. More harmful commands could read files, change local data, invoke other programs, or initiate additional network requests.

This issue concerns the curl fallback specifically. The declared request to scanner.pyxmate.com is necessary for the Skill's API-based scanning function, and the reviewed content does not instruct the Agent to transmit credentials or local files. However, successful command injection could exceed that intended network-only privilege boundary.

Attack Path

  1. An attacker persuades a user or Agent to scan a crafted Skill identifier containing shell substitution syntax.
  2. The crafted value contains a slash and nonempty components, so it passes the documented validation.
  3. WebFetch ...[truncated 1403 chars]
Remediation
View remediation

Remediation Suggestions

  1. Prefer a structured HTTP request tool that accepts the URL and path parameters as data without invoking a command shell.
  2. Strictly validate both identifier components before any network request. A conservative allowlist such as ^[A-Za-z0-9._-]+$ should be applied independently to owner and name.
  3. Reject shell metacharacters, whitespace, control characters, additional path separators, command substitutions, quotes, and encoded path traversal sequences.
  4. URL-encode each validated path segment using a trusted URL library rather than string concatenation.
  5. If curl remains necessary, invoke it through an argument-array API without a shell. Do not construct a command string and pass it to sh, bash, cmd.exe, PowerShell, or an equivalent interpreter.
  6. Add explicit instructions prohibiting direct interpolation of $ARGUMENTS or model-generated values into shell commands.
  7. Run the Skill with least privilege: restrict filesystem access, remove unnecessary credentials from the environment, and limit outbound traffic to the declared scanning service.
  8. Add negative tests for inputs containing $(...), backticks, quotes, semicolons, pipes, ampersands, newlines, extra slashes, traversal sequences, and percent-encoded metacharacters.
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (5)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The manifest display name, summary, and the entire user-facing skill documentation are presented only in Chinese, with no indication that the user may choose another language. Under the policy, forcing a specific language without opt-in is a natural-language locale violation unless clearly justified as region-specific.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The free edition is described as limited to single-scan basic reporting, but the instructions also say to use input_params for create/query/export operations. This mismatch expands the apparent operational scope and can cause an agent to perform unintended actions beyond a read-only scan workflow, especially when paired with exec/network-capable tooling.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The trigger conditions are overly broad, stating the skill should be used in generic AI model, dialogue, agent orchestration, and LLM application scenarios. Broad activation criteria increase the chance of unintended invocation, which is risky for a skill that can use exec and make network requests.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The example trigger phrases are broad enough that the skill may activate on ordinary conversation about checking or scanning a skill, without clear boundaries or confirmation gates. In context, that can cause unnecessary outbound API calls or execution flow in situations where the user did not intend a real scan to run.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill adds network diagnostics such as ping testing and firewall/proxy troubleshooting, which are not necessary for a basic security scan. In an agent environment with exec access, these instructions widen behavior into host/network probing and could leak environment details or encourage execution of unnecessary system commands.

Content

No source excerpt is available for this finding.