Back to skill

Security audit

file-processor

Security checks for vulnerabilities and agentic risk

Overview

This skill locally extracts previews from user-provided documents and images, with no evidence of hidden data transfer, persistence, or destructive behavior.

Install this in an isolated environment and avoid processing confidential or regulated files unless you are comfortable with their contents being parsed and shown in the agent response. Pin dependencies, add pandas to the documented install list, and consider a consent prompt for sensitive uploads.

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:27
Finding
Unpinned Third-Party Dependencies## Vulnerability Details **File Location**: `SKILL.md`, lines 27–29 **Vulnerability Type**: Supply-chain risk from mutable dependency resolution **Risk Level**: Medium **Complete Code Snippet**: ```bash pip install pdfplumber openpyxl python-docx pytesseract pillow ``` ### Technical Analysis The installation command specifies package names without exact versions or integrity hashes. Consequently, each installation can resolve different package and transitive-dependency versions from the configured package index. This makes the installed code mutable after the Skill has been reviewed and prevents reproducible verification of its dependency set. If an upstream package, maintainer account, release process, package index, or transitive dependency is compromised, malicious code could run during package installation or when `processor.py` imports and uses the affected library. The code also imports `pandas` at `processor.py:80`, but the documented command does not install it, which may prompt users to perform an additional unreviewed installation. This finding identifies dependency-management exposure; the reviewed files contain no evidence that the project itself controls or has compromised any named package. ### Attack Path 1. An attacker compromises a named package, one of its transitive dependencies, its publishing account, or the package source used by the victim. 2. The attacker publishes a malicious release that satisfies the unconstrained dependency request. 3. A user or automated agent follows the instruction in `SKILL.md` and runs the provided `pip install` command. 4. The resolver downloads the current malicious release because no reviewed version or hash is enforced. 5. Malicious code executes during installation or later when the dependency is imported while processing a document. ### Impact Assessment Successful exploitation could execute code with the privileges of the account running `pip` or `processor.p ...[truncated 522 chars]
Remediation
## Remediation Suggestions 1. Create a reviewed dependency manifest that pins every direct dependency to an exact version, including `pandas`, which is imported by `processor.py`. 2. Generate and retain a lock file that fixes transitive dependency versions. 3. Require cryptographic hashes for downloaded distributions, such as through a hash-locked requirements file installed with `pip install --require-hashes`. 4. Download packages only from an explicitly configured, trusted package index or an internally controlled artifact repository. 5. Review and scan dependency updates before modifying the lock file; use automated vulnerability and provenance checks where available. 6. Install dependencies in an isolated virtual environment under a non-privileged account rather than using administrative or system-wide installation. 7. Keep installation documentation synchronized with actual imports so users are not prompted to install missing packages ad hoc.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill describes automatic handling of uploaded files but does not warn users that files will be parsed, OCR-processed, and summarized, which may expose personal, confidential, or regulated data. In a file-processing context, this omission is particularly risky because users may upload sensitive content without understanding the privacy implications.

Vague Triggers

Medium
Confidence
93% confidence
Finding
The activation text says users can 'directly send files' and the skill will automatically process them by format, without clear scope limits, consent cues, or exclusions. This can cause the skill to trigger on arbitrary uploads, including sensitive documents, increasing the chance of unintended data access and privacy violations.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The module docstring and all user-facing strings are written in Chinese, indicating the skill is designed to interact in a specific language by default. Because the file does not offer a language choice or explain a region-specific requirement, this is a natural-language locale policy issue under the stated rules.

Natural-Language Policy Violations

Medium
Confidence
98% confidence
Finding
The call to pytesseract.image_to_string uses a fixed lang value of 'chi_sim+eng', which imposes specific OCR languages regardless of user preference. This is a locale/language constraint that is neither optional nor justified in the file.

Static analysis

No suspicious patterns detected.