Back to skill

Security audit

create-mckinsey-ppt

Security checks for vulnerabilities and agentic risk

Overview

This skill coherently generates local McKinsey-style PowerPoint files and does not show hidden persistence, credential access, exfiltration, or unrelated behavior.

Install dependencies in a virtual environment, prefer pinned package versions, and expect the generated deck to include Chinese template text unless you edit the script or content accordingly.

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
SKILL.md:17
Finding

Unpinned Third-Party Dependency Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 17–20
Vulnerability Type: Unpinned and unhashed dependency installation
Risk Level: Medium

bash
# Ensure python-pptx is installed
python -m pip install python-pptx

Technical Analysis

The documented installation command retrieves python-pptx and its transitive dependencies without pinning reviewed versions or verifying package integrity with cryptographic hashes. Consequently, the components installed by this command can change after the Skill has been audited.

This does not establish that the current package is malicious. However, it creates a supply-chain exposure: if an upstream package, release process, distribution account, package repository, or transitive dependency is compromised, users following the instructions could install attacker-controlled code. Unexpected upstream changes could also introduce incompatible or vulnerable behavior.

Attack Path

  1. An attacker compromises an upstream package, maintainer account, release process, or transitive dependency used by python-pptx.
  2. The attacker publishes a malicious version to the package source used by pip.
  3. A user follows the documented python -m pip install python-pptx instruction after that release becomes available.
  4. Pip resolves the mutable latest package set without checking against project-maintained version pins or integrity hashes.
  5. Attacker-controlled package code executes during installation or when the presentation generator imports and uses the dependency.

This path requires compromise or malicious modification of an upstream supply-chain component; the audited project itself does not retrieve or execute a separate remote payload.

Impact Assessment

Malicious dependency code would generally execute with the privileges of the user running pip or invoking the generator. Depending on those privileges and the host environment, it could read or alter accessible files, steal credentials avai ...[truncated 300 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin python-pptx and every transitive dependency to reviewed versions in a committed dependency or lock file.
  2. Record cryptographic hashes for all approved distributions and install with hash verification, such as:
    bash
    python -m pip install --require-hashes -r requirements.txt
    
  3. Generate the locked dependency set from a trusted package index and review dependency updates before merging them.
  4. Install dependencies inside an isolated virtual environment rather than the system Python environment.
  5. Configure pip to use an explicitly trusted index and disallow unexpected supplemental indexes where practical.
  6. Add automated dependency vulnerability and provenance checks to the release process.
  7. Update SKILL.md so users are directed to the reproducible, pinned installation procedure instead of installing the mutable latest release.
Vulnerability Patterns
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding

Without declared permissions the skill's intent is opaque and cannot be validated.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The natural-language instructions switch to Chinese and continue that way for the operational guidance, which effectively forces a specific language for users of the skill. The policy allows locale or language constraints only when the user is given a choice or the restriction is clearly documented and justified, which is not present here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The usage example, JSON schema examples, and slide text all assume Chinese content, and the generated ending slide and branding text are hard-coded in Chinese. For a code file, this natural-language behavior constitutes a locale policy concern because the skill does not offer an opt-in language choice or explain that it is intentionally limited to Chinese-language presentations.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script inserts fixed Chinese strings such as '麦肯锡风格 · 战略咨询版' and '谢谢,请指导' into the presentation regardless of user preference. Because no alternative language option or opt-in is provided, the skill enforces a specific language in its output.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.