Back to skill

Security audit

Mck Ppt Design Skill

Security checks for vulnerabilities and agentic risk

Overview

The skill is mainly a presentation generator, but it also automatically sends generated PPTX files to chat channels without a per-send confirmation step.

Review this skill before installing if you use it for confidential business, board, or strategy decks. Its slide-generation behavior is ordinary, but its generated scripts are instructed to automatically send PPTX files through OpenClaw messaging channels when available. Prefer running it in a controlled environment, pin dependencies, and remove or gate deliver_to_channel() if you want local-save-only behavior.

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
README.md:50
Finding
Unpinned Third-Party Dependencies Permit Unreviewed Package Execution## Vulnerability Details **File Location**: `README.md:50-56`, `README.md:291-297`, `SKILL.md:5963`, `scripts/requirements.txt:1-2`, and `examples/requirements.txt:1-2` **Vulnerability Type**: Supply-chain exposure through unpinned dependencies and a moving package release **Risk Level**: Medium ### Vulnerable Code `README.md:50-56` and `README.md:291-297`: ```bash pip install python-pptx lxml npx clawhub@latest install mck-ppt-design ``` `SKILL.md:5963`: ```bash pip install python-pptx lxml ``` `scripts/requirements.txt:1-2` and `examples/requirements.txt:1-2`: ```text python-pptx>=0.6.21 lxml>=4.9.0 ``` ### Technical Analysis The installation instructions execute `clawhub@latest`, which is a moving release rather than a reviewed, immutable version. The Python dependency files similarly use minimum-version constraints without upper bounds, exact pins, package hashes, or a lockfile. Consequently, the code installed in the future may differ from the code reviewed during this audit. If a package registry account, dependency maintainer, publication pipeline, or transitive dependency is compromised, a newly published malicious release could be selected automatically. Package-manager installation and lifecycle behavior may then execute attacker-controlled code with the privileges of the user running `npm`, `npx`, or `pip`. No evidence was found that the currently declared dependencies are malicious. The finding concerns the absence of controls that bind installation to reviewed artifacts. ### Attack Path 1. An attacker compromises a dependency maintainer, registry account, release pipeline, or relevant transitive dependency. 2. The attacker publishes a malicious release under the expected package name. 3. A user follows the documented `npx clawhub@latest install ...` command, or installs the Python requirements after the malicious version becomes eligible. 4. The package manager resolves and download ...[truncated 1030 chars]
Remediation
## Remediation Suggestions 1. Replace the moving npm release with a reviewed exact version: ```bash npx clawhub@<reviewed-version> install mck-ppt-design ``` 2. Pin Python dependencies to exact, tested versions rather than minimum-only ranges: ```text python-pptx==<reviewed-version> lxml==<reviewed-version> ``` 3. Generate a lockfile that records the complete transitive dependency graph. 4. Require cryptographic hashes for Python packages, for example through a hash-locked requirements file and: ```bash pip install --require-hashes -r requirements.txt ``` 5. Commit and enforce the npm lockfile where npm-based installation is part of the supported workflow, and use deterministic installation commands. 6. Configure trusted package registries explicitly and reject unexpected alternate indexes or registries. 7. Review dependency updates before changing pins, including release provenance, maintainer changes, package signatures where available, and transitive dependency differences. 8. Run dependency installation and presentation generation in a least-privileged, isolated environment without unnecessary credentials or access to sensitive host files. 9. Add automated dependency and supply-chain scanning to CI while retaining manual approval for version updates.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (38)

Context-Inappropriate Capability

High
Confidence
97% confidence
Finding
Using a subprocess-based helper such as invoking an external CLI to send generated files introduces an unnecessary execution and exfiltration surface for a presentation-design skill. This is dangerous because it enables outbound file transfer through external tooling outside the core skill scope, potentially bypassing normal review expectations and creating opportunities for misuse, command manipulation, or silent data leakage.

Tp4

High
Category
MCP Tool Poisoning
Confidence
92% confidence
Finding
The documentation claims broad presentation-generation functionality while embedding additional operational behavior unrelated to core rendering, namely subprocess-based channel delivery. Even if framed as convenience, undeclared outbound delivery changes the trust boundary and can cause generated content to be transmitted outside the local environment without clear consent.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
The documentation claims broad presentation-generation functionality while embedding additional operational behavior unrelated to core rendering, namely subprocess-based channel delivery. Even if framed as convenience, undeclared outbound delivery changes the trust boundary and can cause generated content to be transmitted outside the local environment without clear consent.

Description-Behavior Mismatch

Medium
Confidence
96% confidence
Finding
The changelog documents a capability to automatically send generated PPTX files to external messaging channels, which expands the skill from local document creation into data exfiltration or outbound transmission. Even if framed as user convenience, automatic delivery can leak sensitive presentation content to third-party systems or unintended recipients, especially if channel context is inferred or reused without explicit per-run confirmation.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The README expands the skill from local PPT generation into external file transmission by advertising auto-send to Feishu, Telegram, Slack, Discord, and WhatsApp. That materially changes the trust boundary: generated presentations may contain confidential business content, and sending them to third-party channels can exfiltrate sensitive data if invoked without strict user intent and consent.

Context-Inappropriate Capability

