Back to skill

Security audit

Video Finder

Security checks for vulnerabilities and agentic risk

Overview

This adult-video search/download skill is not overtly malicious, but it needs Review because it stores sensitive local records and credentials while running loosely scoped shell-based downloads and cleanup.

Install only if you are comfortable with adult-site searches/downloads, local storage of viewing preferences and history, plaintext proxy configuration, background download/progress jobs, and shell commands touching your chosen download directory. Use a private environment, avoid storing reusable proxy passwords, review or delete generated JSON/history files, and treat download paths/proxy values as sensitive inputs.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (3)

T09 · Insecure Skill Coding Practices

Error
Location
download.md:53
Finding

Shell Command Injection Through an Unvalidated Download Directory

Content
View full analysis
/tmp/ytdlp-{ts}-{rand}.log 2>&1" ``` ### Technical Analysis The `dir` value may originate from `preferences.download_dir`, prior tracking/history records, or a directory supplied by the user. Although the workflow verifies that the path identifies a directory, it does not define character validation, canonicalization, or safe argument passing. The download command inserts `{dir}` directly into a shell command without quoting it: ```bash cd {dir} && yt-dlp ... ``` Consequently, shell separators, command substitutions, redirections, or other metacharacters embedded in the value may be interpreted by the shell. The disk-space command uses double quotes, but command substitution can still be evaluated if the runtime constructs a shell command by textual interpolation. Checking whether a directory exists does not make its textual representation safe for shell evaluation. A valid directory name may itself contain shell-significant characters. ### Attack Path 1. An attacker or untrusted user supplies a crafted download directory through the preference workflow or the first-download directory prompt. 2. The value is accepted because the referenced directory exists. 3. The Skill interpolates the value into `command="cd {dir} && yt-dlp ..."` or the disk-space command. 4. The shell parses the injected metacharacters or command substitution. 5. The injected command executes with the same operating-system privileges as the OpenClaw Agent process. ### Impact Assessment Successful exploitation can provide arbitrary command execution under the Agent host account. Depending on that account's permissions, an attacker could: - Read or modify file ...[truncated 490 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
proxy.md:60
Finding

Shell Command Injection Through Proxy and Target URL Interpolation

Content
View full analysis
:@:" \ -s -o /dev/null -w "%{http_code}" --connect-timeout 5 "" ``` The proxy values used in this command are collected and persisted earlier in `proxy.md:24-35`: ```json { "host": "", "port": "", "auth": { "username": "", "password": "" }, "proxy_required_sites": [""] } ``` ### Technical Analysis The Skill accepts proxy host, port, username, and password values from the user and later interpolates them into a shell command. No validation or safe argument-construction requirements are defined for these fields. Double quotes do not make arbitrary interpolated input safe when the resulting text is evaluated by a shell. Crafted quotation marks, command substitutions, backticks, newlines, or other shell syntax in a username, password, host, or target can alter the command's structure. The URL validation described in `download.md` applies to download URLs and does not protect the proxy probe command. The proxy workflow does not require the port to be an integer, restrict the host to a valid hostname or IP address, or reject control and shell-significant characters. ### Attack Path 1. An attacker supplies a malicious proxy username, password, host, port, or target value. 2. The Skill writes the proxy fields to `proxy.json` or uses them for the current session. 3. A site reachability check constructs the documented `curl` shell command. 4. The shell interprets injected syntax contained in one of the interpolated fields. 5. The injected command runs with the privileges of the Agent process. ### Impact Assessment Exploitation can result in arbitrary command execution under the OpenClaw Agent account. This may permit access to: - Lo ...[truncated 382 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
search.md:174
Finding

Plaintext Proxy Credentials Are Distributed to Unnecessary Search Subagents

