Back to skill

Security audit

Tencent Meeting Mcp

Security checks for vulnerabilities and agentic risk

Overview

This Tencent Meeting skill is mostly coherent, but it can access and expose sensitive meeting content and uses an overbroad setup step that users should review before installing.

Review this skill before installing. Use a least-privileged Tencent Meeting token, avoid running setup as an administrator, consider installing a reviewed/pinned mcporter version yourself, and only ask the agent to retrieve transcripts, recordings, passwords, join links, or participant details when you are authorized to access and share that meeting data.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
setup.sh:9
Finding
Unpinned Global npm Package Installation## Vulnerability Details **File Location**: `setup.sh`, lines 9–13 **Vulnerability Type**: Unpinned third-party dependency installed globally **Risk Level**: Medium ### Vulnerable Code ```bash # 检查 mcporter if ! command -v mcporter &> /dev/null; then echo "⚠️ 未找到 mcporter,正在安装..." npm install -g mcporter echo "✅ mcporter 安装完成" fi ``` ### Technical Analysis The setup script installs the latest version of the `mcporter` npm package without pinning a reviewed version or verifying package integrity or provenance. Because npm packages may execute lifecycle scripts during installation, the package registry response effectively determines what code runs when the setup script is executed. The `-g` option installs the package globally rather than isolating it within the project. This expands the affected scope and may modify system-wide or user-wide npm binaries and package directories. If the package, publisher account, dependency tree, or configured npm registry is compromised, attacker-controlled code could execute with the privileges of the user running `setup.sh`. ### Attack Path 1. An attacker compromises the `mcporter` package, one of its dependencies, its publisher account, or the npm registry configured on the victim's system. 2. The attacker publishes or serves a malicious version containing an installation lifecycle script or malicious executable. 3. A user follows the documented setup procedure and runs `bash setup.sh` on a system where `mcporter` is not already installed. 4. The command `npm install -g mcporter` resolves the unpinned package to the attacker-controlled version. 5. npm executes the malicious package or its lifecycle scripts with the invoking user's privileges. 6. The payload may inspect the process environment, including `TENCENT_MEETING_TOKEN`, alter the MCP configuration, replace globally available tooling, access user-readable files, or establish persistence where the user's permissions allow it. ### Impact Assessmen ...[truncated 805 chars]
Remediation
## Remediation Suggestions 1. Do not automatically install the package globally from the setup script. Treat `mcporter` as a separately installed prerequisite and fail with clear, trusted installation instructions when it is absent. 2. If automated installation is necessary, pin an exact reviewed version, for example: ```bash npm install --global --ignore-scripts mcporter@<reviewed-exact-version> ``` 3. Confirm that `mcporter` remains functional with `--ignore-scripts`; if lifecycle scripts are genuinely required, audit those scripts and all transitive dependencies before installation. 4. Verify package provenance and integrity using a trusted lockfile, registry policy, package signatures or attestations, and a known integrity digest where supported. 5. Prefer project-local installation over global installation so the dependency is isolated and represented in a committed lockfile. 6. Configure an explicit trusted npm registry and reject unexpected registry overrides in security-sensitive deployment environments. 7. Run setup under a dedicated, least-privileged account. Never run the installation as root or an administrator. 8. Keep `TENCENT_MEETING_TOKEN` out of the environment during dependency installation. Request or load it only after all dependencies have been installed and verified. 9. Document the reviewed package version and establish a controlled update process that includes dependency and lifecycle-script review before upgrading.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (7)

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill enables access to sensitive meeting data including participant lists, invitees, waiting room records, recordings, transcripts, and downloadable recording URLs, but does not warn the operator that these may contain confidential personal or business information. In an agent setting, lack of explicit privacy guidance increases the chance of over-collection, disclosure, or use of sensitive artifacts without informed user confirmation.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill specifically supports obtaining recording download addresses, which can facilitate copying or redistribution of meeting content containing sensitive audio, video, and shared materials. Without an explicit warning or confirmation step, an agent may surface or fetch download links in situations where users do not appreciate the privacy, retention, or data-handling consequences.

Natural-Language Policy Violations

Medium
Confidence
98% confidence
Finding
SQP-3 applies to all file types and flags language/locale policy violations. This instruction forces all relative-time interpretation to use Beijing time as the sole basis, which imposes a locale-specific behavior without offering user choice or clearly limiting the skill to a region-specific compliance context.

Description-Behavior Mismatch

Medium
Confidence
89% confidence
Finding
The manifest description limits the skill to meeting management, participant/list queries, recording retrieval, transcript viewing/search, and AI summaries. SKILL.md additionally documents an `export_asr_details` tool for exporting real-time transcription records, which is a broader data-export capability not mentioned in the manifest’s described scenarios or trigger list.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
This documentation exposes high-sensitivity meeting data surfaces without any privacy, authorization, or data-minimization warning. The described APIs can return join URLs, passwords, host keys, invitees, guests, phone numbers, and participant identity details; in an agent skill context, that materially increases the chance an LLM will retrieve and disclose sensitive meeting access data to an unauthorized requester.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
These sections document APIs for retrieving recordings, download links, transcripts, searchable transcript content, and AI summaries without warning that the returned data may contain confidential conversations, personal data, and sensitive business information. In an agent-integrated skill, this creates a direct path for bulk exfiltration or oversharing of meeting content, especially because search and export functions make sensitive content easy to locate and disclose.

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
The script's comments and all user-facing messages are written in Chinese, including setup steps and error guidance. This imposes a specific language on users without opt-in, which matches the policy category for language or locale constraints on all file types.

Static analysis

No suspicious patterns detected.