Back to skill

Security audit

小程序查找

Security checks across malware telemetry and agentic risk

Overview

The skill mostly performs the advertised paid WeChat mini-program search, but it also ships broader API metadata and a local-file upload path that are not needed or clearly disclosed for that purpose.

Review before installing. Use only with a trusted API key and avoid passing --file or local paths. The publisher should remove unrelated endpoints, remove the upload helper from this skill, and omit __pycache__ files before this is treated as a clean narrow mini-program-search skill.

SkillSpector

By NVIDIA
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 (20)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
The declared purpose is a narrow mini-program search skill, but the behavior indicates a more generic API framework with export, pagination, caching, and even temporary file upload support not disclosed in the description. This mismatch is dangerous because reviewers and users may authorize the skill under a limited-use assumption while it possesses materially broader data-handling and network capabilities.

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 skill is declared as a mini-program keyword search tool, but the endpoint catalog exposes a much broader API surface including account profiling, article retrieval, video/channel data, AI media analysis, and file upload. This violates least privilege and creates unnecessary access paths that could be abused for unrelated data collection, cost incurrence, or exfiltration if the agent can select from the whole catalog.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
The skill bundles public-account and video-channel collection APIs that are unrelated to mini-program search, including article content, metrics, channel search, replay history, and download/playback URL generation. This significantly increases surveillance and scraping capability, making misuse more dangerous in both privacy and compliance terms.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
AI media-analysis endpoints for video understanding and audio transcription are unrelated to searching mini-programs by keyword and materially expand the skill's power. In context, these endpoints could process arbitrary remote media and increase both data exposure and unexpected spend, with no justification from the stated skill function.

Lp3

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding
The skill declares no explicit tool scope or permission boundaries even though its documented workflow requires environment access, local file reads/writes, and network calls. Without an allowlist, an agent may execute broader capabilities than users expect, increasing the risk of overreach, secret exposure, or unintended file modification during operation.

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
The instructions require the operator to relay a fixed Chinese message verbatim to the user and explicitly forbid rewriting it. This imposes a specific language on user-facing communication without presenting any option to adapt to the user's preferred language or locale.

Intent-Code Divergence

Medium
Confidence
86% confidence
Finding
The metadata highlights exclusion of comment endpoints for compliance reasons, but this selective warning can create a false sense of safety while leaving many other unrelated and high-risk capabilities enabled. That mismatch suggests incomplete threat modeling and weak scope control rather than a genuinely constrained skill.

Natural-Language Policy Violations

Medium
Confidence
82% confidence
Finding
This manifest-style JSON uses Chinese-only natural-language descriptions and policy text, including the exclusion reason, without indicating that the skill is China-specific or offering any user language choice. Under the locale-policy rule, a skill that effectively requires a specific language without opt-in can be a policy concern.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
A temporary file upload ticket and documented helper for uploading local files to cloud storage is not required for mini-program search. This creates an exfiltration primitive that could move local or user-provided files to a public URL and then feed them to other APIs, broadening the risk far beyond the declared purpose.

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
93% confidence
Finding
The documented `wm_core.WM.upload_file()` flow provides a direct mechanism to upload local files to temporary cloud storage and obtain a public URL. In a skill whose declared purpose is only mini-program search, this is an unnecessary exfiltration path and becomes more dangerous because the uploaded file can be chained into downstream AI/media endpoints.

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
93% confidence
Finding
The documented `wm_core.WM.upload_file()` flow provides a direct mechanism to upload local files to temporary cloud storage and obtain a public URL. In a skill whose declared purpose is only mini-program search, this is an unnecessary exfiltration path and becomes more dangerous because the uploaded file can be chained into downstream AI/media endpoints.

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
93% confidence
Finding
The documented `wm_core.WM.upload_file()` flow provides a direct mechanism to upload local files to temporary cloud storage and obtain a public URL. In a skill whose declared purpose is only mini-program search, this is an unnecessary exfiltration path and becomes more dangerous because the uploaded file can be chained into downstream AI/media endpoints.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
This Python file contains natural-language instructions, status messages, and CLI help entirely in Chinese, establishing a fixed language/locale for the skill experience. The policy allows locale constraints only when they are documented and justified or when users are given a choice, neither of which is present here.

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
94% confidence
Finding
The skill manifest describes a narrowly scoped capability: searching WeChat mini-programs by keyword and returning metadata. This core file also implements uploading arbitrary local files to remote temporary storage and returning public HTTPS URLs, which is not justified by that stated purpose and expands the operational capability well beyond search.

Context-Inappropriate Capability

Low
Confidence
86% confidence
Finding
The manifest focuses on querying mini-program information and returning fields such as name, AppID, description, icon, and provider. This file adds generic persistence/report-generation behavior that writes result files into the skill directory, a capability not mentioned in the stated purpose and not obviously required for performing the search itself.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.