Back to skill

Security audit

电商详情图生成 | 详情页长图 | 卖点图 | 高转化详情 | LinkPix

Security checks for vulnerabilities and agentic risk

Overview

The skill’s image-generation purpose is coherent, but it asks the agent to install and upgrade mutable third-party CLI code and store a service token with limited user control.

Review before installing. This skill is not showing deception or destructive behavior, but it relies on qhkit, uploads product assets to an external service, uses an API token, may spend credits, and can install or upgrade mutable npm code. Prefer a sandboxed environment, a narrowly scoped token, and a pinned reviewed qhkit version rather than global install, npx, or @latest upgrades.

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:41
Finding
Unpinned Third-Party Package Installation and Execution<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:6`, `SKILL.md:41-45`, and `SKILL.md:71` **Vulnerability Type**: Unpinned and automatically executed npm dependency **Risk Level**: Medium ### Complete Code Snippets ```yaml metadata: {"openclaw":{"emoji":"📄","requires":{"bins":["qhkit"]},"install":[{"kind":"node","package":"@iqinghu/qhkit","bins":["qhkit"]}]}} ``` ```bash npm i -g @iqinghu/qhkit ``` ```bash npx @iqinghu/qhkit <command> ... ``` ```bash npm i -g @iqinghu/qhkit@latest ``` ### Technical Analysis The Skill installs and executes `@iqinghu/qhkit` without pinning it to an exact, previously reviewed version or enforcing a package integrity value. The metadata installation declaration, global npm installation, `npx` fallback, and explicit `@latest` upgrade can retrieve package contents that change after this Skill has been audited. npm packages may execute lifecycle scripts during installation. The installed `qhkit` executable also runs arbitrary code supplied by the package publisher. Global installation and `npx` therefore expose the host to code obtained from an external package registry under the privileges of the user running the Agent. The documented fallback to `registry.npmmirror.com` introduces an additional distribution dependency. Although it may be a legitimate mirror, using multiple mutable package sources expands the supply-chain trust boundary. The separate Node.js download procedure at `SKILL.md:49-50` is not a `curl | bash` operation. It downloads a fixed archive and validates it with `sha256sum` before extraction. The pipeline only filters checksum data and does not pipe downloaded code into a shell. It is consequently not treated as a confirmed remote-script execution vulnerability. ### Attack Path 1. An attacker compromises the npm publisher account, the `@iqinghu/qhkit` package, a configured registry, or a registry mirror. 2. The attacker publishes a malicious replacement under the unpinned package version o ...[truncated 1421 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin `@iqinghu/qhkit` to an exact reviewed version in both metadata and commands rather than using an unversioned package or `@latest`. 2. Verify the package using a trusted integrity digest or a committed lockfile before installation. 3. Remove automatic upgrades to `@latest`. Require explicit user approval and a new security review before changing versions. 4. Avoid global installation and automatic `npx` execution. Prefer a project-local, isolated installation with a controlled dependency manifest. 5. Where compatible with the package, install with npm lifecycle scripts disabled and separately review any scripts that must be enabled. 6. Restrict the CLI process to a sandbox with access only to the product assets required for the requested generation task. 7. Provide the API token through a narrowly scoped environment variable or protected credential mechanism, and prevent child processes from accessing unrelated secrets. 8. Use one explicitly trusted registry and document its trust assumptions. If a mirror is necessary, apply the same version and integrity verification. 9. Run dependency provenance, signature, malware, and vulnerability checks before approving each package release. ]]>
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • 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
Findings (4)

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
The skill instructs the agent to install Node.js, globally install/upgrade qhkit, and modify PATH/environment state, which expands the agent's capabilities well beyond generating detail-page images. Even though the instructions include checksum verification, they still authorize system modification and remote package installation from external registries, increasing supply-chain and host-integrity risk if automatically followed.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
The skill directs the agent to collect, set, and persist an API token via command line or environment variables. This gives the skill credential-handling behavior unrelated to simple prompt routing and can cause secrets exposure, unintended persistence, or misuse if the agent retrieves, stores, or echoes tokens insecurely.

Vague Triggers

Medium
Confidence
88% confidence
Finding
The manifest says requests for generating detail images, long images, product intro images, or selling-point images 'must' trigger the skill, using broad keywords that can match many ordinary image-editing requests. Overbroad mandatory triggering can cause unintended tool invocation, exposing user files or routing users into external services without clear necessity or consent.

Vague Triggers

Medium
Confidence
84% confidence
Finding
The 'when to trigger' section gives broad examples but no clear non-trigger boundaries, so the skill may activate in situations where the user only wants advice, mock copy, or a different image workflow. In this skill's context, ambiguous activation is more dangerous because invocation can lead to external CLI use, uploads, installation steps, and credential setup.

Static analysis

No suspicious patterns detected.