Back to skill

Security audit

视频号数据罗盘

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly behaves like a paid WeChat Channel metrics tool, but it bundles broader API and file-upload capabilities that are not clearly disclosed for that purpose.

Review before installing. Only use this skill if you are comfortable giving it a WeMedia API key, storing that key locally, sending requested video identifiers to api.we-media.cn, and writing result/cache files on disk. Do not provide local file paths to this skill, and the publisher should remove the bundled upload and unrelated endpoint capabilities before this is treated as a narrow metrics-only skill.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (24)

Tp4

High
Category
MCP Tool Poisoning
Confidence
92% confidence
Finding
This finding indicates the skill may support generic API invocation, authentication handling, billing/caching logic, remote upload, and multi-format export beyond the declared single-purpose metrics use case. A broad operational surface hidden behind a narrow description increases the risk of unexpected data exfiltration, file handling, and paid actions that users did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
This finding indicates the skill may support generic API invocation, authentication handling, billing/caching logic, remote upload, and multi-format export beyond the declared single-purpose metrics use case. A broad operational surface hidden behind a narrow description increases the risk of unexpected data exfiltration, file handling, and paid actions that users did not knowingly authorize.

Ae1

High
Category
analysis-evasion
Content
> 曼格云 skill | 环节:看数据 | 底层统一底座 `wm_core.py`
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Skill ships a __pycache__ directory that normal discovery skips

High
Category
Supply Chain
Content
Python may load .pyc from this directory even when decoy .py sources look clean (PEP 552 UNCHECKED_HASH).
Confidence
95% confidence
Finding
Skill ships Python bytecode (__pycache__/ or .pyc/.pyo). Discovery skips these paths, so malicious bytecode can score SAFE while decoy sources look clean.

Skill ships Python bytecode (.pyc/.pyo) that normal analysis skips

High
Category
Supply Chain
Content
Bytecode is excluded from content analysis; a malicious .pyc can execute while source decoys remain clean.
Confidence
95% confidence
Finding
Skill ships Python bytecode (__pycache__/ or .pyc/.pyo). Discovery skips these paths, so malicious bytecode can score SAFE while decoy sources look clean.

Skill ships Python bytecode (.pyc/.pyo) that normal analysis skips

High
Category
Supply Chain
Content
Bytecode is excluded from content analysis; a malicious .pyc can execute while source decoys remain clean.
Confidence
95% confidence
Finding
Skill ships Python bytecode (__pycache__/ or .pyc/.pyo). Discovery skips these paths, so malicious bytecode can score SAFE while decoy sources look clean.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The endpoint catalog exposes capabilities far beyond the skill’s declared purpose of returning exact metrics for a single 视频号 work, including account/article search, hot-search aggregation, media retrieval, AI analysis, and file upload. This excessive capability expansion violates least privilege and creates a materially larger attack surface where a prompt-injected or compromised agent could access unrelated data or perform unintended actions under the skill’s credentials.

Context-Inappropriate Capability

High
Confidence
99% confidence
Finding
A file-upload ticket endpoint is unjustified in a read-only metrics skill and enables moving local user-provided files to external cloud storage, producing public or externally retrievable URLs. In the context of an agent skill, this creates a concrete exfiltration path for sensitive local content if the model is induced to upload files under the pretense of analysis.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
The manifest includes broad cross-domain search and content retrieval for 公众号 articles, rankings, account data, and other unrelated resources, which is inconsistent with a single-purpose 视频号数据罗盘 skill. This overbroad access enables data collection and exploration far outside user expectations, increasing the harm from prompt injection, misuse, or credential abuse.

Context-Inappropriate Capability

High
Confidence
97% confidence
Finding
The AI video understanding and audio transcription endpoints are unrelated to exact 视频号 interaction counts and allow arbitrary media analysis once supplied a URL. Combined with the upload capability, they can be chained to ingest user files or fetched media for broader content extraction than users would expect from a metrics-only skill.

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The skill declares executable behavior involving environment access, local file read/write, and network use, but does not explicitly constrain tool scope with permissions or allowed-tools. This weakens least-privilege controls and can allow broader execution than users would infer from the manifest, especially since the workflow includes credential handling and remote API access.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
The instructions require the agent to relay a fixed Chinese message verbatim to the user and forbid rewriting it. This imposes a specific language on user-facing communication without any opt-in or explanation that the skill is limited to Chinese-speaking users.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The skill instructs storing the user's API key in a local config.json file but provides no warning about plaintext local credential storage, access controls, rotation, or cleanup. If the working directory is readable by other users, synced, logged, or later shared, the API key can be exposed and abused for unauthorized API usage and charges.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
This manifest-like JSON defines endpoint names, purposes, and notes entirely in Chinese, with no indication that the skill is region-specific or that users can opt into this locale. Under the language/locale policy, forcing a specific language without user choice or clear justification is a natural-language policy concern.

Cloud Storage Exfiltration