Content
View full analysis
", "port": "", "auth": { "username": "", "password": "" }, "proxy_required_sites": ["", ""] } ``` The project explicitly acknowledges the sensitivity of this data in `AGENTS.md:72-73`, which states that `proxy.json` contains plaintext proxy credentials and must not be echoed or logged. ### Technical Analysis The search workflow directs the orchestrator to give every search subagent the complete proxy configuration. These subagents require network routing capability, but they do not need direct access to reusable usernames and passwords. This design violates least privilege and expands the credential exposure boundary from the proxy component to every concurrently launched search subagent. Prompt contexts, traces, debugging records, subagent failures, or unintended model output may retain or reveal the credentials. The instruction not to display the password does not provide an effective isolation boundary. Once a secret is inserted into a subagent context, that component has access to it regardless of whether normal output is intended to redact it. ### Attack Path 1. A user configures an authenticated proxy. 2. The username and password are stored in plaintext in `proxy.json`. 3. A search starts multiple engine and site-search subagents. 4. The orchestrator supplies the full proxy configuration to each subagent. 5. The reusable credentials become available in multiple A ...[truncated 836 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • 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
Findings (23)

Vague Triggers

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The description advertises vague trigger concepts such as '找片、搜片、下片、下载视频、JAV、Pornhub 等', which broadens matching beyond explicit consent to use this specific skill. In context, this is dangerous because the skill is designed to reach third-party adult sites, use proxies, and persist data locally, so ambiguous activation raises the chance of unintended high-risk behavior.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The trigger list is overly broad and includes generic terms like 'AV', 'porn', 'xxx', 'amateur', and 'NSFW', which can cause the skill to activate in unrelated or only loosely related conversations. Because this skill performs network access, proxy handling, and file-writing/download behavior, accidental invocation could lead to unintended searches, persistence, or downloads in a sensitive domain.

Content

No source excerpt is available for this finding.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
96% confidence
Finding

