Back to skill

Security audit

AI视频去水印 | 去水印 | 去除水印 | 视频水印移除 | 青虎AI

Security checks for vulnerabilities and agentic risk

Overview

The skill performs its stated video watermark-removal function, but it asks agents to install and upgrade a mutable global CLI that handles user videos and API credentials for an external service.

Review this skill before installing. Use it only for videos you own or are authorized to edit, expect local videos to be uploaded to Qinghu/qhkit, and avoid running the global npm install or @latest upgrade in an environment that contains unrelated secrets. A pinned, local, isolated install with a narrowly scoped API token would reduce the risk.

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:36
Finding
Unpinned Third-Party Package Is Installed and Executed Globally<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 6, 32–38, and 54–58 **Vulnerability Type**: Unpinned and globally installed third-party executable dependency **Risk Level**: Medium ### Vulnerable Code ```yaml metadata: {"openclaw":{"emoji":"💧","requires":{"bins":["qhkit"]},"install":[{"kind":"node","package":"@iqinghu/qhkit","bins":["qhkit"]}]}} ``` ```bash npm i -g @iqinghu/qhkit ``` ```bash npm i -g @iqinghu/qhkit@latest ``` ### Technical Analysis The Skill instructs the Agent to install and execute `@iqinghu/qhkit` without pinning it to a reviewed version or integrity digest. The upgrade procedure explicitly selects `@latest`, allowing the effective executable code to change after this Skill has been audited. The package is installed globally rather than in an isolated, project-local environment. npm lifecycle scripts may execute during installation, and the installed CLI subsequently handles the service API token, local video paths, network uploads, and generated output. The package source and lockfile are not included in the reviewed project, so those operations cannot be independently verified by this audit. The alternative npm mirror does not inherently establish malicious behavior, but it adds another supply-chain source from which the mutable package may be retrieved. ### Attack Path 1. An attacker compromises the npm package, its publisher account, a release process, or a configured package-distribution source. 2. The attacker publishes a malicious release under the legitimate `@iqinghu/qhkit` package name. 3. The Agent follows the Skill instructions and resolves either the current unpinned release or `@latest`. 4. Malicious code executes through an npm lifecycle script during installation or when the `qhkit` command is invoked. 5. The code operates with the privileges of the account running npm. It can access that account's environment variables, submitted video files, API credentials, writable files, and available n ...[truncated 986 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin `@iqinghu/qhkit` to a specific, reviewed version instead of using an unversioned package or `@latest`. 2. Record and verify the expected package integrity digest. Use a committed lockfile and `npm ci` where possible. 3. Remove automatic upgrade instructions. Require review and integrity verification before adopting a new release. 4. Prefer a project-local installation over `npm i -g`, and invoke the pinned binary from the local dependency directory. 5. Audit npm lifecycle scripts before installation. Disable them with `--ignore-scripts` when they are not required. 6. Run the CLI as a dedicated, unprivileged user or inside a restricted container with access only to the explicitly selected input files and an isolated output directory. 7. Restrict outbound network access to the documented service endpoints where operationally feasible. 8. Avoid exposing unrelated secrets to the CLI process. Pass a narrowly scoped service token through a controlled secret mechanism and rotate it if compromise is suspected. 9. Document the upload destination, retention policy, privacy terms, and deletion process, and obtain user consent before uploading local media. 10. Vendor or publish auditable source for the dependency so its credential handling, upload behavior, and filesystem access can be reviewed. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (2)

Vague Triggers

Medium
Confidence
92% confidence
Finding
The trigger language is very broad and explicitly mandates activation for common phrases like '去水印' and '去logo', increasing the chance the skill is invoked in contexts the user did not clearly intend. In this skill’s context, that can route ordinary editing requests into a workflow that removes ownership markers from media, which carries legal, policy, and misuse risk.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill states that local file paths are automatically uploaded and public URLs are accepted, but it does not require an upfront disclosure that user media will be transmitted to an external service. This can expose sensitive or proprietary video content without informed consent, especially if users believe processing is local because they supplied a local filesystem path.

Static analysis

No suspicious patterns detected.