Back to skill

Security audit

DesignKit SKU 套图生成器

Security checks for vulnerabilities and agentic risk

Overview

The skill matches its DesignKit image-generation purpose, but it has serious review-worthy risks around API-key logging, broad secret loading, unsafe shell/Python interpolation, and unpinned installation guidance.

Review this skill before installing in a sensitive environment. It needs a DesignKit API key and uploads selected images/product data to DesignKit, which is expected, but you should disable or fix request logging, avoid running the SKU workflow unless database credentials are explicitly scoped, remove hard-coded .env discovery, pin installation sources, and avoid endpoint override variables with production credentials.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (5)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/run_command.sh:111
Finding

API Key Exposed in Default Request Logs

Content
View full analysis
/dev/null 2>&1 || true return 0 fi python3 -c " import os, sys, shlex url = sys.argv[1] body = sys.stdin.read() ak = os.environ.get('DESIGNKIT_OPENCLAW_AK', '') or '' parts = [ 'curl', '-s', '-w', '\\n%{http_code}', '-X', 'POST', '-H', 'Content-Type: application/json', '-H', 'X-Openclaw-AK: ' + ak, '-d', body, '--max-time', '120', url, ] print('[REQUEST] ' + shlex.join(parts), file=sys.stderr) " "$url" } ``` `scripts/run_command.sh:449`: ```bash printf '%s' "$BODY" | request_log_openclaw_curl "${API_BASE_NORMALIZED}${ENDPOINT}" ``` `scripts/ecommerce_product_kit.py:40-66`: ```python def _request_log_enabled() -> bool: return os.environ.get("OPENCLAW_REQUEST_LOG", "1") != "0" def _request_log_as_curl( method: str, url: str, headers: Dict[str, str], data: Optional[bytes] = None, ) -> None: if not _request_log_enabled(): return parts: List[str] = ["curl", "-s", "--max-time", "120"] m = method.upper() if m not in ("GET", "HEAD"): parts.extend(["-X", m]) for k, v in headers.items(): parts.extend(["-H", f"{k}: {v}"]) if data: parts.extend(["-d", data.decode("utf-8", errors="replace")]) parts.append(url) print("[REQUEST] " + shlex.join(parts), file=sys.stderr) ``` `scripts/ecommerce_product_kit.py:296-304,332`: ```python def _headers_json() -> Dict[str, str]: ak = _require_ak() return { "Accept": "application/json, text/plain, */*", ...[truncated 1755 chars]
Remediation
View remediation
" if key.lower() in REDACTED_HEADERS else value parts.extend(["-H", f"{key}: {safe_value}"]) ``` 3. Apply equivalent redaction in `request_log_openclaw_curl`; do not read the API key merely to print it. 4. Redact tokens, signed URLs, image URLs, and sensitive body fields from response and request-body logs. 5. Limit debug logs to metadata such as method, approved hostname, path, response code, and request ID. 6. Review existing logs and rotate any API key that may already have been recorded. ]]>

T09 · Insecure Skill Coding Practices

Error
Location
scripts/run_command.sh:225
Finding

Python Code Injection Through Shell Interpolation of JSON and Image Values

Content
View full analysis
/dev/null) ``` `scripts/run_command.sh:432-440`: ```bash BODY=$(python3 -c " import json, sys with open('${COMMANDS_FILE}') as f: cmds = json.load(f) template = cmds['${ACTION}']['body_template'] body_str = json.dumps(template) body_str = body_str.replace('{{image}}', '${IMAGE_URL}') print(body_str) " 2>/dev/null) ``` The same source-generation approach is also used when looking up missing-parameter messages: ```bash ASK_MSG=$(python3 -c " import json with open('${COMMANDS_FILE}') as f: cmds = json.load(f) ask = cmds.get('${ACTION}', {}).get('ask_if_missing', {}) print(ask.get('image', '请提供图片')) " 2>/dev/null) ``` ### Technical Analysis Runtime values are inserted directly into strings passed to `python3 -c`. Shell quoting does not make those values safe inside the generated Python source. A crafted JSON or image value containing the relevant quote sequence and Python syntax can terminate the intended string literal and introduce additional Python statements. This is not merely malformed JSON handling. The Python interpreter receives source code after shell expansion has already inserted attacker-controlled text. Consequently, an attacker who can influence `--input-json`, particularly the `image` property, may be able to execute arbitrary Python code with the privileges and environment of the Skill process. The use of triple single quotes around `INPUT_JSON` remains unsafe because an attacker can supply `'''`. The later single-quoted `IMAGE_URL` interpolation is similarly unsafe with a single quote. ### Attack Path 1. An attack ...[truncated 1238 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
scripts/sku_to_ecommerce_kit.py:32
Finding

Implicit Loading of Unrelated Credentials from Shared Workspace Environment Files

Content
View full analysis
None: p = pathlib.Path(path) if not p.exists(): return for line in p.read_text(encoding="utf-8").splitlines(): line = line.strip() if not line or line.startswith("#") or "=" not in line: continue k, v = line.split("=", 1) if k and k not in os.environ: os.environ[k] = v def ensure_db_env(env_file: Optional[str]) -> None: if env_file: load_env_file(env_file) else: for c in DEFAULT_ENV_CANDIDATES: load_env_file(c) ``` ```python ensure_db_env(args.env_file or None) ``` ### Technical Analysis When `--env-file` is not supplied, the SKU workflow automatically reads two hard-coded `.env` files located in other OpenClaw workspaces. The parser imports every key-value pair into the process environment rather than loading only the database variables needed for the SKU lookup. This behavior exceeds minimum privilege. The declared SKU functionality requires a narrow set of database settings and the DesignKit API key, but the implementation may ingest unrelated cloud credentials, API tokens, signing keys, or service configuration found in the shared files. Imported variables are inherited by the `ecommerce_product_kit.py` child process because `subprocess.run` uses the current environment by default. The root manifest declares `DESIGNKIT_OPENCLAW_AK` but does not clearly declare broad access to all secrets in `workspace-main/.env`. ### Attack Path 1. A user invokes `sku_to_ecommerce_kit.py` without `--env-file`. 2. The script ch ...[truncated 986 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/ecommerce_product_kit.py:474
Finding

Credentials and Local Images Can Be Redirected to Untrusted Network Destinations

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 ...", } def _http_request( method: str, url: str, body: Optional[bytes] = None, json_mode: bool = True, ) -> Tuple[int, Any]: headers = _headers_json() if json_mode and body else _headers_get() 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 urllib.request.urlopen(req, timeout=120) as resp: ... ``` `scripts/ecommerce_product_kit.py:474-545`: ```python policy_url_full = str((getsign_resp.get("data") or {}).get("upload_url") or "").strip() if not policy_url_full: _json_error(False, "UPLOAD_ERROR", "获取上传签名失败", "请检查网络连接或 API Key 后重试") policy_req = urllib.request.Request(policy_url_full) policy_req.add_header("Origin", "https://www.designkit.cn") policy_req.add_header("Referer", "https://www.designkit.cn/editor/") with urllib.request.urlopen(policy_req, timeout=30) as resp: arr = json. ...[truncated 3163 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
README.md:58
Finding

Unpinned Executable Installer and Mutable Repository Installation

Content
View full analysis
Remediation
View remediation
add ... ``` 2. Pin the repository to a specific reviewed commit or signed release tag. 3. Publish release checksums or signed provenance and verify them before installation. 4. Prefer a package registry artifact with immutable versioning over installation from a mutable branch. 5. Document the expected installer version and repository commit in the release notes. 6. Avoid automatic confirmation for security-sensitive installations where interactive review is practical. ]]>
Vulnerability Patterns
  • 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
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (58)

Tainted flow: 'policy_req' from os.environ.get (line 488, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · scripts/ecommerce_product_kit.py (reported line 492)May include surrounding context.

python
policy_req.add_header("Origin", "https://www.designkit.cn")
    policy_req.add_header("Referer", "https://www.designkit.cn/editor/")
    try:
        with urllib.request.urlopen(policy_req, timeout=30) as resp:
            code = resp.getcode() or 200
            raw_policy = resp.read().decode()
            _request_log_response_json("policy_response_body", raw_policy, code)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill advertises routing and image-processing features, but the documented behavior adds a third SKU-driven flow with undeclared database access, environment loading, and subprocess execution. That mismatch is risky because an agent may access internal data sources or invoke local scripts under the guise of a benign image task, expanding the trust boundary without clear user awareness or consent.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The skill advertises routing and image-processing features, but the documented behavior adds a third SKU-driven flow with undeclared database access, environment loading, and subprocess execution. That mismatch is risky because an agent may access internal data sources or invoke local scripts under the guise of a benign image task, expanding the trust boundary without clear user awareness or consent.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

This code prints a copy-pastable curl command containing the full X-Openclaw-AK value to stderr. In agent and tool environments, stderr is often persisted to logs or surfaced to users, turning a temporary runtime secret into a reusable credential disclosure that can enable unauthorized API access.

Content

No source excerpt is available for this finding.

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 449)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"

Credential Access

High
Category
Privilege Escalation
Confidence
86% confidence
Finding

The documented use of .env-backed DB credentials indicates the skill is designed to consume secrets for database access, which is a privileged capability not obviously required by an image-editing/routing skill. In this context, the issue is not the mention of .env itself but the coupling of secret handling with unrelated functionality, increasing the blast radius if the skill is misused.

Content

Scanner excerpt · scripts/sku_to_ecommerce_kit.py (reported line 18)May include surrounding context.

python
- DB_HOST / DB_PORT / DB_NAME / DB_USER / DB_PASSWORD / DB_SSLMODE

可选参数:
- --env-file 指定 .env 文件(默认会尝试读取 codex 工具的 .env)
"""
from __future__ import annotations

Credential Access

High
Category
Privilege Escalation
Confidence
98% confidence
Finding

This hard-coded .env path points to another workspace and enables the script to automatically ingest credentials from outside its own trust boundary. That is a strong secret-access anti-pattern because it can harvest unrelated tokens or database passwords without explicit operator intent.

Content

Scanner excerpt · scripts/sku_to_ecommerce_kit.py (reported line 33)May include surrounding context.

python
from typing import Any, Dict, List, Optional

DEFAULT_ENV_CANDIDATES = [
    "/root/.openclaw/workspace-codex/sql_flow/search_flow_yibai/.env",
    "/root/.openclaw/workspace-main/.env",
]

Credential Access

High
Category
Privilege Escalation
Confidence
98% confidence
Finding

Like the adjacent path, this second hard-coded .env candidate silently reaches into a separate workspace for credentials. In agent environments, this materially increases the risk of cross-project secret exposure and unauthorized access to systems unrelated to the declared skill purpose.

Content

Scanner excerpt · scripts/sku_to_ecommerce_kit.py (reported line 34)May include surrounding context.

python
DEFAULT_ENV_CANDIDATES = [
    "/root/.openclaw/workspace-codex/sql_flow/search_flow_yibai/.env",
    "/root/.openclaw/workspace-main/.env",
]

PROJECT_ROOT = pathlib.Path(__file__).resolve().parents[1]

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/sku_to_ecommerce_kit.py (reported line 318)May include surrounding context.

python
parser = argparse.ArgumentParser(description="SKU -> DesignKit 套图流水线")
    parser.add_argument("--sku", required=True, help="产品 SKU")
    parser.add_argument("--target-preset", default="walmart", choices=["walmart", "mercadolibre"], help="目标平台预设")
    parser.add_argument("--env-file", default="", help="可选 .env 文件路径")
    parser.add_argument("--table", default="yibai_product", help="产品表名,默认 yibai_product")
    parser.add_argument("--output-dir", default="", help="套图输出目录")
    parser.add_argument("--dry-run", action="store_true", help="仅查询SKU,不调用DesignKit")

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The natural-language instructions and usage guidance are entirely in Chinese, with no indication that other languages are supported or that the Chinese-only presentation is an intentional, justified regional constraint. This can constitute a language/locale policy issue when a skill effectively forces a specific language without user opt-in.

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 22)May include surrounding context.

md
- `SKILL.md`:根 Skill 入口
- `claw.json`:包元信息与触发词配置
- `api/commands.json`:编辑能力动作定义
- `skills/designkit-edit-tools/SKILL.md`:图片编辑子 Skill
- `skills/designkit-ecommerce-product-kit/SKILL.md`:电商套图子 Skill
- `scripts/run_command.sh`:通用图片编辑执行脚本
- `scripts/run_ecommerce_kit.sh`:电商套图执行入口

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 121)May include surrounding context.

md
- `SKILL.md`:根 Skill 入口
- `claw.json`:包元信息与触发词配置
- `api/commands.json`:编辑能力动作定义
- `skills/designkit-edit-tools/SKILL.md`:图片编辑子 Skill
- `skills/designkit-ecommerce-product-kit/SKILL.md`:电商套图子 Skill
- `scripts/run_command.sh`:通用图片编辑执行脚本
- `scripts/run_ecommerce_kit.sh`:电商套图执行入口

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 28)May include surrounding context.

json
- `SKILL.md`:根 Skill 入口
- `claw.json`:包元信息与触发词配置
- `api/commands.json`:编辑能力动作定义
- `skills/designkit-edit-tools/SKILL.md`:图片编辑子 Skill
- `skills/designkit-ecommerce-product-kit/SKILL.md`:电商套图子 Skill
- `scripts/run_command.sh`:通用图片编辑执行脚本
- `scripts/run_ecommerce_kit.sh`:电商套图执行入口

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 · scripts/build_well_known.py (reported line 45)May include surrounding context.

python
- `SKILL.md`:根 Skill 入口
- `claw.json`:包元信息与触发词配置
- `api/commands.json`:编辑能力动作定义
- `skills/designkit-edit-tools/SKILL.md`:图片编辑子 Skill
- `skills/designkit-ecommerce-product-kit/SKILL.md`:电商套图子 Skill
- `scripts/run_command.sh`:通用图片编辑执行脚本
- `scripts/run_ecommerce_kit.sh`:电商套图执行入口

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 · scripts/build_well_known.py (reported line 54)May include surrounding context.

python
- `SKILL.md`:根 Skill 入口
- `claw.json`:包元信息与触发词配置
- `api/commands.json`:编辑能力动作定义
- `skills/designkit-edit-tools/SKILL.md`:图片编辑子 Skill
- `skills/designkit-ecommerce-product-kit/SKILL.md`:电商套图子 Skill
- `scripts/run_command.sh`:通用图片编辑执行脚本
- `scripts/run_ecommerce_kit.sh`:电商套图执行入口

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 23)May include surrounding context.

md
- `claw.json`:包元信息与触发词配置
- `api/commands.json`:编辑能力动作定义
- `skills/designkit-edit-tools/SKILL.md`:图片编辑子 Skill
- `skills/designkit-ecommerce-product-kit/SKILL.md`:电商套图子 Skill
- `scripts/run_command.sh`:通用图片编辑执行脚本
- `scripts/run_ecommerce_kit.sh`:电商套图执行入口
- `scripts/ecommerce_product_kit.py`:电商套图核心逻辑

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 41)May include surrounding context.

md
- `claw.json`:包元信息与触发词配置
- `api/commands.json`:编辑能力动作定义
- `skills/designkit-edit-tools/SKILL.md`:图片编辑子 Skill
- `skills/designkit-ecommerce-product-kit/SKILL.md`:电商套图子 Skill
- `scripts/run_command.sh`:通用图片编辑执行脚本
- `scripts/run_ecommerce_kit.sh`:电商套图执行入口
- `scripts/ecommerce_product_kit.py`:电商套图核心逻辑

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 122)May include surrounding context.

md
- `claw.json`:包元信息与触发词配置
- `api/commands.json`:编辑能力动作定义
- `skills/designkit-edit-tools/SKILL.md`:图片编辑子 Skill
- `skills/designkit-ecommerce-product-kit/SKILL.md`:电商套图子 Skill
- `scripts/run_command.sh`:通用图片编辑执行脚本
- `scripts/run_ecommerce_kit.sh`:电商套图执行入口
- `scripts/ecommerce_product_kit.py`:电商套图核心逻辑

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
- `claw.json`:包元信息与触发词配置
- `api/commands.json`:编辑能力动作定义
- `skills/designkit-edit-tools/SKILL.md`:图片编辑子 Skill
- `skills/designkit-ecommerce-product-kit/SKILL.md`:电商套图子 Skill
- `scripts/run_command.sh`:通用图片编辑执行脚本
- `scripts/run_ecommerce_kit.sh`:电商套图执行入口
- `scripts/ecommerce_product_kit.py`:电商套图核心逻辑

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 32)May include surrounding context.

json
- `claw.json`:包元信息与触发词配置
- `api/commands.json`:编辑能力动作定义
- `skills/designkit-edit-tools/SKILL.md`:图片编辑子 Skill
- `skills/designkit-ecommerce-product-kit/SKILL.md`:电商套图子 Skill
- `scripts/run_command.sh`:通用图片编辑执行脚本
- `scripts/run_ecommerce_kit.sh`:电商套图执行入口
- `scripts/ecommerce_product_kit.py`:电商套图核心逻辑

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 · scripts/build_well_known.py (reported line 44)May include surrounding context.

python
- `claw.json`:包元信息与触发词配置
- `api/commands.json`:编辑能力动作定义
- `skills/designkit-edit-tools/SKILL.md`:图片编辑子 Skill
- `skills/designkit-ecommerce-product-kit/SKILL.md`:电商套图子 Skill
- `scripts/run_command.sh`:通用图片编辑执行脚本
- `scripts/run_ecommerce_kit.sh`:电商套图执行入口
- `scripts/ecommerce_product_kit.py`:电商套图核心逻辑

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 · scripts/build_well_known.py (reported line 70)May include surrounding context.

python
- `claw.json`:包元信息与触发词配置
- `api/commands.json`:编辑能力动作定义
- `skills/designkit-edit-tools/SKILL.md`:图片编辑子 Skill
- `skills/designkit-ecommerce-product-kit/SKILL.md`:电商套图子 Skill
- `scripts/run_command.sh`:通用图片编辑执行脚本
- `scripts/run_ecommerce_kit.sh`:电商套图执行入口
- `scripts/ecommerce_product_kit.py`:电商套图核心逻辑

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.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding

Without declared permissions the skill's intent is opaque and cannot be validated.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The top-level description omits the SKU-to-image generation and database-query capability even though the body documents it as a routed function. Undisclosed data-access functionality weakens informed consent and makes it easier for a seemingly harmless media skill to trigger backend lookups or data processing outside user expectations.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.