Back to skill

Security audit

观远 BI · 马甲实战版

Security checks across malware telemetry and agentic risk

Overview

This skill is a disclosed Guandata BI operations helper with powerful BI write/delete guidance, but its high-impact actions are purpose-aligned and gated by user-confirmation instructions.

Install only if you administer or develop on Guandata BI and are comfortable giving an agent guidance for BI writes, dashboard publishing, and carefully gated deletion workflows. Review destructive commands before use and require explicit resource IDs, names, and backup/rebuild confidence before approving deletes.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (5)

Lp3

Medium
Category
MCP Least Privilege
Confidence
81% confidence
Finding
The skill declares no explicit permissions, yet the content documents shell execution, local file reads/writes, and installation/copy operations into agent skill directories under the user's home directory. This hidden capability expansion undermines informed consent and can enable unexpected modification of local agent configuration or persistence surfaces.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
The declared purpose frames the skill as BI/ETL guidance, but the content also includes local environment discovery, installation target selection, reading installed SKILL.md/package.json files, and writing into ~/.claude, ~/.openclaw, ~/.codex, and ~/.agents. That mismatch is dangerous because users and orchestrators may route the skill with low suspicion while it contains host-modifying behaviors unrelated to the advertised analytical role.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
>
> **架构**:v7 BI 的草稿/发布分离机制使**手撸 `/api/page` + `/api/card` 全链路废弃**;银弹是官方 `guanvis`(原 `guanvis-skill`,全家桶成员,现公网 `@guandata/guanvis@0.1.41`),`guanskill install-skill && guanvis publish .` 30 秒一键发布整个 page + custom chart + dataView,跳过所有草稿/发布的状态机。桌面端 另有 `guanvis live` 对话式路径(`live project validate/publish` 走完整 DSL;**不得用 P0 命令模拟自定义图表**,C-12 descriptor patch / 60004 / phoneLayout 仍走本 Part)。配套硬规则:CSV 散客 `会员ID` 是 `""` 不是 NULL(三态判断必须 `IS NOT NULL AND <> ''`);STRING 字段才能 `<> ''`,日期/数字 Spark 严格类型不行;Spark CTE 别名必须英文;ETL update 必须带 `OUTPUT_DATASET.dataSource.dsId` 否则 1012;数据集上传 / 建集走官方 `guands`(`create-db` / `import` / `replace-data`,不必再 BI UI 手动);大表 pandas 用 `to_csv` 而非 `to_excel`(50 倍速差)。
>
> 🗑️ **删除 guanvis-published 页面 / ETL(2026-06-05 · workshop513 实测)**:`guanvis publish` 出的页面,卡片**内嵌在 `page.cards` + `meta.layout`、不是独立 `/api/card` 资源**——所以 `DELETE /api/card/<cdId>` 报 `1002 找不到`、`DELETE /api/page/<id>` 报 `1004 无法删除包含卡片的页面`、guanvis 也不让覆盖成空页(validation 拒 `No layout items`)。**唯一可行**:`guancli fetch DELETE "/api/page/<pgId>?force=true"` → `Page deleted`(级联删卡)。⚠️ **`force=true` 级联删整页内嵌卡片且不可逆,属 B-7.0 安全闸覆盖的 DELETE**:执行前用户须逐项确认页 ID + 页名(模糊回复不算确认)。**仅当本地保有该 page 的 guanvis 源(`page.js` / card 定义)可 `guanvis publish` 重建时,确认即可、无需对账;若是 BI UI 手搭、本地无源的发布页,按不可逆 DELETE 对待、走 B-7.0 完整对账。** 删 ETL + 输出集 → **先删输出数据集、再删 ETL**(与 B-7.1 一致;2026-06-17 实测:反过来先删 ETL 撞 `2002 输出数据集已存在`,ds-first 不报 6001);`guanetl delete --cascade` 0.1.14 起已无此命令。
>
> **不能跳的硬约束**(2026-05-20/21 v7 demo 实战 · 90 天 / 1200 门店 / 80K 会员 / 20 表 / 17 ETL / 6 HTML 看板):
> 1. **直接手撸 page+card API 全废**:draft cdId ≠ published cdId 不会自动映射回 published page,光走 `POST /api/page` 拼不出来;走 `guanvis publish` 才能跨过状态机。
Confidence
78% confidence
Finding
DELETE /api/card/<cdId>`

Tool Parameter Abuse

High
Category
Tool Misuse
Content
>
> **架构**:v7 BI 的草稿/发布分离机制使**手撸 `/api/page` + `/api/card` 全链路废弃**;银弹是官方 `guanvis`(原 `guanvis-skill`,全家桶成员,现公网 `@guandata/guanvis@0.1.41`),`guanskill install-skill && guanvis publish .` 30 秒一键发布整个 page + custom chart + dataView,跳过所有草稿/发布的状态机。桌面端 另有 `guanvis live` 对话式路径(`live project validate/publish` 走完整 DSL;**不得用 P0 命令模拟自定义图表**,C-12 descriptor patch / 60004 / phoneLayout 仍走本 Part)。配套硬规则:CSV 散客 `会员ID` 是 `""` 不是 NULL(三态判断必须 `IS NOT NULL AND <> ''`);STRING 字段才能 `<> ''`,日期/数字 Spark 严格类型不行;Spark CTE 别名必须英文;ETL update 必须带 `OUTPUT_DATASET.dataSource.dsId` 否则 1012;数据集上传 / 建集走官方 `guands`(`create-db` / `import` / `replace-data`,不必再 BI UI 手动);大表 pandas 用 `to_csv` 而非 `to_excel`(50 倍速差)。
>
> 🗑️ **删除 guanvis-published 页面 / ETL(2026-06-05 · workshop513 实测)**:`guanvis publish` 出的页面,卡片**内嵌在 `page.cards` + `meta.layout`、不是独立 `/api/card` 资源**——所以 `DELETE /api/card/<cdId>` 报 `1002 找不到`、`DELETE /api/page/<id>` 报 `1004 无法删除包含卡片的页面`、guanvis 也不让覆盖成空页(validation 拒 `No layout items`)。**唯一可行**:`guancli fetch DELETE "/api/page/<pgId>?force=true"` → `Page deleted`(级联删卡)。⚠️ **`force=true` 级联删整页内嵌卡片且不可逆,属 B-7.0 安全闸覆盖的 DELETE**:执行前用户须逐项确认页 ID + 页名(模糊回复不算确认)。**仅当本地保有该 page 的 guanvis 源(`page.js` / card 定义)可 `guanvis publish` 重建时,确认即可、无需对账;若是 BI UI 手搭、本地无源的发布页,按不可逆 DELETE 对待、走 B-7.0 完整对账。** 删 ETL + 输出集 → **先删输出数据集、再删 ETL**(与 B-7.1 一致;2026-06-17 实测:反过来先删 ETL 撞 `2002 输出数据集已存在`,ds-first 不报 6001);`guanetl delete --cascade` 0.1.14 起已无此命令。
>
> **不能跳的硬约束**(2026-05-20/21 v7 demo 实战 · 90 天 / 1200 门店 / 80K 会员 / 20 表 / 17 ETL / 6 HTML 看板):
> 1. **直接手撸 page+card API 全废**:draft cdId ≠ published cdId 不会自动映射回 published page,光走 `POST /api/page` 拼不出来;走 `guanvis publish` 才能跨过状态机。
Confidence
78% confidence
Finding
DELETE /api/page/<id>`

