Back to skill

Security audit

AI爆款视频复刻 | 爆款模仿 | 热门视频复刻 | 视频二创 | 青虎AI

Security checks for vulnerabilities and agentic risk

Overview

The skill performs its advertised video-generation workflow, but it also directs agents to install and upgrade unpinned command-line software globally and to follow upgrade commands from tool output.

Review this skill carefully before installing. It appears aimed at a real video-generation workflow, but only use it in an environment where you are comfortable installing third-party npm tooling, sending media and prompts to the qhkit service, and storing a QHKIT token. Prefer a pinned local install, do not run upgrade commands copied from error messages, and avoid pasting tokens into chat or shell history.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:62
Finding
Execution of Server-Controlled Upgrade Instructions Without Validation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, line 62 **Vulnerability Type**: `T09: Insecure Skill Coding Practices` **Risk Level**: High ### Vulnerable Snippet The relevant instruction, translated into English from the source, is: ```text If the command returns {"ok":false,"stage":"version",...}, the message contains the upgrade command; follow it directly. ``` The document later presents the expected upgrade command: ```bash npm i -g @iqinghu/qhkit@latest ``` ### Technical Analysis The Skill tells the agent to execute an upgrade command supplied through the CLI's `message` field without validating that the returned text matches an approved command. That output crosses a trust boundary: it can originate from the installed package or from a remote service contacted by the package. An error message must be treated as untrusted data, not as executable instructions. If the package, its backend, its update mechanism, or an intercepted dependency response is compromised, an attacker could place an arbitrary shell command in the version-gate message. The agent may then execute that command under the local user's account. Although the document provides a normal npm upgrade command elsewhere, it does not require the agent to ignore alternative commands embedded in the response, validate a package version, constrain the command to npm, or obtain explicit user approval. ### Attack Path 1. An attacker compromises the `@iqinghu/qhkit` package, its publishing account, or a backend service that controls version-gate responses. 2. The attacker causes the CLI to return a response with `stage` set to `version`. 3. The response's `message` field contains an attacker-selected shell command rather than a legitimate upgrade command. 4. The Skill instructs the agent to follow the command in the message directly. 5. The command executes with the privileges and environment access of the agent process. ### Impact Assessment Successful exploitation can pr ...[truncated 577 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Never execute commands obtained from CLI output, API responses, error messages, or other untrusted text. - Replace the directive with a fixed, locally defined upgrade procedure. - Pin upgrades to an explicitly approved version rather than using `@latest`. - Validate version strings against a strict semantic-version pattern before using them as package-manager arguments. - Display the proposed package name and version to the user and require explicit approval before installation. - Prefer a project-local installation over a global installation. - Verify package integrity using a lockfile and registry-provided integrity metadata. - Treat the `message` field only as text to display to the user. - If automated upgrades are necessary, implement an allowlist that permits only the exact package name and a validated version argument, without invoking a shell. ]]>

T08 · Insecure Dependencies

Error
Location
SKILL.md:42
Finding
Unpinned Third-Party Package Installation With Global or Ephemeral Execution<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 42–46 and line 66 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: High ### Vulnerable Snippet ```bash npm i -g @iqinghu/qhkit ``` The same installation section also recommends ephemeral package execution: ```bash npx @iqinghu/qhkit <command> ... ``` The upgrade procedure explicitly installs the newest available release: ```bash npm i -g @iqinghu/qhkit@latest ``` The instructions additionally permit use of an alternative registry: ```bash --registry=https://registry.npmmirror.com ``` ### Technical Analysis The package is installed without a pinned version or recorded integrity value. Both an unversioned npm installation and `@latest` resolve to package content that can change after the Skill has been reviewed. `npx` can similarly retrieve and execute package code at invocation time. npm installation may execute package lifecycle scripts. Consequently, compromise of the package publisher account, registry metadata, package release, or permitted mirror can cause attacker-controlled code to run during installation. The Skill does not provide a lockfile, integrity digest, vetted version, provenance requirement, or lifecycle-script restriction. Global installation further increases the affected scope by placing the executable in a shared user-level or system-level command location. It is not the minimum privilege or installation scope necessary to invoke a CLI for one Skill. If a user responds to a permissions error by running the global installation with elevated privileges, lifecycle scripts could run with those elevated privileges, although the document itself does not explicitly instruct the user to elevate. The mirror fallback creates an additional supply-chain trust boundary. While use of a mirror is not inherently malicious, its metadata and package content must be verified to the same standard as the primary registry. ### Attack Path 1. An attacker compr ...[truncated 1507 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Pin `@iqinghu/qhkit` to a reviewed, immutable version. - Include a lockfile containing the expected package resolution and integrity metadata. - Prefer a project-local installation and invoke the binary from the local dependency directory. - Avoid `npx` for unpinned packages because it may download and execute content at invocation time. - Avoid automatic `@latest` upgrades. Review and approve each new version before deployment. - Use npm provenance or signature verification where available. - Consider installation with lifecycle scripts disabled, followed by explicit review of any required build step. - Verify package tarball integrity before installation and document the expected digest. - Require explicit user approval before installing or upgrading dependencies. - Use the primary npm registry unless the alternative registry has equivalent integrity verification and an explicitly documented trust policy. - Do not recommend privilege elevation for global installation failures; fall back to a controlled local installation instead. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
The skill explicitly instructs the agent to bootstrap missing dependencies by installing Node.js and the qhkit CLI onto the host, which exceeds the narrow task of analyzing and cloning a video style. Even though it includes checksum verification for Node.js, it still authorizes broad host modification and package installation from network sources, increasing supply-chain and environment-tampering risk if followed automatically.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill tells the agent to run shell commands such as global npm installs and fallback execution paths without a clear user-facing consent step or warning that the local environment will be modified. In an agent setting, this can lead to unexpected package installation, PATH changes, and execution of third-party code, which is dangerous even if the package is legitimate.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The skill instructs the user/agent to set and use an API token via command line or environment variable but does not include safeguards about secret handling, redaction, shell history exposure, or avoiding accidental disclosure in logs and chat transcripts. In an automated agent workflow, this raises the risk of credential leakage and unauthorized use of the linked account.

Static analysis

No suspicious patterns detected.