rm -f {output_dir}/*.part {output_dir}/*.part-Frag* {output_dir}/*.ytdl performs destructive shell expansion on a variable-derived path. Even though the finding does not show explicit shell metacharacter injection here, the operation is still dangerous because a malformed, attacker-controlled, or overly broad output_dir can cause deletion of unrelated files in arbitrary directories; the skill context increases risk because directory selection is partly automatic and persisted across runs.

Content

Scanner excerpt · download.md (reported line 233)May include surrounding context.

text
1. 从 downloads.json active 移除 → 移到 completed(成功)/ failed(失败)
2. rm -f {logfile}
3. rm -f {output_dir}/*.part {output_dir}/*.part-Frag* {output_dir}/*.ytdl
4. 取消该下载的动态 cron
5. 若 active 全部清空 → 取消心跳 cron

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README indicates the skill can be triggered by very generic phrases such as '找点东西看看', which can overlap with normal conversation and cause unintended activation. In a skill that searches for and downloads adult content, accidental triggering is more dangerous because it can lead to privacy-sensitive queries, unwanted NSFW actions, or background downloads without clear user intent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README states that user sexual preferences, proxy configuration, and viewing/download history are stored persistently, but it does not provide a clear privacy warning, retention policy, access controls, or deletion guidance. Given the adult-content context, this data is highly sensitive and could expose intimate preferences, circumvention infrastructure, and usage history if the local environment is shared, compromised, or backed up insecurely.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill defines persistent storage in files such as preferences.json, downloads tracking, and history.md, but does not present a clear upfront user warning that it will create and retain local records. For an adult-content skill, this is especially sensitive because these records can expose sexual interests, download history, paths, and operational metadata to other local users or future sessions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The workflow performs network access to third-party adult sites and may use proxy configuration, but the skill does not clearly warn users up front that their requests, metadata, and possibly credentials or traffic-routing choices may be exposed to external services. In this context, proxy use and adult-site access materially increase privacy and legal risk, making omission of a clear warning a meaningful safety issue.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The description lists activation terms including “下载”, “下片”, and especially “下回来”, which are broad colloquial phrases that could appear in ordinary conversation outside the intended skill context. The file does not provide narrowing constraints or negative examples to clarify when the skill should or should not activate.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

Automatically reusing the last successful download directory without explicit confirmation can cause files to be written into sensitive or unexpected locations, especially if prior state was manipulated or the user forgot the previous target path. In this skill, the risk is elevated because later cleanup and background execution also act on that derived path, compounding the consequences of a wrong directory choice.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The cleanup step deletes wildcard-matched files in the selected output directory without an explicit warning or strong path constraints. If output_dir is incorrect, attacker-influenced, or unexpectedly broad, the command can remove unrelated .part, .part-Frag*, or .ytdl files from that directory, making this more dangerous in a skill that auto-reuses prior directories and operates non-interactively in background jobs.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The trigger phrases include very common conversational terms such as '反馈', '评价', and '觉得怎么样', which can unintentionally activate the skill during unrelated conversations. Because this skill handles adult-content preference tracking and file writes, accidental invocation can cause unexpected collection or updating of sensitive sexual-interest data.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

All user-facing trigger text and reminder examples are written in Chinese, and the skill does not indicate that language choice is optional or region-specific. This can constitute a language/locale policy violation when the skill implicitly constrains interaction to one language without user opt-in.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill explicitly reads and writes preferences.json and history.md, adjusts weighted tags/authors, and auto-deletes low-weight tags without a clear user-facing notice or consent step. In the context of adult video consumption, these files can reveal highly sensitive sexual preferences, so silent persistence and mutation materially increase privacy and compliance risk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The file title and description are entirely in Chinese, with no indication that the user can choose another language or that the skill is explicitly limited to a Chinese-language audience. The policy requires flagging language or locale constraints when they are imposed without opt-in or clear justification.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The description lists triggers such as “改偏好” and especially “记喜好,” which are common conversational phrases that could arise in many contexts beyond this specific skill. The file does not provide clear boundaries, exclusions, or negative examples to distinguish when these phrases should invoke the skill versus ordinary conversation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The manifest description, headings, prompts, and command examples are all presented in Chinese, and the user-facing first-use questionnaire is explicitly phrased only in Chinese. There is no indication that the skill supports user language preference, offers opt-in for Chinese, or is intentionally limited to a Chinese-only regional context.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The instruction says that if the user says something specific they want to change, the skill should update only the corresponding field, but it does not define how specific or in-scope the request must be. This broad natural-language condition risks unintended invocation from ordinary preference statements that are not meant as configuration commands.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger list is broad enough to activate on common networking phrases like '代理', 'proxy', '网络不通', or '连不上', which can cause this skill to run outside its intended adult-video context. That increases the chance of unnecessary credential prompts, proxy-file writes, or unintended network probing in unrelated conversations.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill explicitly persists proxy credentials, including passwords, into ./proxy.json but only warns against displaying them, not about storing them at rest. If the skill directory, logs, backups, or host are accessible, those credentials can be recovered and reused to abuse the proxy, monitor traffic, or pivot into other systems.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrases are broad enough to activate on common terms like 搜索 or 搜一搜, which can cause this adult-content skill to run in unintended contexts. In this skill’s context, accidental invocation is more dangerous because it initiates adult-site searching, preference use, and external data transmission without a narrowly scoped adult-intent signal.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The design sends complete query variants, preference data, and proxy configuration to multiple concurrent subagents and external search engines/sites, but does not warn the user about this broad disclosure. In this context, the shared data includes highly sensitive adult-content interests, so unnecessary propagation materially increases privacy exposure, logging, profiling, and third-party retention risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill updates and persists inferred preference data back to preferences.json without clearly warning the user that their observed interests and tags will be stored. In an adult-content search skill, this is particularly sensitive because stored sexual preferences can reveal intimate personal data and create privacy, consent, and retention risks.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest description and operational text are written to drive Chinese-language interaction, including example prompts and user-facing messages, without offering a language choice. This can violate language or locale policy when a skill implicitly forces a specific language absent user opt-in or documented regional scope.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.