Back to skill

Security audit

Office Generator Py

Security checks for vulnerabilities and agentic risk

Overview

This is a straightforward Office document generator with disclosed local Python setup and file output behavior, though users should treat its dependency install step with normal caution.

Install only if you are comfortable running local Python scripts and allowing pip to install third-party Office-generation libraries. Use a normal non-privileged environment, choose output paths deliberately, include only image files you intend to embed, and do not set OFFICE_GENERATOR_PYTHON unless it points to a trusted Python binary.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (12)

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The skill instructs users to run Python setup and generation scripts that rely on shell execution, file reads/writes, and environment-variable overrides, yet the manifest does not declare these capabilities. This creates a permission-transparency gap: callers and policy systems may underestimate what the skill can do, making it easier to invoke code that touches the filesystem or uses a substituted Python interpreter without adequate review.

Vague Triggers

Medium
Confidence
83% confidence
Finding
The description is broad enough to match many ordinary document-generation requests, which can cause the skill to be selected in situations where users did not explicitly ask to run a bundled Python-based generator. Overbroad auto-invocation increases the chance of unnecessary code execution and file access, especially because this skill ultimately drives local scripts and writes outputs to disk.

Missing User Warnings

Medium
Confidence
84% confidence
Finding
The script automatically creates a virtual environment and installs packages from requirements.txt without any user warning, confirmation, or trust boundary checks. In a skill context, this can unexpectedly execute package installation workflows and pull code from external package sources, increasing supply-chain and unexpected-network-execution risk if dependencies are malicious or tampered with.

Unpinned Dependencies

Low
Category
Supply Chain
Content
python-docx
docxtpl
openpyxl
XlsxWriter
Confidence
95% confidence
Finding
The dependency is unpinned, so builds may resolve to different versions over time, including versions with newly introduced bugs or supply-chain compromises. In a skill that generates Office documents and may process untrusted templates or content, uncontrolled dependency resolution increases the chance of pulling a vulnerable or incompatible package into production.

Unpinned Dependencies

Low
Category
Supply Chain
Content
python-docx
docxtpl
openpyxl
XlsxWriter
python-pptx
Confidence
95% confidence
Finding
An unpinned docxtpl dependency makes the environment non-reproducible and exposes the project to accidental upgrades or malicious package substitutions in the supply chain. Because this skill renders Office documents from input data, dependency drift can directly affect document generation security and integrity.

Unpinned Dependencies

Low
Category
Supply Chain
Content
python-docx
docxtpl
openpyxl
XlsxWriter
python-pptx
pydantic
Confidence
97% confidence
Finding
Leaving openpyxl unpinned is especially risky because the same file also flags known advisories for this package family. Uncontrolled resolution can install vulnerable versions that may mishandle crafted XLSX/XML content, which is more dangerous in a skill that reads or writes Office-related formats.

Unpinned Dependencies

Low
Category
Supply Chain
Content
python-docx
docxtpl
openpyxl
XlsxWriter
python-pptx
pydantic
Confidence
94% confidence
Finding
XlsxWriter is unpinned, creating supply-chain and reproducibility risk even if no specific CVE is cited here. For document-generation tooling, unexpected upstream changes can break output generation or introduce unsafe parsing/serialization behavior through transitive changes.

Unpinned Dependencies

Low
Category
Supply Chain
Content
docxtpl
openpyxl
XlsxWriter
python-pptx
pydantic
Confidence
94% confidence
Finding
An unpinned python-pptx dependency means installs are not deterministic and may pull in vulnerable or compromised releases later. Since this skill creates Office documents, dependency integrity matters because document libraries often process ZIP/XML structures that are common attack surfaces.

Unpinned Dependencies

Low
Category
Supply Chain
Content
openpyxl
XlsxWriter
python-pptx
pydantic
Confidence
97% confidence
Finding
Pydantic is unpinned and separately identified with known advisories, so version drift could result in installations vulnerable to denial-of-service conditions. If this skill validates user-supplied structured input before generating Office files, vulnerable parsing or regex handling can be abused to hang or degrade the service.

Known Vulnerable Dependency: python-docx — 2 advisory(ies): CVE-2016-5851 (Improper Restriction of XML External Entity Reference in python-docx); CVE-2016-5851 (python-docx before 0.8.6 allows context-dependent attackers to conduct XML Exter)

High
Category
Supply Chain
Confidence
90% confidence
Finding
The file references python-docx without a version, and static analysis associates it with CVE-2016-5851, an XXE issue in older releases. In an Office-generation context, libraries handling DOCX/XML are a relevant attack surface; if an affected version is installed and attacker-controlled document content or templates are processed, XXE could enable file disclosure or network access.

Known Vulnerable Dependency: openpyxl — 2 advisory(ies): CVE-2017-5992 (Improper Restriction of XML External Entity Reference in Openpyxl); CVE-2017-5992 (Openpyxl 2.4.1 resolves external entities by default, which allows remote attack)

High
Category
Supply Chain
Confidence
91% confidence
Finding
The openpyxl entry is associated with CVE-2017-5992, an XXE vulnerability in older versions. This is particularly relevant here because spreadsheet libraries process XML-based XLSX content; if the skill ever opens, transforms, or validates attacker-supplied workbook content, a vulnerable version could be exploited for data exfiltration or SSRF-style behavior.

Known Vulnerable Dependency: pydantic — 3 advisory(ies): CVE-2021-29510 (Use of "infinity" as an input to datetime and date fields causes infinite loop i); CVE-2024-3772 (Pydantic regular expression denial of service); CVE-2021-29510 (Pydantic is a data validation and settings management using Python type hinting.)

High
Category
Supply Chain
Confidence
88% confidence
Finding
The pydantic requirement is unversioned, and advisories indicate older versions may be vulnerable to infinite-loop or regex denial-of-service conditions. Because this skill likely accepts structured JSON or natural-language-derived data for document generation, attacker-controlled inputs could trigger excessive CPU consumption or hangs during validation.

Static analysis

No suspicious patterns detected.