Back to skill

Security audit

Webstudio CMS

Security checks for vulnerabilities and agentic risk

Overview

This is a documentation-only Webstudio administration skill with high-impact capabilities, but they are mostly disclosed, gated by approvals, and aligned with its stated purpose.

Install only if you intend to let the agent administer a Webstudio deployment. Before using it, pin exact CLI and container versions, treat share links and tokens as secrets, keep PostgREST and publisher control APIs private, require explicit confirmation before writes or publishing, and avoid sending authenticated or personal form/resource data to untrusted webhook or Worker-backed endpoints.

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)

T08 · Insecure Dependencies

Warning
Location
install.md:57
Finding

Unpinned Webstudio CLI Execution Can Expose Project Credentials to an Unreviewed Package

Content
View full analysis
--version npx --yes webstudio@ ``` The later examples do not follow that requirement: ```bash npx webstudio link --link "" ``` ```bash # 1. build locally in the project webstudio build --template docker # produces Dockerfile, package.json, build/ ``` ### Technical Analysis The document correctly establishes that the CLI version must be reviewed and pinned, but subsequent operational examples execute `npx webstudio` without a version and invoke an unqualified `webstudio` command from the local `PATH`. An unversioned `npx` invocation may resolve and download the package version currently selected by the npm registry instead of the previously reviewed version. The effective code can therefore change after this Skill has been audited. The command also receives a Build-access share link, which the Skill itself identifies as a credential. The unqualified `webstudio` invocation introduces a related executable-resolution risk. It may run an unexpected globally installed or locally injected binary if the execution environment does not guarantee the intended reviewed CLI. This behavior is not necessary to the Skill's functionality. The same operations can be completed with a reviewed and explicitly pinned package version. ### Attack Path 1. An attacker compromises the npm package, a maintainer account, or a newly selected package release. Alternatively, an attacker places a malicious `webstudi ...[truncated 1356 chars]
Remediation
View remediation
link \ --link "" ``` ```bash npx --yes webstudio@ build --template docker ``` 2. Record the approved version in deployment-controlled configuration and reuse exactly that value for every automated operation. 3. Prefer a lockfile-backed local installation where practical, and verify package integrity through the package manager's lockfile and integrity metadata. 4. Do not resolve the approved version dynamically during privileged or unattended execution. Version discovery and review should occur as a separate trusted process. 5. Avoid relying on an unqualified `webstudio` executable from `PATH`. If a locally installed binary is used, resolve and validate its expected path and version before passing credentials to it. 6. Keep Build-access share links scoped to the minimum required project permissions, inject them ephemerally, prevent them from appearing in logs, and rotate or revoke them if an unreviewed executable may have received them. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
features.md:53
Finding

Authenticated Resource Responses May Be Sent Through and Cached by an External Worker Without Sensitive-Data Safeguards

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (14)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| Advanced features (CMS, variables, forms, AI) | `features.md` |

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The form webhook description normalizes posting submissions to external endpoints without any warning that user-entered data leaves Webstudio and is sent to third parties. In a CMS/site-builder skill, this omission can lead operators to deploy forms that unintentionally exfiltrate personal data or sensitive business information to automation platforms or misconfigured endpoints.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The documentation mentions authorization tokens and powerful scoped permissions (canClone, canCopy, canPublish, canUseApi) without warning that these are sensitive credentials. In the context of a Webstudio administration skill, omission of token-handling guidance increases the chance of leakage, overbroad issuance, or unsafe sharing, which could enable unauthorized publishing, cloning, or API access.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

npx --yes webstudio@<approved-version> init ... is pinned, but the command ingests a build-access share link credential and initializes local state. In this context, if operators substitute an unapproved or compromised package version, the CLI would have access to project credentials and could exfiltrate them or modify project state, making the admin workflow especially sensitive.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

This command is version-pinned in the text, but the finding correctly identifies a risky class of behavior: invoking an MCP/CLI tool in an admin context can expose permission metadata and authenticated project context if the package source is not tightly controlled. Because this workflow is for native administration, a compromised tool could enumerate sensitive access details or perform unauthorized actions.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

This admin command bootstraps a linked project using a build-access share link, which is effectively a credential. In a high-trust administration path, any unpinned or compromised npx package execution could steal the share link, write malicious project changes, or establish persistence through subsequent publish actions.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
97% confidence
Finding

Although the example uses a placeholder for an approved version, the underlying operation requests project permissions in an MCP/admin workflow. If the package is not actually pinned and verified in practice, a malicious CLI could harvest permission data and authenticated context, which is meaningful reconnaissance for further compromise.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
97% confidence
Finding

meta.index in an MCP/admin path can expose extensive project structure and metadata. In this skill’s context, a compromised or unvetted package would gain visibility into the project model and could prepare targeted malicious mutations or exfiltrate sensitive implementation details.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

Using npx --yes serve@<approved-version> . for local preview is lower risk than the admin commands above, but it still executes a remote package with filesystem access in the current directory. If operators use an unpinned or tampered version, the preview tool could read local project files or inject malicious behavior during testing.

Content

No source excerpt is available for this finding.

Unbounded Output

Medium
Category
Output Handling
Confidence
80% confidence
Finding

Output size or generation rate is not bounded. Unbounded output enables denial-of-service through resource exhaustion, log flooding, or context-window stuffing.

Content

Scanner excerpt · verification.md (reported line 58)May include surrounding context.

md
Do not search for credentials or read `.env` automatically.

If secret login is required, get explicit approval and use `AUTH_SECRET` only through the
operator's approved secret manager or an ephemeral environment injection. Fill the login form
without printing, logging, persisting, screenshotting, or returning the value. Remove the injected
value after the session. See `security.md`.

Static analysis

No suspicious patterns detected.