Back to skill

Security audit

FlowStitch

Security checks for vulnerabilities and agentic risk

Overview

FlowStitch appears purpose-aligned for building and deploying sites, but it gives an agent broad autonomous authority to scrape, install tools, write files, and publish production deployments without enough scoping or confirmation gates.

Review before installing. Use this skill only in a sandboxed project, require explicit approval before any package install, git push, or production deployment, confirm the deployment account/project/visibility, and avoid competitor scraping unless you have authorization and have checked applicable site terms and policies. Treat Stitch download URLs as sensitive and restrict downloads to expected Stitch/GCS assets under the intended project directory.

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 (3)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/fetch-stitch.sh:8
Finding

Unrestricted URL Retrieval and Arbitrary Output Path

Content
View full analysis
" echo "Example: $0 'https://storage.googleapis.com/...' '.stitch/designs/index.html'" exit 1 fi # Create output directory if needed mkdir -p "$(dirname "$OUTPUT")" echo "Fetching Stitch asset..." echo " URL: $URL" echo " Output: $OUTPUT" curl -L -f -sS \ --connect-timeout 15 \ --max-time 60 \ --compressed \ --retry 2 \ --retry-delay 1 \ "$URL" -o "$OUTPUT" ``` ### Technical Analysis The script accepts both its source URL and output path directly from command-line arguments without applying security restrictions. The URL is passed to `curl -L`, which follows redirects without validating the original or final protocol, hostname, resolved address, or port. Although documented invocations use Google Stitch and Google Cloud Storage URLs, the implementation itself permits requests to arbitrary destinations. This may include loopback services, private-network services, link-local addresses, cloud instance metadata endpoints, or attacker-controlled servers reachable from the Agent environment. The output path is also unrestricted. `mkdir -p "$(dirname "$OUTPUT")"` creates the requested parent directory, and `curl -o "$OUTPUT"` replaces or creates any file writable by the Agent. There is no canonical-path validation ensuring the destination remains under `.stitch/designs/`. Downloaded content is not immediately executed by this script. However, writing it over project configuration, source files, shell initialization files, or scripts that a later documented workflow executes could create a secondary code-execution path. ### Attack Path 1. An attacker influences a Stitch/MCP download URL, baton-derived filename, or direct invocation of ...[truncated 1266 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Note
Location
scripts/fetch-stitch.sh:20
Finding

Temporary Authorization URLs Disclosed in Logs

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:153
Finding

Unpinned Third-Party Packages Installed or Executed from Public Registries

Content
View full analysis
Remediation
View remediation
` - `npx netlify-cli@` - `npm create video@` - `npx shadcn@` 2. Store dependencies in `package.json` and commit a reviewed lockfile. 3. Use `npm ci` rather than mutable installation commands in automated workflows. 4. Avoid global package installation: - Install tools as project development dependencies. - Invoke the pinned local binaries through package scripts. 5. Verify package provenance and integrity: - Review package ownership and release history. - Use npm provenance information where available. - Apply registry and integrity controls in CI. 6. Require explicit user confirmation before installing packages or running package executables downloaded from a registry. 7. Run package installation and build steps in a sandbox with: - No unnecessary deployment credentials. - Minimal filesystem access. - Restricted outbound network access. - No elevated operating-system privileges. 8. Separate dependency installation from authenticated deployment so install scripts cannot access live deployment sessions. ]]>
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (14)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared description presents a broad end-user product for generating and deploying websites/apps via Google Stitch. The actual code chunk does not implement any of those core capabilities; it only fetches a remote asset and saves it locally. While downloading Stitch-related assets could be a supporting implementation detail inside such a system, this chunk by itself has a materially narrower and different primary purpose than the declared skill description. No evidence in the code supports the advertised generation, scraping, branding, export, or deployment functionality.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding

The skill contains explicit shell commands for filesystem changes, package execution, deployment, git operations, and image processing, yet declares no tool scope or allowed-tools restrictions. In an agent environment, that lack of scoping increases the chance the skill can invoke powerful local or remote state-changing capabilities beyond what a user expects.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Broad invocation phrases like 'build me a [X]' and 'zero to shipped' overlap with common user requests, making accidental activation plausible. Because this skill includes shell execution, scraping, file writes, and deployment, unintended routing could trigger powerful actions in contexts where the user only wanted advice or a small artifact.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill promotes scraping competitor websites and deriving design intelligence without warning about authorization, privacy, robots/terms restrictions, or legal/ethical limits. That omission can normalize unsafe or non-compliant collection behavior and cause the agent to access third-party content in ways the user did not fully understand.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill instructs one-command production deployment and says to 'surface the live URL' without an upfront warning that this publishes content publicly and changes remote hosting state. In an autonomous agent setting, that can lead to accidental public exposure, billing impact, or deployment to the wrong account/environment.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The workflow routing table uses vague triggers such as 'deploy', 'build the site', and 'analyze competitor' without strong scoping constraints. In an agent ecosystem, such vague routing increases the chance of the skill taking over and performing side-effecting operations unexpectedly.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding

Using unpinned executables like npx netlify introduces the same supply-chain and drift risk as other runtime-fetched CLIs. The agent may execute newly published code without review, which is especially risky because deployment tools can modify remote hosting state.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding

Using unpinned executables like npx netlify introduces the same supply-chain and drift risk as other runtime-fetched CLIs. The agent may execute newly published code without review, which is especially risky because deployment tools can modify remote hosting state.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
80% confidence
Finding

npx remotion is also unpinned, so execution depends on the latest package resolution at runtime. While lower risk than deployment CLIs, it still exposes the environment to supply-chain compromise and non-reproducible behavior.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
82% confidence
Finding

npx shadcn@latest init explicitly requests the latest version, maximizing supply-chain drift and making behavior change over time without review. This can execute arbitrary package installation/setup logic in the local workspace.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
82% confidence
Finding

npx shadcn@latest create has the same risk profile as the init command, with additional impact because it can scaffold or overwrite a project structure. In an agentic workflow, this may alter files broadly based on unaudited remote package code.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
82% confidence
Finding

npx shadcn@latest add ... fetches and executes the latest package logic while modifying source files and dependencies. This creates both supply-chain risk and integrity risk for the generated codebase.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
82% confidence
Finding

The checklist instructs users to run npx remotion render ... without pinning a specific package version. npx may resolve and execute whatever version is current in the registry or environment, which can lead to unexpected code execution, supply-chain compromise, or non-reproducible builds if a malicious or breaking release is published. In this skill context, the command is presented as a standard rendering step, making users more likely to run it directly and increasing exposure.

Content

No source excerpt is available for this finding.

Scope Creep

Low
Category
Excessive Agency
Confidence
70% 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 74)May include surrounding context.

md
**Goal:** Take one sentence from the user and produce a fully deployed, multi-page website or app with zero manual steps.

You handle everything. No hand-holding. No manual steps.

### The Pipeline

Static analysis

No suspicious patterns detected.