Back to skill

Security audit

PrintAssist

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed Windows print and document-processing helper, with some sensitive capabilities users should intentionally control.

Install only if you are comfortable with a local Windows skill that can send files to a physical printer, create modified copies of documents, remove PDF passwords when you provide them, and install third-party software and Python packages. Use preview/confirmation for sensitive documents or shared printers, and prefer pinned dependencies or a virtual environment before running setup.

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
requirements.txt:1
Finding

Unpinned Third-Party Dependencies Permit Unreviewed Supply-Chain Code Execution

Content
View full analysis
=4.0 pikepdf>=8.0 python-docx>=1.1 openpyxl>=3.1 python-pptx>=0.6.23 pywin32>=306 Pillow>=10.0 pyyaml>=6.0 pymupdf>=1.24 ``` The setup script installs whichever compatible releases are available at installation time: ```powershell # --------------------------------------------------------------------------- # 3. Python packages # --------------------------------------------------------------------------- Write-Step "Python packages (pip)" $req = Join-Path $scriptDir "requirements.txt" if (-not (Test-Path $req)) { Write-Error "requirements.txt not found at: $req" exit 1 } pip install -r $req --quiet Write-OK "Python packages installed" ``` The Skill manifest also declares this installation command: ```yaml install: - method: shell cmd: pip install -r requirements.txt ``` ### Technical Analysis All nine dependencies use minimum-version constraints rather than exact versions. Consequently, two installations performed at different times can resolve to different, previously unaudited package versions. The project also provides neither a lockfile nor cryptographic hashes for the expected distribution artifacts. Python package installation may execute package-controlled build or installation logic. If a compatible dependency release or its distribution account is compromised, the documented installation workflow can download and execute that changed code without any modification to this repository. Transitive dependencies are also unconstrained. The reviewed package names correspond to established packages, and no direct evidence of dependency confusion, typosquatting, or a currently malicious release was found. The vulnerability is the absence of reproducible, integrit ...[truncated 1338 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (45)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description centers on a print skill, but this code chunk's primary purpose is office document manipulation for .docx, .xlsx, and .pptx files. The module docstring explicitly states that converting Office files to PDF for printing is done in a different file (scripts/print.py) and instructs callers to use print_file() there. None of the functions here send files to a printer or implement the advertised print options. Instead, they modify document contents and formatting. This is a clear description-behavior mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description presents a broad print automation skill, but the supplied code is a PDF-processing toolkit. While there is partial overlap on rotation, watermarking, and a 2-up style layout, the main behavior is not printing; it edits and transforms PDF files. The code is also narrower than declared in file-type support (PDF only) and broader in other undeclared capabilities (encryption, decryption, merging, splitting, extraction, compression, preview rendering). No code interfaces with printers, print dialogs, Adobe CC, or office/photo file formats. Therefore the description materially misrepresents the actual behavior.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The code’s core purpose broadly matches printing supported file types, including PDFs, Office documents, and photos. However, the description materially overstates capabilities. Implemented options are limited to printer selection, paper size, portrait/landscape orientation, duplex, color mode, scaling, page ranges, and copies. There is no implementation for 2-up layout, watermarking, Adobe CC integration, or substantive photo editing, and 'rotation' is only partially represented as page orientation. Additionally, while comments mention natural-language triggers, this code itself does not parse plain-language commands; it expects explicit arguments/params. Therefore the description does not accurately represent the actual behavior.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The decryption function removes password protection from PDFs and writes an unencrypted copy to disk, which directly enables exposure of protected document contents. In a print-assist skill, this is especially risky because it expands from print preparation into access-control bypass handling, and the resulting plaintext file may persist in accessible locations or logs.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill explicitly authorizes direct printing without confirmation, which creates irreversible physical side effects from natural-language input. In a chat-driven workflow, ambiguous wording, prompt injection via document content, or wrong printer resolution could cause unintended disclosure, waste, or printing to a sensitive/shared device before the user can review the job.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

Forcing German or English and automatically translating other languages without user opt-in removes user control over how their instructions are interpreted. This increases the chance of mis-execution for safety-relevant physical actions like printing, because the user may not notice that critical details were reformulated incorrectly.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The README encourages natural-language printing and file-editing actions, including photo background removal, Office edits, and direct printing, but does not clearly warn users that these operations may modify documents or trigger real-world side effects such as physical printing. In an agent-driven environment, ambiguous prompts or mistaken file selection could lead to unintended data alteration, waste of paper/ink, or disclosure of sensitive content to a printer without an explicit confirmation step.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The manifest declares a shell-based install command but does not define any explicit tool scope such as permissions or allowed-tools. That leaves operational boundaries implicit, which increases the chance that an agent or runtime grants broader execution capability than users expect, especially in a skill that also installs packages and interacts with local printing software.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill is presented as a printing assistant, but the documented capabilities include broader document manipulation, Office editing, and PDF crypto functions. This scope expansion is dangerous because users may authorize the skill for benign print tasks without realizing it can alter document contents or transform files in ways unrelated to printing.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill description does not adequately warn users that it can modify Office files and create derived artifacts such as merged, split, rotated, preview, or decrypted outputs. This is dangerous because users may consent to a print action while unintentionally allowing file modification or generation of extra local copies containing sensitive data.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