Medium
Confidence
96% confidence
Finding
A PPT design skill's stated purpose is content creation and layout generation, not outbound communications. Adding automatic external delivery creates unnecessary capability expansion that can be abused to move sensitive decks outside the local environment, especially in enterprise use cases where board, strategy, or quarterly review slides often contain confidential information.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The README promotes automatic sending of generated PPTX files to external services without any warning about privacy, retention, third-party access, or the fact that business presentations may contain sensitive data. Lack of disclosure increases the chance that users or downstream agents invoke the feature without understanding the exfiltration risk.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Skill Enumeration

Medium
Category
Agent Snooping
Content
npx clawhub@latest install mck-ppt-design

# Or manual install for Claude
mkdir -p ~/.claude/skills/mck-ppt-design
cp SKILL.md ~/.claude/skills/mck-ppt-design/
```
Confidence
85% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Skill Enumeration

Medium
Category
Agent Snooping
Content
npx clawhub@latest install mck-ppt-design

# Or manual install for Claude
mkdir -p ~/.claude/skills/mck-ppt-design
cp SKILL.md ~/.claude/skills/mck-ppt-design/
```
Confidence
85% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Session Persistence

Medium
Category
Rogue Agent
Content
npx clawhub@latest install mck-ppt-design

# Or manual install for Claude
mkdir -p ~/.claude/skills/mck-ppt-design
cp SKILL.md ~/.claude/skills/mck-ppt-design/
```
Confidence
60% confidence
Finding
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Session Persistence

Medium
Category
Rogue Agent
Content
npx clawhub@latest install mck-ppt-design

# Or manual install for Claude
mkdir -p ~/.claude/skills/mck-ppt-design
cp SKILL.md ~/.claude/skills/mck-ppt-design/
```
Confidence
60% confidence
Finding
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The version history explicitly documents a `deliver_to_channel()` capability, confirming that external transmission is a supported feature rather than an incidental mention. In the context of a presentation-generation skill, this broadens capability beyond the minimum needed and increases the risk of accidental or unauthorized disclosure of generated files.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
The plan explicitly states the README should be rewritten as 'English-first' because English content is weighted more heavily, relegating Chinese content to a collapsed section. This is a natural-language locale policy choice that prioritizes a specific language without user opt-in or a clearly documented regional/compliance justification.

Lp3

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding
The skill requires Bash and includes shell-capable behavior, but it does not declare a restrictive tool scope such as allowed-tools or permissions. In an agent setting, that ambiguity can let the skill invoke broader shell functionality than users or the platform expect, increasing the chance of unintended command execution or lateral actions.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The frontmatter says to use the skill when a user asks to create slides, pitch decks, business presentations, strategy decks, quarterly reviews, board meeting slides, or "any professional PPTX." This trigger scope is very broad and lacks exclusion conditions or a tighter invocation boundary, increasing the chance of unintended activation for ordinary presentation-related requests.

Natural-Language Policy Violations

Medium
Confidence
83% confidence
Finding
The overview explicitly builds in "Chinese + English font handling" and later mandates KaiTi for Chinese text, presenting a specific locale-oriented behavior as default. The document does not clearly offer users a language or locale choice up front or justify the constraint as a region-specific tool, which can violate language/locale choice expectations.

Vague Triggers

Medium
Confidence
90% confidence
Finding
The markdown guidance lists many common request types such as creating presentations, applying professional design, building specific slide types, and maintaining design consistency, but does not clearly distinguish this skill from other generic presentation assistance. Without constraints or negative examples, these conditions are ambiguous enough to overlap with normal conversation and unrelated presentation-help tasks.

Natural-Language Policy Violations

Medium
Confidence
90% confidence
Finding
The typography section specifies fixed font families and says every paragraph with Chinese text MUST apply `set_ea_font()` using KaiTi. This is a hardcoded language-specific formatting rule without user opt-in or alternative locale preferences, which is a natural-language locale policy concern.

Description-Behavior Mismatch

Medium
Confidence
94% confidence
Finding
The skill documentation instructs sending generated PPTX files back through external messaging channels, which expands behavior from local file generation to external transmission. If presentations contain sensitive business data, this can exfiltrate documents to third-party platforms or the wrong chat context without adequate user awareness.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The channel-delivery instructions omit an explicit privacy warning even though they direct generated documents to external messaging platforms. Without a warning or confirmation, users may unintentionally transmit confidential presentation content to third-party services or broader audiences than intended.

Context-Inappropriate Capability

Medium
Confidence
92% confidence
Finding
The skill includes subprocess invocation of an external CLI to send files, which introduces command-execution and outbound-transfer capability beyond what is necessary for slide design. In agent environments, subprocess access increases the blast radius of prompt misuse, path manipulation, or accidental transmission of local files.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The header describes the file as a minimal PPT-generation example, but the implementation also performs external delivery via subprocess, which is a material hidden behavior. Misleading documentation increases execution risk because reviewers and users may trust and run the example without realizing it can transmit files outside the local environment.

Context-Inappropriate Capability

Medium
Confidence
97% confidence
Finding
This example includes functionality to send generated presentations to an external chat/media channel, which is not necessary for the stated purpose of demonstrating PPT generation. In a skill context, hidden or non-essential exfiltration/output channels are dangerous because generated content may contain sensitive business data and users may execute the example expecting only local file creation.

Static analysis

No suspicious patterns detected.