Back to skill

Security audit

超清修复强化细节 | 细节质感 | 图片超分 | 分块放大 | LinkPix

Security checks for vulnerabilities and agentic risk

Overview

This image-upscaling skill is purpose-aligned, but it should be reviewed because it tells agents to globally install or upgrade a mutable third-party CLI and use it with user images and a Qinghu account token.

Install only if you are comfortable with Qinghu/qhkit handling the selected images and with storing or providing a Qinghu API token. Prefer a pinned, reviewed qhkit version and a local or isolated install instead of global @latest, and require clear confirmation before any image upload or paid generation.

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:66
Finding
Unpinned Third-Party CLI Installation and Automatic Upgrade## Vulnerability Details **File Location**: `SKILL.md`, lines 66–72 and 94–98 **Vulnerability Type**: Insecure third-party dependency installation **Risk Level**: Medium ### Vulnerable Code ```bash npm i -g @iqinghu/qhkit ``` ```bash npm i -g @iqinghu/qhkit@latest ``` The Skill metadata also declares the dependency without an exact version: ```yaml metadata: {"openclaw":{"emoji":"🔬","requires":{"bins":["qhkit"]},"install":[{"kind":"node","package":"@iqinghu/qhkit","bins":["qhkit"]}]}} ``` ### Technical Analysis The Skill instructs the Agent to install and execute the mutable npm package `@iqinghu/qhkit` globally. Neither the metadata installation declaration nor the primary installation command pins an exact package version. The upgrade command explicitly requests the latest available release. Consequently, the executable code installed during a future invocation may differ from the code available when the Skill was audited. npm installations may also run package lifecycle scripts. If the package publisher, maintainer account, npm distribution channel, or documented fallback mirror is compromised, attacker-controlled code could execute during installation or when `qhkit` is invoked. Global installation is broader than necessary for a single image-processing task: it modifies the user-level or system-level Node.js command environment and persists after task completion. Although the document recommends `npx` after a global installation permission failure, that fallback is also unpinned and still retrieves mutable package code. The separately flagged pipeline at line 79 is not a `curl | bash` execution primitive: ```bash cd /tmp && curl -fsSL https://nodejs.org/dist/v22.22.3/SHASUMS256.txt | grep ' node-v22.22.3-linux-x64.tar.xz$' | sha256sum -c - ``` It passes downloaded checksum text to `grep` and `sha256sum`, not to a shell. The Node.js archive is extracted only after checksum validation, so that pipelin ...[truncated 1450 chars]
Remediation
## Remediation Suggestions 1. Pin `@iqinghu/qhkit` to a reviewed exact version in both Skill metadata and all installation commands; do not use `@latest`. 2. Record and verify the package integrity hash from a trusted lockfile or independently controlled manifest before execution. 3. Replace global installation with a task-scoped local installation in an isolated directory or container, and remove it after completion. 4. Avoid automatic upgrades based solely on CLI output or stderr notices. Require explicit user approval and security review before changing versions. 5. Use `npm install --ignore-scripts` where the package remains functional without lifecycle scripts. If scripts are required, inspect and approve them before installation. 6. Pin the `npx` fallback to the same reviewed exact version and prevent it from silently resolving a newer release. 7. Prefer the official npm registry. If a mirror is required, verify package integrity against independently trusted metadata rather than trusting the mirror for both the package and its verification data. 8. Run the CLI with only the filesystem, network, and credential access needed to upload the selected image and poll the workflow. Do not expose unrelated secrets to the process.
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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 (2)

Vague Triggers

Medium
Confidence
94% confidence
Finding
The skill metadata says the skill 'must' trigger for broad, common image requests such as making an image clearer, larger, or higher resolution. This can cause the agent to over-invoke an external paid workflow for ambiguous requests, reducing user choice and potentially sending user images to a third-party service when a simpler or local response would suffice.

Vague Triggers

Low
Confidence
87% confidence
Finding
The usage examples expand activation to several vague scenarios like 'too blurry', 'HD-ify', or 'old photo restoration' without clearly defining boundaries. In context, this increases the chance of unnecessary or premature invocation of a paid third-party tool, especially because the skill also instructs quoting, submission, polling, and delivery through an external CLI.

Static analysis

No suspicious patterns detected.