Tool Parameter Abuse

High
Category
Tool Misuse
Content
>
> **架构**:v7 BI 的草稿/发布分离机制使**手撸 `/api/page` + `/api/card` 全链路废弃**;银弹是官方 `guanvis`(原 `guanvis-skill`,全家桶成员,现公网 `@guandata/guanvis@0.1.41`),`guanskill install-skill && guanvis publish .` 30 秒一键发布整个 page + custom chart + dataView,跳过所有草稿/发布的状态机。桌面端 另有 `guanvis live` 对话式路径(`live project validate/publish` 走完整 DSL;**不得用 P0 命令模拟自定义图表**,C-12 descriptor patch / 60004 / phoneLayout 仍走本 Part)。配套硬规则:CSV 散客 `会员ID` 是 `""` 不是 NULL(三态判断必须 `IS NOT NULL AND <> ''`);STRING 字段才能 `<> ''`,日期/数字 Spark 严格类型不行;Spark CTE 别名必须英文;ETL update 必须带 `OUTPUT_DATASET.dataSource.dsId` 否则 1012;数据集上传 / 建集走官方 `guands`(`create-db` / `import` / `replace-data`,不必再 BI UI 手动);大表 pandas 用 `to_csv` 而非 `to_excel`(50 倍速差)。
>
> 🗑️ **删除 guanvis-published 页面 / ETL(2026-06-05 · workshop513 实测)**:`guanvis publish` 出的页面,卡片**内嵌在 `page.cards` + `meta.layout`、不是独立 `/api/card` 资源**——所以 `DELETE /api/card/<cdId>` 报 `1002 找不到`、`DELETE /api/page/<id>` 报 `1004 无法删除包含卡片的页面`、guanvis 也不让覆盖成空页(validation 拒 `No layout items`)。**唯一可行**:`guancli fetch DELETE "/api/page/<pgId>?force=true"` → `Page deleted`(级联删卡)。⚠️ **`force=true` 级联删整页内嵌卡片且不可逆,属 B-7.0 安全闸覆盖的 DELETE**:执行前用户须逐项确认页 ID + 页名(模糊回复不算确认)。**仅当本地保有该 page 的 guanvis 源(`page.js` / card 定义)可 `guanvis publish` 重建时,确认即可、无需对账;若是 BI UI 手搭、本地无源的发布页,按不可逆 DELETE 对待、走 B-7.0 完整对账。** 删 ETL + 输出集 → **先删输出数据集、再删 ETL**(与 B-7.1 一致;2026-06-17 实测:反过来先删 ETL 撞 `2002 输出数据集已存在`,ds-first 不报 6001);`guanetl delete --cascade` 0.1.14 起已无此命令。
>
> **不能跳的硬约束**(2026-05-20/21 v7 demo 实战 · 90 天 / 1200 门店 / 80K 会员 / 20 表 / 17 ETL / 6 HTML 看板):
> 1. **直接手撸 page+card API 全废**:draft cdId ≠ published cdId 不会自动映射回 published page,光走 `POST /api/page` 拼不出来;走 `guanvis publish` 才能跨过状态机。
Confidence
78% confidence
Finding
DELETE "/api/page/<pgId>?force=true

VirusTotal

65/65 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

Detected: suspicious.dynamic_code_execution

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
templates/html-dashboard/charts/html_common.js:7

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
templates/html-dashboard/charts/html_executive.js:12

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
templates/html-dashboard/charts/html_trend.js:12