Back to skill

Security audit

zhanfu-cdp

Security checks for vulnerabilities and agentic risk

Overview

The skill is transparent about controlling ZhanFu stores, but it includes high-impact store/account/cache operations and cache deletion can run without an enforced confirmation check.

Install only if you intend to let the agent manage ZhanFu stores through your local logged-in account, including creating stores, changing store credentials, setting plugins, and clearing cache. Treat cache-clearing commands as irreversible and require explicit confirmation outside the helper before use.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/zhanfu_ops.mjs:199
Finding

Destructive cache deletion lacks executable confirmation enforcement

Content
View full analysis

Vulnerability Details

File Location: scripts/zhanfu_ops.mjs:199-231, 283-289
Vulnerability Type: Destructive operation without enforced confirmation
Risk Level: Medium

Complete Code Snippet

js
async function cmdClearCache(ns) {
  if (ns.all) {
    const blocked = needWin("ClearCacheFolder");
    if (blocked != null) return blocked;
    const port = tryPreferredPort();
    if (port == null) return emitZhanfuDown();
    const data = await call("ClearCacheFolder", { args: "{}", timeout: 30, port });
    const ro = data.returnObj || {};
    if (typeof ro !== "object" || ro.success !== true) {
      const msg = typeof ro === "object" ? ro.msg : data;
      console.log(String(msg));
      return emit({ ok: false, status: "failed", msg: String(msg) }, 1);
    }
    clearOpeningMalls();
    clearOpenedMalls();
    console.log("已清除全部店铺缓存。");
    return emit({ ok: true, status: "cleared_all" }, 0);
  }

  const blocked = needWin("ClearCache");
  if (blocked != null) return blocked;
  if (!ns.mallName) {
    console.log("单店清缓存需要 --mall-name,或使用 --all");
    return emit({ ok: false, status: "missing_args" }, 1);
  }
  const port = tryPreferredPort();
  if (port == null) return emitZhanfuDown();
  let mallId = await resolveMallId(ns.mallName, { port });
  let data = await call("ClearCache", { browserId: mallId, args: "", timeout: 30, port });
  let ro = data.returnObj || {};
  if (typeof ro !== "object" || ro.success !== true) {
    mallId = await resolveMallIdRefreshOnce(ns.mallName, port);
    data = await call("ClearCache", { browserId: mallId, args: "", timeout: 30, port });
    ro = data.returnObj || {};
  }
  if (typeof ro !== "object" || ro.success !== true) {
    const msg = typeof ro === "object" ? ro.msg : data;
    console.log(String(msg));
    return emit({ ok: false, status: "failed", msg: String(msg) }, 1);
  }
  removeOpeningMall(ns.mallName);
  unmarkMallOpened(ns.mallName);
  console.log(`已清除店铺 ${ns.mallName} 缓存。mall_id=${mallId}`)
...[truncated 2437 chars]
Remediation
View remediation

Remediation Suggestions

  1. Require an explicit, non-default confirmation capability:
    • --confirm-clear-all for global deletion.
    • --confirm-mall TARGET_SHOP matching the exact --mall-name value for single-shop deletion.
  2. Reject execution unless the appropriate confirmation value is present and valid.
  3. Add a dry-run mode that displays the exact shop or global scope without invoking ClearCache or ClearCacheFolder.
  4. For interactive use, show the affected scope and require a precise confirmation phrase rather than a generic yes/no response.
  5. Keep the confirmation requirement in SKILL.md, but treat it as supplementary guidance rather than the security control.
  6. Add automated tests verifying that both deletion paths fail closed when confirmation is absent, malformed, or refers to a different shop.
  7. Consider requiring a fresh confirmation nonce generated after displaying the deletion scope, preventing stale or accidentally reused command arguments.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (50)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
路径:Skill 目录下 `[opening_malls.json](opening_malls.json)`(与 `SKILL.md` 同级)。

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
路径:Skill 目录下 `[opening_malls.json](opening_malls.json)`(与 `SKILL.md` 同级)。

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [scripts/zhanfu_http.mjs](scripts/zhanfu_http.mjs) — 公共 HTTP 库(`browserId` 强制字符串)

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The script explicitly performs a pre-run GetBrowserList call and writes the returned shop metadata to a local cache, directly contradicting the skill manifest's requirement to immediately execute open_mall for store-only flows. In a security-sensitive agent environment, this kind of undocumented or prohibited enumeration increases data exposure and creates unauthorized collection/persistence of account, store, and IP-related metadata.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

After a successful login, the script immediately calls GetBrowserList and persists mall/shop data to cache, even though the skill description explicitly forbids prior listing behavior. This expands the script from authentication into account data enumeration and local state modification, creating unnecessary data exposure and violating least-privilege expectations for a login action.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

This script exposes high-impact operational actions far beyond the skill’s declared scope of Playwright/CDP page automation, including store creation, account credential changes, plugin installation control, download path modification, and cache clearing. In an agent setting, this scope mismatch is dangerous because callers may trust the manifest while the implementation can alter persistent application state, credentials, and environment configuration, increasing the chance of unauthorized or unexpected admin actions.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill describes and operationalizes shell execution, local environment/file access, and localhost network access, but declares no explicit tool scope or permission boundaries. This increases the risk that an agent may invoke powerful capabilities by default without user-visible least-privilege constraints, especially since the skill includes commands that open stores, modify account data, clear cache, and connect to local services.

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 says 'open store only' should immediately run a script and end, yet the rest of the document contains many additional workflows and follow-on actions. This inconsistency creates instruction ambiguity that can cause an agent to take broader actions than a reviewer or user would expect.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The file repeatedly mandates exact Chinese responses to users, such as the one-line reply templates and later required verbatim Chinese messages. This imposes a specific language on all interactions without indicating user preference, opt-in, or a justified locale restriction.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The manifest frames the skill as opening stores or doing page automation, but the body also authorizes broader state-changing actions including store creation, credential updates, cache deletion, plugin configuration, and download-path changes. This scope mismatch can mislead users and downstream policy systems, causing more-privileged behavior to run under a narrower trust assumption.

Content

No source excerpt is available for this finding.

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

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

md
> **同义**:客户说「**战斧**」=「**站斧**」(业务用语同义)。本技能**不支持**打开 / 关闭 / 重启站斧客户端;此类意图 → **停止**并说明不支持。


| 客户意图                       | `GetBrowserList` 探测        | 动作                                                                                                                                                    |
| -------------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| **打开店铺**                   | **跳过**(禁止事先探测)            | 按文首「仅开店」:`open_mall.mjs` → 一句话结束(勿读后文) |
| **关闭店铺**                   | **能取到数据**或有 HTTP 响应        | 直接 HTTP:resolve mall_id → `CloseBrowser` → **从 `opening_malls.json` 去掉该店铺名**                                           |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

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

md
| **清空插件列表**                 | **能取到数据**或有 HTTP 响应        | **仅 Windows**;macOS → 告知暂不支持并停止。Windows:`SetInstallPlugins([])` → `ClearCache` → `OpenBrowser`                                                        |
| **清除全部缓存**                 | **能取到数据**或有 HTTP 响应        | **仅 Windows**;macOS → 告知暂不支持并停止。Windows:确认后 `ClearCacheFolder` → 清空 `opening_malls.json`                                                              |
| **清除单店缓存**                 | **能取到数据**或有 HTTP 响应        | **仅 Windows**;macOS → 告知暂不支持并停止。Windows:确认后 `ClearCache` → 从 `opening_malls.json` 去掉该店                                                                |
| **打开 / 关闭 / 重启站斧(客户端)**    | 任意                         | **本技能不支持客户端启停** → **停止**并说明不支持                                                                                                                         |
| **打开 / 关闭店铺**              | **无响应** / **非站斧占用** / 无 Http.ini | **提示「请打开最新的站斧」并停止**                                                                                                                         |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

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

md
| **清空插件列表**                 | **能取到数据**或有 HTTP 响应        | **仅 Windows**;macOS → 告知暂不支持并停止。Windows:`SetInstallPlugins([])` → `ClearCache` → `OpenBrowser`                                                        |
| **清除全部缓存**                 | **能取到数据**或有 HTTP 响应        | **仅 Windows**;macOS → 告知暂不支持并停止。Windows:确认后 `ClearCacheFolder` → 清空 `opening_malls.json`                                                              |
| **清除单店缓存**                 | **能取到数据**或有 HTTP 响应        | **仅 Windows**;macOS → 告知暂不支持并停止。Windows:确认后 `ClearCache` → 从 `opening_malls.json` 去掉该店                                                                |
| **打开 / 关闭 / 重启站斧(客户端)**    | 任意                         | **本技能不支持客户端启停** → **停止**并说明不支持                                                                                                                         |
| **打开 / 关闭店铺**              | **无响应** / **非站斧占用** / 无 Http.ini | **提示「请打开最新的站斧」并停止**                                                                                                                         |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

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

md
通讯**只认**该文件的 `httpport`。文件不存在、读不到合法端口、或该端口连不上 → **「请打开最新的站斧」**。不写 Skill 目录端口缓存。

| 时机                                 | 动作                                                                                   |
| ---------------------------------- | ------------------------------------------------------------------------------------ |
| 仅开店                                 | **跳过**本节探测,直接 `open_mall.mjs`(脚本自己读 Http.ini)                                        |
| 其他任务开始                             | **先读** `Http.ini` 的 `httpport`                                                        |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

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

md
> **禁止**再用 `CheckClientOpen` 的 `LoadSuccess` / `LoadFailed` 判断站斧是否已打开。「模块 undefined 未加载」等说明该端口上**已有 HTTP 服务**;若确认为站斧 WebDriver,用正确 JSON 的 `GetBrowserList` 重发即可;若是**非站斧**服务,提示「请打开最新的站斧」并停止。


| 场景                       | 动作                                                                                         |
| ------------------------ | ------------------------------------------------------------------------------------------ |
| **打开店铺**                   | `node scripts/open_mall.mjs --mall-name {店铺名}`(禁止事先 GetBrowserList)           |
| 站斧已打开 + **关闭店铺**         | resolve mall_id → `CloseBrowser` → 清理 `opening_malls.json`                         |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

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

md
> **禁止**再用 `CheckClientOpen` 的 `LoadSuccess` / `LoadFailed` 判断站斧是否已打开。「模块 undefined 未加载」等说明该端口上**已有 HTTP 服务**;若确认为站斧 WebDriver,用正确 JSON 的 `GetBrowserList` 重发即可;若是**非站斧**服务,提示「请打开最新的站斧」并停止。


| 场景                       | 动作                                                                                         |
| ------------------------ | ------------------------------------------------------------------------------------------ |
| **打开店铺**                   | `node scripts/open_mall.mjs --mall-name {店铺名}`(禁止事先 GetBrowserList)           |
| 站斧已打开 + **关闭店铺**         | resolve mall_id → `CloseBrowser` → 清理 `opening_malls.json`                         |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

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

md
## 失败处理(统一)


| 情况                                                 | 动作                                                                                                                  |
| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| 目标端口无 HTTP 响应 / 非站斧占用 / 无 Http.ini                     | **提示「请打开最新的站斧」并停止** |
| **打开店铺**(任意)                                      | 文首「仅开店」:禁止事先探测;`open_mall.mjs` → 一句话结束 |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

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

md
| `GetBrowserList` 能取到数据 + **关闭店铺**                  | resolve mall_id → `CloseBrowser` → 清理 `opening_malls.json`                                                  |
| `open_mall.mjs` 返回 `zhanfu_down`                      | **提示「请打开最新的站斧」并停止**                                                                                         |
| 目标店铺已打开(客户要求**打开**)                                | 告知 `WebDriverPort` 并结束;**禁止**追问是否关闭;仅客户明确要求关店/重开才 `CloseBrowser` / 再开                                                              |
| OpenBrowser 前 `GetBrowserWebDriver` **5s 超时**      | **不结束**;继续 `OpenBrowser`(只许探测 1 次)                                                                                  |
| 客户明确要求关闭已开店铺                                       | 直接 `CloseBrowser` → 清理 `opening_malls.json`                                                                         |
| 客户要求打开/关闭/重启站斧客户端                                 | **本技能不支持** → 停止并说明                                                                                                          |
| GetBrowserList 8s 内仍无法确认登录(**非开店**且确认为站斧 WebDriver) | **停止**,提示客户提供账号密码;**禁止**擅自或内测账号 Login;**禁止**用 `LoadSuccess` 判断。若其实是非站斧占用,提示「请打开最新的站斧」 |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

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

md
| 目标店铺已打开(客户要求**打开**)                                | 告知 `WebDriverPort` 并结束;**禁止**追问是否关闭;仅客户明确要求关店/重开才 `CloseBrowser` / 再开                                                              |
| OpenBrowser 前 `GetBrowserWebDriver` **5s 超时**      | **不结束**;继续 `OpenBrowser`(只许探测 1 次)                                                                                  |
| 客户明确要求关闭已开店铺                                       | 直接 `CloseBrowser` → 清理 `opening_malls.json`                                                                         |
| 客户要求打开/关闭/重启站斧客户端                                 | **本技能不支持** → 停止并说明                                                                                                          |
| GetBrowserList 8s 内仍无法确认登录(**非开店**且确认为站斧 WebDriver) | **停止**,提示客户提供账号密码;**禁止**擅自或内测账号 Login;**禁止**用 `LoadSuccess` 判断。若其实是非站斧占用,提示「请打开最新的站斧」 |
| OpenBrowser / OpenBrowser 后 GetBrowserWebDriver 失败 | 立即结束;`OpenBrowser` 以 `returnObj===true` 判成功;提醒检查 **IP/设备绑定** 及 **是否已手动打开该店铺下载内核**(版本要求:Windows ≥ 5.2.12,macOS > 5.2.10)                     |
| **macOS** 且 `KernalNumber ≤ 130`(打开/复用店铺后) | **立即停止**;按「macOS 低内核对客户话术」提示:切换到 **130 以上**内核或请**主账号**切换,并请客户**手动重启站斧**后再继续;**禁止**阶段 B |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

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

md
| GetBrowserList 8s 内仍无法确认登录(**非开店**且确认为站斧 WebDriver) | **停止**,提示客户提供账号密码;**禁止**擅自或内测账号 Login;**禁止**用 `LoadSuccess` 判断。若其实是非站斧占用,提示「请打开最新的站斧」 |
| OpenBrowser / OpenBrowser 后 GetBrowserWebDriver 失败 | 立即结束;`OpenBrowser` 以 `returnObj===true` 判成功;提醒检查 **IP/设备绑定** 及 **是否已手动打开该店铺下载内核**(版本要求:Windows ≥ 5.2.12,macOS > 5.2.10)                     |
| **macOS** 且 `KernalNumber ≤ 130`(打开/复用店铺后) | **立即停止**;按「macOS 低内核对客户话术」提示:切换到 **130 以上**内核或请**主账号**切换,并请客户**手动重启站斧**后再继续;**禁止**阶段 B |
| CloseBrowser 返回 `returnObj===false`                | 立即结束,报告关闭失败                                                                                                         |
| 其他关键 API 失败                                        | 立即结束,原样报告 `returnObj.msg`(`OpenBrowser`/`CloseBrowser` 无 `msg` 时报告 `returnObj` 值)                                   |
| OpenBrowser 后拿不到 WebDriverPort                     | 立即结束,不 retry                                                                                                        |
| 仅开店却跑了设备安全检测 / 阶段 B                              | **禁止**;应拿到端口即停                                                                                                     |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

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

md
| GetBrowserList 8s 内仍无法确认登录(**非开店**且确认为站斧 WebDriver) | **停止**,提示客户提供账号密码;**禁止**擅自或内测账号 Login;**禁止**用 `LoadSuccess` 判断。若其实是非站斧占用,提示「请打开最新的站斧」 |
| OpenBrowser / OpenBrowser 后 GetBrowserWebDriver 失败 | 立即结束;`OpenBrowser` 以 `returnObj===true` 判成功;提醒检查 **IP/设备绑定** 及 **是否已手动打开该店铺下载内核**(版本要求:Windows ≥ 5.2.12,macOS > 5.2.10)                     |
| **macOS** 且 `KernalNumber ≤ 130`(打开/复用店铺后) | **立即停止**;按「macOS 低内核对客户话术」提示:切换到 **130 以上**内核或请**主账号**切换,并请客户**手动重启站斧**后再继续;**禁止**阶段 B |
| CloseBrowser 返回 `returnObj===false`                | 立即结束,报告关闭失败                                                                                                         |
| 其他关键 API 失败                                        | 立即结束,原样报告 `returnObj.msg`(`OpenBrowser`/`CloseBrowser` 无 `msg` 时报告 `returnObj` 值)                                   |
| OpenBrowser 后拿不到 WebDriverPort                     | 立即结束,不 retry                                                                                                        |
| 仅开店却跑了设备安全检测 / 阶段 B                              | **禁止**;应拿到端口即停                                                                                                     |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

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

md
| **macOS** 且 `KernalNumber ≤ 130`(打开/复用店铺后) | **立即停止**;按「macOS 低内核对客户话术」提示:切换到 **130 以上**内核或请**主账号**切换,并请客户**手动重启站斧**后再继续;**禁止**阶段 B |
| CloseBrowser 返回 `returnObj===false`                | 立即结束,报告关闭失败                                                                                                         |
| 其他关键 API 失败                                        | 立即结束,原样报告 `returnObj.msg`(`OpenBrowser`/`CloseBrowser` 无 `msg` 时报告 `returnObj` 值)                                   |
| OpenBrowser 后拿不到 WebDriverPort                     | 立即结束,不 retry                                                                                                        |
| 仅开店却跑了设备安全检测 / 阶段 B                              | **禁止**;应拿到端口即停                                                                                                     |
| 设备安全检测 15s 超时                                      | 立即结束,告知「没检测成功无法进行自动化」(仅页面自动化)                                                                                               |
| CDP 连接失败                                           | 立即结束,禁止换浏览器                                                                                                         |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

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

md
| CloseBrowser 返回 `returnObj===false`                | 立即结束,报告关闭失败                                                                                                         |
| 其他关键 API 失败                                        | 立即结束,原样报告 `returnObj.msg`(`OpenBrowser`/`CloseBrowser` 无 `msg` 时报告 `returnObj` 值)                                   |
| OpenBrowser 后拿不到 WebDriverPort                     | 立即结束,不 retry                                                                                                        |
| 仅开店却跑了设备安全检测 / 阶段 B                              | **禁止**;应拿到端口即停                                                                                                     |
| 设备安全检测 15s 超时                                      | 立即结束,告知「没检测成功无法进行自动化」(仅页面自动化)                                                                                               |
| CDP 连接失败                                           | 立即结束,禁止换浏览器                                                                                                         |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

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

md
| 其他关键 API 失败                                        | 立即结束,原样报告 `returnObj.msg`(`OpenBrowser`/`CloseBrowser` 无 `msg` 时报告 `returnObj` 值)                                   |
| OpenBrowser 后拿不到 WebDriverPort                     | 立即结束,不 retry                                                                                                        |
| 仅开店却跑了设备安全检测 / 阶段 B                              | **禁止**;应拿到端口即停                                                                                                     |
| 设备安全检测 15s 超时                                      | 立即结束,告知「没检测成功无法进行自动化」(仅页面自动化)                                                                                               |
| CDP 连接失败                                           | 立即结束,禁止换浏览器                                                                                                         |

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill documentation begins in Chinese and continues throughout in a way that prescribes a single language/locale for use. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is explicitly justified.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dangerous_exec, suspicious.dynamic_code_execution, suspicious.env_credential_access (+2 more)

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/ensure_deps.mjs:16

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/node_modules/playwright-core/lib/utilsBundle.js:45943

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/open_malls.mjs:24

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/zhanfu_http.mjs:474

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/node_modules/playwright-core/lib/coreBundle.js:9105

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/node_modules/playwright-core/lib/utilsBundle.js:35630

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-Ds6CBOo0.js:54

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/node_modules/playwright-core/types/protocol.d.ts:22505

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/node_modules/playwright/lib/common/index.js:1077

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/node_modules/playwright/lib/transform/esmLoader.js:7849

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
scripts/node_modules/playwright-core/lib/coreBundle.js:6920

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
scripts/node_modules/playwright-core/lib/utilsBundle.js:124

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
scripts/node_modules/playwright-core/types/types.d.ts:23915

Potential obfuscated payload detected.

Warn
Code
suspicious.obfuscated_code
Location
scripts/node_modules/playwright-core/lib/utilsBundle.js:1917

Potential obfuscated payload detected.

Warn
Code
suspicious.obfuscated_code
Location
scripts/node_modules/playwright-core/lib/vite/dashboard/assets/codeMirrorModule-CQ8RZGBm.js:24

Potential obfuscated payload detected.

Warn
Code
suspicious.obfuscated_code
Location
scripts/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-CVQWJZAA.js:24

Potential obfuscated payload detected.

Warn
Code
suspicious.obfuscated_code
Location
scripts/node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-BbkfBe3n.js:24

Sensitive-looking file read is paired with a network send.

Warn
Code
suspicious.potential_exfiltration
Location
scripts/node_modules/playwright-core/lib/coreBundle.js:8453

Sensitive-looking file read is paired with a network send.

Warn
Code
suspicious.potential_exfiltration
Location
scripts/node_modules/playwright-core/types/types.d.ts:20855