Medium
Category
Data Exfiltration
Content
"purpose": "把本地文件传到平台临时存储,换回可直接喂给 AI 接口的公网地址",
      "free": true,
      "internal": true,
      "note": "非计费能力。两步:① 本接口取票据(uploadUrl/requiredFields/fileUrl,票据 2 小时有效)② multipart 直传到 uploadUrl(requiredFields 逐项 + file 字段)。单文件 ≤128MB,文件约 2 小时后自动清理。对象存储按文件内容识别 MIME,申请票据声明的 contentType 必须与其一致,否则 403;不一致时从 403 报错中取真实 MIME 纠正重试。由 wm_core.WM.upload_file() 封装,勿手工拼装。"
    },
    {
      "key": "account-balance",
Confidence
99% confidence
Finding
The upload flow explicitly describes sending local files to temporary cloud storage and returning a public-facing URL for later AI processing. In an agent environment, this is a classic exfiltration primitive: even if the storage is temporary, sensitive files can be transferred off-device and made accessible to external services outside the narrow purpose of metrics retrieval.

Cloud Storage Exfiltration

Medium
Category
Data Exfiltration
Content
"purpose": "把本地文件传到平台临时存储,换回可直接喂给 AI 接口的公网地址",
      "free": true,
      "internal": true,
      "note": "非计费能力。两步:① 本接口取票据(uploadUrl/requiredFields/fileUrl,票据 2 小时有效)② multipart 直传到 uploadUrl(requiredFields 逐项 + file 字段)。单文件 ≤128MB,文件约 2 小时后自动清理。对象存储按文件内容识别 MIME,申请票据声明的 contentType 必须与其一致,否则 403;不一致时从 403 报错中取真实 MIME 纠正重试。由 wm_core.WM.upload_file() 封装,勿手工拼装。"
    },
    {
      "key": "account-balance",
Confidence
99% confidence
Finding
The upload flow explicitly describes sending local files to temporary cloud storage and returning a public-facing URL for later AI processing. In an agent environment, this is a classic exfiltration primitive: even if the storage is temporary, sensitive files can be transferred off-device and made accessible to external services outside the narrow purpose of metrics retrieval.

Cloud Storage Exfiltration

Medium
Category
Data Exfiltration
Content
"purpose": "把本地文件传到平台临时存储,换回可直接喂给 AI 接口的公网地址",
      "free": true,
      "internal": true,
      "note": "非计费能力。两步:① 本接口取票据(uploadUrl/requiredFields/fileUrl,票据 2 小时有效)② multipart 直传到 uploadUrl(requiredFields 逐项 + file 字段)。单文件 ≤128MB,文件约 2 小时后自动清理。对象存储按文件内容识别 MIME,申请票据声明的 contentType 必须与其一致,否则 403;不一致时从 403 报错中取真实 MIME 纠正重试。由 wm_core.WM.upload_file() 封装,勿手工拼装。"
    },
    {
      "key": "account-balance",
Confidence
99% confidence
Finding
The upload flow explicitly describes sending local files to temporary cloud storage and returning a public-facing URL for later AI processing. In an agent environment, this is a classic exfiltration primitive: even if the storage is temporary, sensitive files can be transferred off-device and made accessible to external services outside the narrow purpose of metrics retrieval.

Context-Inappropriate Capability

Medium
Confidence
92% confidence
Finding
Video playback/download URL access exceeds what is required to report likes, comments, favorites, shares, and views. Exposing retrieval of playable media introduces unnecessary access to content objects and can facilitate unauthorized copying, redistribution, or downstream analysis not implied by the stated skill purpose.

Description-Behavior Mismatch

Medium
Confidence
84% confidence
Finding
The manifest describes a narrow capability focused on exact video interaction metrics, but the code exposes an additional 'ch-info' endpoint that appears to retrieve broader channel/account information. This mismatch expands data access beyond user expectations and weakens the trust boundary, because users may invoke the skill assuming only per-video metrics are collected.

Context-Inappropriate Capability

Medium
Confidence
91% confidence
Finding
The skill’s stated purpose is fetching WeChat Channel interaction metrics, but it also accepts arbitrary local file paths and uploads them to platform storage before making API calls. That creates an unnecessary data-transfer capability that could expose local user files to a remote service, especially because the upload path is generic and not tightly scoped to the declared use case.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The code uploads local files and sends user-provided parameters to external services after only a cost confirmation, without a clear privacy or data-transfer warning. Users may not realize that local content or identifiers they provide will be transmitted off-host, which increases the risk of unintentional disclosure of sensitive data.

Unbounded Resource Access

Medium
Category
Excessive Agency
Content
import urllib.parse
import hashlib

EXIT_OK, EXIT_INPUT, EXIT_AUTH, EXIT_API, EXIT_NETWORK, EXIT_TIMEOUT = 0, 2, 3, 4, 6, 124

OFFICIAL = "https://api.we-media.cn"
ROOT = "https://api.we-media.cn"
Confidence
75% confidence
Finding
Skill allows unbounded resource consumption (API calls, storage, compute). Without rate limits or quotas, a compromised or misbehaving agent can cause denial-of-service or cost overruns.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
The manifest describes a narrowly scoped read-oriented analytics skill for viewing exact interaction counts on a specific 视频号作品. In contrast, this core module provides a general-purpose upload_file() workflow that reads arbitrary local files and uploads them to remote temporary storage for later AI processing, which is not justified by the stated purpose of fetching engagement numbers.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The upload_file function reads an arbitrary local file and uploads it to remote platform storage, returning a public HTTPS URL. Although the docstring explains technical behavior, there is no explicit user-facing warning or confirmation prompt that local file contents will be transmitted off-system and exposed via a remote URL.

Static analysis

No suspicious patterns detected.