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

Content
View full analysis

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
View 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
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

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.

Content

No source excerpt is available for this finding.

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.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

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.

Content

No source excerpt is available for this finding.

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.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
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.

Content

Scanner excerpt · README.md (reported line 59)May include surrounding context.

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/

text

Skill Enumeration

Medium
Category
Agent Snooping
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.

Content

Scanner excerpt · README.md (reported line 300)May include surrounding context.

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/

text

Session Persistence

Medium
Category
Rogue Agent
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.

Content

Scanner excerpt · README.md (reported line 59)May include surrounding context.

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/

text

Session Persistence

Medium
Category
Rogue Agent
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.

Content

Scanner excerpt · README.md (reported line 300)May include surrounding context.

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/

text

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

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.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.