Back to skill

Security audit

DesignKit Ecommerce AI Studio

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its image-editing purpose, but it needs review because configurable network endpoints can receive the API key and uploaded images.

Review before installing. Prefer the ClawHub inspect/install path, avoid the unpinned npx GitHub command, keep custom API-base environment variables unset unless you control and trust the endpoint, and only provide local image paths you intend to upload to DesignKit/OpenClaw for processing.

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/ecommerce_product_kit.py:41
Finding

Unvalidated Configurable Network Destinations Can Receive API Credentials and Local Images

Content
View full analysis
Dict[str, str]: ak = _require_ak() return { "Accept": "application/json, text/plain, */*", "Content-Type": "application/json", "Origin": "https://www.designkit.cn", "Referer": "https://www.designkit.cn/product-kit/?from=home", "X-Openclaw-AK": ak, "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", } ``` ```python def _http_request( method: str, url: str, body: Optional[bytes] = None, json_mode: bool = True, extra_headers: Optional[Dict[str, str]] = None, ) -> Tuple[int, Any]: headers = _headers_json() if json_mode and body else _headers_get() if extra_headers: headers.update(extra_headers) if body and "Content-Type" not in headers: headers["Content-Type"] = "application/json" _request_log_as_curl(method, url, headers, body) req = urllib.request.Request(url, data=body, headers=headers, method=method) try: with _urlopen(req, timeout=120) as resp: raw = resp.read().decode("utf-8", errors="replace") ``` The upload destination is also accepted directly from the remote upload policy: ```python provider = arr[0]["order"][0] p = arr[0][provider] token, key, up_url, up_data = p["token"], p["key"], p["url"], p["data"] b ...[truncated 4837 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
README.md:48
Finding

Unpinned npx and GitHub Installation Command Executes Mutable Supply-Chain Content

Content
View full analysis
Remediation
View remediation
`. - Avoid floating tags such as `latest`. 2. **Pin repository content** - Reference a verified commit hash or immutable signed release tag rather than the repository's default branch. - Prefer release archives with published cryptographic checksums. 3. **Verify integrity** - Publish SHA-256 hashes or signed attestations for release artifacts. - Verify the downloaded artifact before installation or execution. 4. **Avoid automatic confirmation for unverified code** - Remove `-y` from documentation where practical so users can review the package and version being executed. - Clearly state that the command executes third-party installer code. 5. **Prefer the inspect-before-install path** - Make the documented `clawhub inspect designkit-skills` workflow the primary installation method. - Require users to inspect permissions, scripts, and network behavior before installation. 6. **Use signed releases and protected publishing** - Protect package and repository publishing accounts with strong multi-factor authentication. - Use protected branches, signed tags, restricted release workflows, and provenance attestations. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Rogue AgentSelf-Modification, Session Persistence
Findings (49)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The code substantially matches the A+ detail-page planning and rendering portion of the description and uses DesignKit/OpenClaw APIs with Chinese-oriented defaults. However, the declared description is broader than the supplied code: there is no implementation of general DesignKit image editing, and no separate general-purpose ecommerce product-image generation flow outside the A+ detail-page workflow. Additionally, the code handles local image file validation/upload and saves generated images to local output directories, which is a meaningful behavior not reflected in the terse declared permissions/description. This is a partial but material description-behavior mismatch rather than a completely different skill.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The declared description presents a feature-rich design/ecommerce image workflow skill, but the supplied code chunk is a narrow utility for validating local image uploads. It strips wrappers from paths, handles file:// URLs, checks file existence, validates allowed extensions, inspects magic bytes to detect JPEG/PNG/GIF/WEBP, and ensures extension/content consistency. That behavior is only a supporting upload-validation helper and does not implement the primary declared capabilities. Because the actual code’s purpose is materially different from the declared purpose, this is a mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared purpose focuses on image editing, product-image generation, and A+ detail-page planning/rendering. The actual code does none of that. Instead, it implements logging helpers for HTTP requests and responses, including redaction of secrets, URL/body sanitization, and formatted curl/JSON logging output. This is a materially different primary purpose and represents undeclared capabilities unrelated to the stated design/ecommerce imaging functionality. While such logging helpers could be supporting infrastructure somewhere in a larger project, this specific supplied code chunk does not match the declared skill description.

Content

No source excerpt is available for this finding.

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · scripts/ecommerce_a_plus_detail.py (reported line 580)May include surrounding context.

python
pass

    if "--ar" not in prompt:
        return prompt + "\n" + f"--ar {aspect_ratio}"
    return prompt

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · scripts/ecommerce_a_plus_detail.py (reported line 581)May include surrounding context.

python
pass

    if "--ar" not in prompt:
        return prompt + "\n" + f"--ar {aspect_ratio}"
    return prompt

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · scripts/run_command.sh (reported line 413)May include surrounding context.

sh
debug_log "请求: POST ${API_BASE_NORMALIZED}${ENDPOINT}"
debug_log "Body: ${BODY}"
printf '%s' "$BODY" | request_log_openclaw_curl "${API_BASE_NORMALIZED}${ENDPOINT}"

emit_http_error() {
  local action_name="$1"

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

The README instructs users to run npx -y skills without pinning a specific package version. That allows whatever version is current in the registry at install time to execute, creating a supply-chain risk if a compromised or breaking release is published.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · README.md (reported line 95)May include surrounding context.

md
5. `~/.openclaw/workspace/visual/output/designkit-ecommerce-product-kit/`
6. `~/Downloads/`

The workflow creates the directory automatically and refuses to write results inside the skill repository itself.

A+ detail renders follow the same output strategy, with default subdirectory:

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill invokes shell commands, reads additional skill files, relies on environment secrets, and performs networked uploads/downloads, but it does not declare an explicit tool scope such as allowed-tools or permissions. That creates an under-constrained execution surface where reviewers and platforms cannot easily enforce least privilege, increasing the chance of unintended file, shell, or network access.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file states that runtime behavior defaults to Chinese users and Simplified Chinese responses. The policy only permits language constraints when the user is given a choice or the constraint is clearly justified as region-specific, and this file frames Chinese as the default rather than an opt-in preference at that point.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · README.md (reported line 107)May include surrounding context.

md
For ecommerce listing images:

1. Read `__SKILL_DIR__/skills/designkit-ecommerce-product-kit/SKILL.md`.
2. Follow its staged conversation flow exactly.
3. Execute `run_ecommerce_kit.sh` only after the staged inputs are complete.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

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

md
For ecommerce listing images:

1. Read `__SKILL_DIR__/skills/designkit-ecommerce-product-kit/SKILL.md`.
2. Follow its staged conversation flow exactly.
3. Execute `run_ecommerce_kit.sh` only after the staged inputs are complete.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · api/commands.json (reported line 98)May include surrounding context.

json
For ecommerce listing images:

1. Read `__SKILL_DIR__/skills/designkit-ecommerce-product-kit/SKILL.md`.
2. Follow its staged conversation flow exactly.
3. Execute `run_ecommerce_kit.sh` only after the staged inputs are complete.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · claw.json (reported line 93)May include surrounding context.

json
For ecommerce listing images:

1. Read `__SKILL_DIR__/skills/designkit-ecommerce-product-kit/SKILL.md`.
2. Follow its staged conversation flow exactly.
3. Execute `run_ecommerce_kit.sh` only after the staged inputs are complete.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This manifest includes user-facing name, description, prompts, and triggers in Chinese, which effectively constrains the skill to a specific language. The file does not indicate that the language is optional, user-selectable, or justified as a region-specific skill, so it appears to force a locale without opt-in.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The workflow description explicitly instructs shell execution and chains multiple external API calls, yet provides no user-facing disclosure that local commands may run or that user-supplied images and metadata will be transmitted to third-party endpoints. In an agent setting, this can lead to silent command invocation and unintended data exposure, especially if downstream tooling passes unsanitized JSON or local file paths.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

Triggers such as "电商套图", "商品主图", "商品详情图", and "上架套图" are broad request phrases that may be used in ordinary conversation about ecommerce design, not necessarily to invoke this exact multi-step workflow. The manifest provides no negative examples or tighter activation constraints to distinguish when this skill should or should not activate.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest description states that runtime guidance is optimized for Chinese-language users, which suggests a language preference baked into the skill. There is no accompanying indication that users can choose another language or explicitly opt into Chinese-language guidance.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

This manifest file defines activation keywords such as "enhance image quality," "product image set," and "detail page images," which are generic enough to overlap with ordinary user requests beyond this specific skill. The trigger list does not include exclusion conditions or other constraints to narrow when the skill should or should not activate.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

Keywords like "变清晰," "商品主图," "详情页," and "详情图" are broad phrases that may appear in many normal conversations about images or ecommerce content. Because the manifest provides only a flat keyword list and no disambiguating context, these triggers risk unintended invocation.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · README.md (reported line 106)May include surrounding context.

md
},
  "skills": {
    "designkit-edit-tools": {
      "entry": "skills/designkit-edit-tools/SKILL.md",
      "description": "Single-image editing for background removal and image restoration.",
      "status": "active"
    },

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · claw.json (reported line 88)May include surrounding context.

json
},
  "skills": {
    "designkit-edit-tools": {
      "entry": "skills/designkit-edit-tools/SKILL.md",
      "description": "Single-image editing for background removal and image restoration.",
      "status": "active"
    },

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The code sets default locale-related parameters to Chinese-specific values such as client_language="zh-Hans", country_code="CN", and client_timezone="Asia/Shanghai". This is a natural-language policy concern because the skill imposes a specific language/locale context by default rather than offering a user choice or documenting a justified region-specific constraint.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The prompt explicitly instructs the model to produce output in Chinese ("中文输出"), which forces a specific language without user opt-in. The policy for natural-language behavior requires either offering a language/locale choice or clearly justifying the constraint; this file does not do so for the style-generation output.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The code automatically downloads generated images from remote URLs and writes them into a local output directory without any explicit consent prompt or runtime warning. In an agent context, this creates an unexpected side effect on the user's filesystem and may store sensitive or unwanted content locally, especially when the output path is environment- or input-controlled.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.