Back to skill

Security audit

Dragon Ppt Maker.Bak

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward local PPTX generator, with some documentation quality issues but no evidence of hidden access, persistence, exfiltration, or destructive behavior.

Install dependencies in a virtual environment, prefer pinned package versions, and choose output filenames carefully because generated PPTX files may overwrite existing files. Treat the HTML feature as a text preview rather than real embedded HTML rendering.

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:15
Finding
Unpinned Third-Party Dependencies Without Integrity Verification## Vulnerability Details **File Location**: `SKILL.md:15` **Vulnerability Type**: Unpinned and integrity-unverified third-party dependencies **Risk Level**: Medium ```bash pip install python-pptx pillow ``` ### Technical Analysis The documented installation command retrieves the latest available releases of `python-pptx` and `pillow` without version constraints, a lock file, or cryptographic hash verification. Consequently, the dependency code installed by users may differ from the code present when the Skill was audited. This creates a supply-chain exposure: if a dependency release or its distribution account is compromised, users following the documented command could install attacker-controlled code. Python packages may execute code during installation or when imported by `ppt_maker.py`. No evidence was found that either named package is currently malicious. The finding concerns the absence of dependency version and integrity controls. ### Attack Path 1. An attacker compromises a dependency release channel or publishes a malicious version through another applicable package-supply-chain attack. 2. A user follows the instruction in `SKILL.md` and runs `pip install python-pptx pillow`. 3. `pip` resolves the mutable latest releases because no reviewed versions are pinned. 4. The malicious package code executes during installation or when `ppt_maker.py` imports the dependency. 5. The code operates with the privileges of the user or automation account running the installation or presentation generator. ### Impact Assessment Successful exploitation could provide arbitrary Python code execution under the installing user’s privileges. The resulting scope could include access to files, credentials, environment variables, and network resources available to that account. Administrative or root-level impact would require the installation command to be run with corresponding elevated privileges. The remaining audited implemen ...[truncated 325 chars]
Remediation
## Remediation Suggestions 1. Create a dependency file containing exact versions that have been reviewed and tested, for example: ```text python-pptx==REVIEWED_VERSION Pillow==REVIEWED_VERSION ``` 2. Generate and record SHA-256 hashes for every required distribution, including transitive dependencies. 3. Require hash validation during installation: ```bash python -m pip install --require-hashes -r requirements.txt ``` 4. Generate the locked dependency set from a trusted package index and explicitly configure the approved index URL where appropriate. 5. Review dependency updates before changing the lock file, and use automated vulnerability and provenance scanning in the release process. 6. Advise users to install dependencies in an isolated virtual environment without administrative privileges.
Vulnerability Patterns
  • 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
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (5)

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
This code file contains natural-language descriptions that force a specific language/locale: the module docstring and user-facing CLI help/messages are entirely in Chinese. The policy allows locale constraints only when justified or when the user is given a language choice, neither of which is present here.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
The argparse description, argument help text, usage guidance, and completion messages are all hard-coded in Chinese. Because no language selection or documented regional limitation is provided, this is a natural-language locale policy violation rather than a functional issue.

Missing User Warnings

Low
Confidence
86% confidence
Finding
This markdown file instructs users to generate and save `.pptx` files via both CLI and Python API examples, but it does not mention that these operations will create or potentially overwrite files on disk. For a skill description, file-writing behavior that affects user data or the filesystem should include a brief warning or note so the user understands the side effect.

Intent-Code Divergence

Low
Confidence
98% confidence
Finding
The module docstring says the tool supports "HTML内容嵌入" (HTML content embedding), which implies actual embedding of HTML content into the presentation. However, the corresponding implementation explicitly states that full HTML embedding is not performed and only displays a text summary/preview of the HTML content.

Intent-Code Divergence

Low
Confidence
95% confidence
Finding
The function documentation says HTML content is added "through embedded text simulation" and notes that full HTML embedding requires extra handling, which conflicts with the module-level claim that HTML embedding is supported. This is an intent/documentation inconsistency within the file about what the feature actually does.

Static analysis

No suspicious patterns detected.