PDF encrypt/decrypt functionality is unrelated to the core purpose of a print assistant and introduces unnecessary access to document confidentiality controls. In context, this is more dangerous because printing workflows routinely involve sensitive documents, so bundling decryption into a print skill could expose protected content or normalize broader file access than required.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

Office content editing functions exceed what a user would reasonably expect from a printing-focused skill and create integrity risk for business documents. In this context, the mismatch is significant because a user asking to print a file may not expect the skill to modify Word, Excel, or PowerPoint content, potentially causing silent document tampering or accidental data corruption.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The module exposes broad document-modification primitives for Word, Excel, and PowerPoint even though the skill is described as print-focused. This expands the agent's authority beyond user expectations and creates a scope-mismatch risk where a caller intending to print can be induced to alter or destroy document contents instead.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The function permanently deletes a slide and saves the modified presentation without any confirmation, preview, soft-delete, or safeguard. In an agentic context, ambiguous language or prompt injection in surrounding workflows could trigger destructive edits that the user did not intend, causing data loss or document tampering.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The file exposes a much broader document-processing surface than the stated print-assist purpose suggests, including merging, splitting, extracting, encrypting, decrypting, watermarking, rendering previews, and compression. This capability mismatch increases the risk that the skill can be used for unintended document manipulation or data handling beyond printing, weakening least-privilege expectations and enabling abuse of sensitive files.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

Encryption itself is not inherently unsafe, but within this skill it is outside the narrowly described print-assist scope and indicates capability creep into general document security operations. That mismatch can mislead reviewers and users about what the skill can do, and combined with other document-processing features may facilitate unapproved handling of sensitive files.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The manifest describes a richer print-assistance capability set, including 2-up layout, rotation, watermarks, and photo editing via Adobe CC. In this file, supported parameters are limited to paper, orientation, duplex, color, scale, pages, and copies, and image handling only scales and prints images without Adobe integration or editing features.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/print.py (reported line 154)May include surrounding context.

python
"--outdir", str(output_dir),
        str(office_path),
    ]
    result = subprocess.run(cmd, capture_output=True, text=True)
    if result.returncode != 0:
        raise RuntimeError(f"LibreOffice Konvertierung fehlgeschlagen:\n{result.stderr}")

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/print.py (reported line 177)May include surrounding context.

python
"--outdir", str(output_dir),
        str(office_path),
    ]
    result = subprocess.run(cmd, capture_output=True, text=True)
    if result.returncode != 0:
        raise RuntimeError(f"LibreOffice Konvertierung fehlgeschlagen:\n{result.stderr}")

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The script performs system-modifying package installations via winget using the --silent flag, which suppresses normal installer interaction. Although progress messages are printed, there is no explicit warning or confirmation that the script will install software onto the machine before doing so.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

The pip install command changes the local Python environment and may download packages from external sources, but the script only labels the step as 'Python packages (pip)' without a clear disclosure of that impact. There is no confirmation prompt or upfront warning that dependencies will be installed automatically.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

Automatically translating user instructions can subtly change meaning, especially for page ranges, duplex options, color settings, or destructive editing requests. In a print automation skill, even small translation errors can lead to incorrect output or unintended document handling without the user realizing the instruction was transformed.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The setup instructions describe a one-command installation that automatically installs third-party software and enumerates local printers, but they do not warn users about those behaviors up front. While this is not an exploit by itself, lack of disclosure reduces informed consent and could surprise users in restricted or privacy-sensitive environments where software installation and device enumeration are controlled operations.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The 'What you can say' section provides example utterances but does not define a constrained trigger scope, exclusion conditions, or negative examples. Phrases like 'Rotate all pages 90 degrees and print' and 'Show me a preview before printing' are broad natural-language requests that could be matched in ordinary conversation about documents.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
97% confidence
Finding

The dependency is specified with a lower bound only, so builds may resolve to different versions over time, including versions with newly introduced breaking changes or known vulnerabilities. In a document-printing skill that processes potentially untrusted PDFs and Office files, dependency drift in parsers materially increases supply-chain and file-parsing risk.

Content

Scanner excerpt · requirements.txt (reported line 1)May include surrounding context.

text
pypdf>=4.0
pikepdf>=8.0
python-docx>=1.1
openpyxl>=3.1

Static analysis

No suspicious patterns detected.