Back to skill

Security audit

Infinity Poke Recipe Generator

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a Poke recipe scaffolder, but it generates copyable shell commands from recipe data without safe quoting and uses mutable npx @latest commands, so it needs review before installation.

Install only if you are comfortable reviewing generated Kitchen instructions before running them. Do not copy-paste generated bash commands from untrusted recipe files, pin the Poke CLI version before use, and verify integration URLs and names are plain data with no shell syntax.

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

T09 · Insecure Skill Coding Practices

Error
Location
scripts/render_kitchen_instructions.py:92
Finding

Shell Command Injection in Generated Kitchen Bootstrap Instructions

Content
View full analysis
") name = integ.get("name", "Integration") lines.append(f'npx poke@latest mcp add {url} -n "{name}"') lines.append("```") ``` ### Technical Analysis The script reads integration data from a user-selected recipe JSON file and interpolates the `url` and `name` fields directly into a Bash command. Neither field is validated or safely quoted. The `url` is emitted completely unquoted. Consequently, shell operators such as `;`, `&&`, `||`, command substitutions, redirections, and pipes remain active when a user copies and runs the generated command. Although `name` is placed inside double quotes, an attacker can insert a double quote followed by shell syntax to escape the intended argument. The renderer itself does not execute the command, so exploitation requires a user or automation process to execute the generated Kitchen instructions. However, the output explicitly presents the content as a copyable Bash bootstrap block, making command execution an intended downstream action. ### Attack Path 1. An attacker creates or modifies a recipe JSON file containing a malicious integration value, for example: ```json { "name": "Example", "integrations": { "required": [ { "name": "Example MCP", "url": "https://example.test/mcp; attacker-command" } ] } } ``` 2. The victim renders the file: ```bash python3 scripts/render_kitchen_instructions.py \ --recipe malicious-recipe.json \ --out kitchen-instructions.md ``` 3. The generated Markdown contains: ```bash npx poke@latest mcp ...[truncated 1072 chars]
Remediation
View remediation
", "mcp", "add", validated_url, "-n", name, ] lines.append(" ".join(shlex.quote(arg) for arg in command)) ``` 3. Reject newline and control-character injection in all fields written to command blocks. 4. Prefer a structured invocation mechanism that passes arguments as an array without a shell when commands are executed programmatically. 5. Clearly mark generated commands as derived from untrusted recipe content and require review before execution. 6. Add regression tests covering semicolons, quotes, command substitutions, pipes, redirections, newlines, and leading option characters in both `url` and `name`. ]]>

T08 · Insecure Dependencies

Warning
Location
scripts/render_kitchen_instructions.py:92
Finding

Mutable Third-Party Package Execution Through npx @latest

Content
View full analysis
") name = integ.get("name", "Integration") lines.append(f'npx poke@latest mcp add {url} -n "{name}"') lines.append("```") ``` The corresponding documented example is: ```bash npx poke@latest login npx poke@latest mcp add ... ``` ### Technical Analysis The generated instructions use `npx poke@latest`. The `latest` tag is mutable, so it does not identify a fixed, audited package release. Depending on the local npm configuration and cache state, `npx` may retrieve and execute package code from a configured registry at the time the command is run. As a result, the executable code run by users can differ from the code available when this Skill was audited. A compromised package release, compromised publisher account, registry incident, or unsafe registry configuration could cause the bootstrap step to execute malicious code. This is a supply-chain risk rather than evidence that the current `poke` package is malicious. ### Attack Path 1. A user generates or follows the Kitchen bootstrap instructions. 2. The user runs: ```bash npx poke@latest login ``` 3. `npx` resolves the mutable `latest` tag through the user's configured npm registry. 4. If the resolved release or registry response has been compromised, `npx` downloads and executes attacker-controlled package code. 5. The malicious package code runs under the invoking user's account before or during the expected CLI operation. The same exposure applies to the generated `mcp add` command. ### Impact Assessment A compromised dependency can execute code with the privileges of the user invoking `npx ...[truncated 606 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (8)

Tp4

High
Category
MCP Tool Poisoning
Confidence
89% confidence
Finding

The description promises a more complete MVP-generation workflow, including a lightweight uniqueness check against poke.com/recipes and a publish-readiness verdict. The code only scaffolds static template files in a local directory using command-line inputs. It does create onboarding, integration, sandbox test, verdict, and improvement-loop artifacts, so it partially aligns with the declared purpose. However, several key claimed behaviors are absent or materially weaker: there is no network access or recipe-site comparison for uniqueness, no real evaluation logic for publish readiness, no meaningful automation generation, and the result is not kitchen-ready because critical fields remain TODO placeholders. This is a description-behavior mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The code’s actual function is narrow: it parses a provided JSON recipe spec and renders markdown instructions for Kitchen upload. While some rendered sections overlap with the declared domain (onboarding, integrations, automations, sandbox tests), the primary purpose is materially different. There is no logic for ideation, recipe creation from scratch, website comparison or uniqueness checking, publish-readiness evaluation, or iterative improvement. No external network access to poke.com/recipes is present. Therefore the description significantly overstates and misrepresents the code chunk’s behavior.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding

The skill instructs reading reference files and writing multiple output files, but it declares no explicit tool restrictions or permission scope. In agent environments, missing tool scoping can cause the skill to inherit broader-than-necessary file capabilities, increasing the risk of unintended file access or modification if the skill is invoked in a wider workspace.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding

The duplicated npx poke reference still represents the same supply-chain issue: invoking an unpinned package means execution depends on whatever code is current in the registry. In a skill that assists with CLI bootstrap, that guidance can directly normalize unsafe package execution practices for users.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

The script emits executable setup instructions using npx poke@latest login, which pulls the latest package version at execution time instead of a reviewed, pinned version. If the upstream package, dependency chain, or publication channel is compromised, users following the generated instructions could execute unreviewed code in their environment.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

The generated Markdown includes npx poke@latest mcp add ..., again causing users to execute whatever package is current at the time they run the command. In a skill whose purpose is to generate kitchen-ready deployment instructions, this is more dangerous because the script is directly producing operational commands that users are likely to copy-paste without scrutiny.

Content

No source excerpt is available for this finding.

Scope Creep

Low
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Content

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

md
## MVP scope

- One narrow domain only (do not broaden scope in v1).
- Produce Kitchen-ready fields:
  - name
  - description

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The skill instructs fetching https://poke.com/recipes without warning the user that an external network request may occur. Even though the target is a benign-looking public site, undisclosed network access can leak usage context, create privacy concerns, and surprise users operating in restricted or offline environments.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.