Back to skill

Security audit

plan-to-eat-cli

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed Plan to Eat CLI helper that uses account credentials for its stated meal-planning purpose, with a normal but real npm supply-chain consideration.

Before installing, confirm you are comfortable giving this CLI access to your Plan to Eat account and with npm executing the pinned plan-to-eat-mcp package. Consider installing or reviewing the CLI yourself, running npm signature checks, and disabling the session cache if you do not want a local cookie file retained.

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:47
Finding
Unverified Third-Party npm Package Retrieval and Execution<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 47-69 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium ### Vulnerable Code ```markdown **Command not found** — the CLI isn't on `PATH`. Work down this list before giving up: 1. **Run it without installing.** The CLI ships in the npm package and needs Node 18+: ```bash npx -y -p plan-to-eat-mcp@0.7.3 plan-to-eat --version # x-release-please-version ``` Note the `-p`. The package exposes two bins, and the one named `plan-to-eat-mcp` — what plain `npx plan-to-eat-mcp` resolves to — is the **MCP server**, which will sit and wait on stdio. `-p plan-to-eat-mcp plan-to-eat` is what selects the CLI. If this works, prefix every command in this skill the same way. 2. **Install it properly.** Faster than `npx` per call, and puts `plan-to-eat` on `PATH`. **Show the user this rather than running it yourself** — it writes outside the working directory: ```bash npm i -g plan-to-eat-mcp@0.7.3 # x-release-please-version ``` 3. **Working from a clone?** `node <repo>/dist/cli/main.js --version`. If `dist/` is missing, the build step was skipped — `npm install && npm run build` in the repo, then retry. 4. **Node missing entirely** (`node --version` fails) — stop and tell the user; don't install a runtime for them. Keep the version pinned in whichever of these you pass on. `npx -y` and a bare `npm i -g` run whatever the registry serves at that moment, so an unpinned command picks up every future publish silently. Releases are published from CI with npm trusted publishing, so each tarball carries a SLSA provenance attestation binding it to the source repository and the commit it was built from; `npm audit signatures` checks the copy that actually got installed. ``` ### Technical Analysis The Skill directs the Agent to use `npx -y` to retrieve and immediately execute the third-party `plan-to-eat-mcp` npm package when the CLI is unavailable. Although the pack ...[truncated 2828 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Do not automatically run `npx -y` when the CLI is missing. Require explicit user approval before downloading or executing third-party code. 2. Prefer an administrator-installed and previously reviewed `plan-to-eat` executable. 3. Make provenance and signature verification mandatory rather than informational. Verify the package before invoking its CLI, and abort if verification fails. 4. Use a lockfile or reviewed deployment artifact that pins the complete transitive dependency graph. 5. Where supported, verify the downloaded package against an independently published cryptographic digest. 6. Install dependencies in an isolated, least-privileged environment rather than globally or under an account with access to unrelated sensitive files. 7. Avoid exposing account credentials to package installation and verification steps. Provide the Plan to Eat environment variables only to the final reviewed executable and only when required. 8. Disable npm lifecycle scripts during package acquisition where feasible, inspect the package, and permit scripts only after review. 9. Keep the existing prohibition against autonomously performing global installation, and explicitly warn users that global installation executes third-party package code outside the project directory. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep

Static analysis

No suspicious patterns detected.