Back to skill

Security audit

PuzzleTide Word Search

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a normal word-search generator, but it tells agents to run an unpinned npx command that can download and execute npm code before user approval.

Review this skill before installing. It is suitable for local puzzle generation, but the npx fallback should be removed, pinned, or run only after explicit approval in a sandboxed environment. Prefer an already-installed, trusted PuzzleTide binary or a lockfile-controlled dependency.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:32
Finding

Unapproved Execution of an Unpinned npm Dependency

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 32–38
Vulnerability Type: Insecure third-party dependency execution
Risk Level: Medium

Complete Code Snippet:

markdown
Prefer the local CLI. Check availability in this order:

```bash
ptide --version
puzzletide --version
npx puzzletide --version

If none of those work, ask the user before installing (npm install -g puzzletide).

text

### Technical Analysis

When neither local CLI executable is available, `npx puzzletide --version` may resolve, download, and execute the current `puzzletide` package from the npm registry. The command does not pin a reviewed package version or verify package integrity.

Running a package through `npx` is itself a code-execution event, even if the supplied CLI argument is only `--version`. Package initialization, lifecycle behavior, and the selected executable may run third-party code. This occurs before the instruction to request approval for installation, undermining the stated consent requirement.

The referenced npm and GitHub projects indicate the intended dependency but do not protect against a compromised registry release, compromised maintainer credentials, or other supply-chain changes after the skill was reviewed.

### Attack Path

1. The agent attempts `ptide --version` and `puzzletide --version`, but neither local executable exists.
2. Following the documented fallback order, it invokes `npx puzzletide --version`.
3. npm resolves a mutable, unpinned release from the package registry and may download it into the local cache.
4. `npx` executes the package-provided binary without prior user approval.
5. If the resolved package or release is compromised, attacker-controlled code runs under the agent process's operating-system identity.

### Impact Assessment

A compromised dependency could execute commands with the same privileges as the user running the agent. Depending on the runtime environ
...[truncated 381 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove npx puzzletide --version from the automatic availability checks. Treat only already-installed ptide or puzzletide executables as local dependencies.
  2. If no local executable exists, obtain explicit user approval before any operation that downloads or executes an npm package, including npx.
  3. Pin the dependency to a specific reviewed version rather than resolving the latest mutable release, for example:
    bash
    npx --yes puzzletide@<reviewed-version> --version
    
    This command must still be run only after user approval.
  4. Prefer installation through a lockfile-controlled project dependency, and verify registry integrity metadata or package provenance where supported.
  5. Run the CLI with least privilege in a sandbox that restricts filesystem, credential, environment-variable, and network access.
  6. Revise the instructions so that the consent boundary is explicit and precedes both installation and first-time npx execution.
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (2)

Rp1

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding

The skill instructs the agent to run npx puzzletide --version as a fallback without pinning a specific package version. npx may fetch and execute the latest package from the registry, which creates a supply-chain risk if the package is compromised, typosquatted, or unexpectedly changed. In this skill context, the command is presented as a normal availability check, which makes opportunistic execution more likely.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

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

md
## Safety

- Puzzles are generated locally; no account, API key, or network access.
- Do not install packages without asking the user first.

Static analysis

No suspicious patterns detected.