Back to skill

Security audit

Printer Ai

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent local-printer tool, but it installs an unpinned executable from GitHub and includes physical print/cancel actions without clear confirmation guidance.

Review this before installing. Prefer a pinned commit or versioned release of the printer-ai package, and only allow the agent to print or cancel jobs after you confirm the file, printer, options, and job ID. Avoid sending sensitive documents to shared or unattended printers.

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

Error
Location
SKILL.md:5
Finding
Unpinned Executable Dependency Installed from a Mutable Git Repository<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:5` and `SKILL.md:30-33` **Vulnerability Type**: Unpinned third-party executable dependency **Risk Level**: High ### Vulnerable Code At `SKILL.md:5`: ```yaml metadata: {"openclaw":{"emoji":"🖨️","requires":{"bins":["printer-ai"]},"install":[{"id":"uv","kind":"uv","package":"git+https://github.com/NullYing/printer-ai-skills.git","bins":["printer-ai"],"label":"Install printer-ai (uv)"}]}} ``` At `SKILL.md:30-33`: ```bash # Install uv tool install git+https://github.com/NullYing/printer-ai-skills.git ``` ### Technical Analysis The skill instructs users and agents to install executable Python package code directly from a GitHub repository without pinning an immutable release, tag, or full commit hash. No package hash, artifact signature, or provenance verification is required. Because the URL resolves to the repository's mutable default branch, the code downloaded during a future installation can differ from the version reviewed during this audit. A compromised maintainer account, repository ownership change, malicious upstream commit, or compromised dependency could therefore alter the effective installation payload without requiring any change to this skill file. The installation process may execute package build or installation hooks. The resulting `printer-ai` executable is also trusted to process local file paths and interact with the operating system's printer subsystem. This creates a supply-chain trust boundary that is not protected by immutable versioning or integrity verification. This finding establishes an unsafe dependency-delivery mechanism; it does not establish that the current upstream repository is malicious. ### Attack Path 1. An attacker compromises the referenced GitHub repository, its maintainer account, or an upstream dependency used by the repository. 2. The attacker modifies the repository's default branch to include malicious installation hooks or runtime behavior. ...[truncated 1358 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. **Pin an immutable dependency revision** - Replace the mutable Git URL with a full, reviewed commit SHA. - Do not rely only on a branch or movable tag. Example: ```bash uv tool install "git+https://github.com/NullYing/printer-ai-skills.git@FULL_COMMIT_SHA" ``` 2. **Prefer a trusted package registry** - Publish the CLI as a versioned package. - Pin an exact audited version rather than allowing unconstrained upgrades. 3. **Verify package integrity** - Require cryptographic hashes for released artifacts and locked dependencies. - Verify signed commits, signed tags, or package provenance where supported. - Document the expected repository owner, commit SHA, and artifact digest. 4. **Lock transitive dependencies** - Generate and maintain a dependency lock file containing exact versions and hashes. - Review dependency changes before updating the pinned release. 5. **Harden the update process** - Use automated dependency and source-code scanning before approving a new revision. - Require code review and CI verification for updates to the pinned commit. - Avoid silently tracking the repository's default branch. 6. **Apply least privilege** - Install and run the CLI as an unprivileged user. - Do not grant administrator or root permissions unless strictly necessary. - Limit access to sensitive documents and printer-management interfaces where the operating system permits. ]]>
Vulnerability Patterns
  • 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
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (2)

Natural-Language Policy Violations

Low
Confidence
81% confidence
Finding
SQP-3 applies to all file types and covers language or locale policy violations. These lines include Chinese text embedded in otherwise English instructions, but the document does not say that multilingual output is optional or selected by the user.

Missing User Warnings

Low
Confidence
89% confidence
Finding
The skill enables actions that can cause immediate real-world side effects: printing can waste paper/ink or disclose sensitive documents, and cancel-job can interrupt active work. While the commands are legitimate for a printer-management skill, the documentation does not explicitly warn that these operations should only be performed with clear user confirmation, which increases the risk of unintended physical output or job disruption by an agent.

Static analysis

No suspicious patterns detected.