Back to skill

Security audit

Video to Skill Extractor

Security checks for vulnerabilities and agentic risk

Overview

The skill has a coherent video-to-skill purpose, but it defaults to using the user's Chrome browser session and can send sensitive video-derived content to unspecified remote models without clear consent controls.

Install only after revising the workflow to default to unauthenticated downloads, require explicit consent before any browser-cookie or remote-model use, disclose providers and data sent, redact sensitive screen content, and require a security review before installing any generated skill.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
Findings (4)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
SKILL.md:267
Finding

Unnecessary Browser Session Cookie Access During Video Retrieval

Content
View full analysis
" ``` ```bash yt-dlp \ --cookies-from-browser chrome \ --write-info-json \ --write-thumbnail \ --write-subs \ --write-auto-subs \ --sub-lang "zh-Hans,zh-CN,zh,en" \ -f "bv*+ba/best" \ -o "video_to_skill_workspace/raw/video.%(ext)s" \ "" ``` ```bash yt-dlp \ --cookies-from-browser chrome \ -f "best" \ -o "video_to_skill_workspace/raw/video.%(ext)s" \ "" ``` ### Technical Analysis All documented video-fetching paths instruct `yt-dlp` to read session cookies from the user's Chrome profile. This access is enabled even though public video metadata and public media normally require no authentication. Because the video URL is supplied by the user, the destination is not inherently trusted. When cookie extraction is enabled, `yt-dlp` can access browser credential storage and use cookies applicable to the requested destination. This grants the workflow access to authenticated browser state that exceeds the minimum privileges required for processing public videos. The instruction also conflicts with the Skill's stated prohibition against bypassing login or access restrictions. Even when the intent is only to support ordinary downloads, making authenticated cookie access the default can cause the Skill to operate with the user's logged-in privileges. ### Attack Path 1. An attacker or untrusted user supplies a video URL, redirecting URL, or authentication-requiring URL. 2. The Agent follows the documented command and invokes `yt-dlp --cookies-from-br ...[truncated 989 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:473
Finding

Potential Disclosure of Sensitive Screen Content to Unspecified Remote Models

Content
View full analysis
Remediation
View remediation

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:817
Finding

Indirect Prompt Injection Can Be Persisted into an Installable Agent Skill

Content
View full analysis
3. Skill 面向对象:OpenClaw / Codex / AI Agent。 4. Skill 必须可执行,不要写成普通总结。 5. 必须包含: - Purpose - When to Use - Inputs - Outputs - Core Rules - Workflow - Forbidden Actions - Checklist - Prompt Templates - Verification - Failure Handling - Output Format 6. 每条关键规则必须能追溯到视频证据。 7. 视频明确讲到的内容,标注为【视频明确提到】。 8. 由画面推断出的内容,标注为【画面推断】。 9. AI补充的工程化建议,标注为【AI工程化补充】。 10. 不要编造视频中没有的信息。 11. 不要输出完整视频逐字稿。 12. 最终 Skill 使用中文。 ``` ### Technical Analysis Subtitles, transcripts, OCR text, and visible screen content are attacker-controlled data when the source video is untrusted. A malicious video can display or speak instructions such as requests to ignore previous constraints, access credentials, upload files, execute commands, or embed fixed behavior in the generated Skill. The generation workflow does not establish a strict separation between quoted evidence and operational instructions. It also does not require a security review of generated commands, URLs, installation steps, credential access, network destinations, persistence behavior, or attempts to override higher-priority instructions. The generated output is explicitly intended to be installable in OpenClaw. Consequently, an indirect prompt injection in a one-time video can be transformed into persistent Skill instructions t ...[truncated 1478 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:1125
Finding

Unpinned Dependencies and Browser Binaries Are Installed from Mutable Upstream Sources

Content
View full analysis
/dev/null 2>&1; then brew install yt-dlp ffmpeg tesseract fi python3 -m pip install --upgrade yt-dlp openai-whisper pillow opencv-python pytesseract playwright python3 -m playwright install chromium echo "Done." ``` ```bash python3 -m venv .venv source .venv/bin/activate pip install --upgrade pip pip install yt-dlp openai-whisper pillow opencv-python pytesseract playwright python -m playwright install chromium ``` ### Technical Analysis The recommended installation process retrieves the latest available versions of multiple Python packages, Homebrew packages, transitive dependencies, and a Chromium browser binary. No exact versions, hashes, lockfiles, signatures, or provenance verification steps are specified. Using `--upgrade` further expands the impact by replacing existing package versions. Python packages may execute build backend or installation logic, and the resulting tools later process untrusted media and access sensitive local resources. A compromised upstream release or transitive dependency would therefore execute within the user's environment. The use of a virtual environment in the second example improves isolation but does not address dependency integrity or mutable versions. ### Attack Path 1. An upstream package, transitive dependency, package account, mirror, or distributed browser artifact is compromised. 2. The user or Agent runs the recommended installer. 3. The package manager resolves the newest mutable release because no version or hash is pinned. 4. Installation or build logic executes with the invoking user's privileges. 5. The compromi ...[truncated 788 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (11)

YARA rule 'info_stealer': Information stealer patterns (credential harvesting, browser data theft) [malware]

High
Category
YARA Match
Confidence
93% confidence
Finding

The --cookies-from-browser chrome pattern is commonly associated with credential or session extraction because it reads authenticated browser state and passes it to another tool. Although the apparent goal here is content retrieval rather than credential theft, embedding this behavior in an agent skill is dangerous because it can exfiltrate or misuse sensitive session data and materially expands the blast radius of any compromise.

Content

Scanner excerpt · SKILL.md (reported line 269)May include surrounding context.

��。

示例:

视频主题:

text
Vibecoding 遇到 Bug 怎么修?新手必看的 AI 改bug指南

自动生成 Skill 名称:

text
vibecoding_bugfix_debug_skill

Step 2:获取视频元信息

优先尝试获取:

  • 标题
  • 作者
  • 发布时间
  • 视频时长
  • 视频简介
  • 分 P 信息
  • 标签
  • 封面
  • 字幕信息

推荐命令:

bash
yt-dlp \
  --cookies-from-browser chrome \
  --write-info-json \
  --write-thumbnail \
  --skip-download \
  -o "video_to_skill_workspace/raw/%(id)s.%(ext)s" \
  "<VIDEO_URL>"

如果失败,记录错误到:

text
output/debug_report.md

错误记录格式:

markdown
## Video Metadata Fetch Failed

- URL:
- Command:
- Error:
- Possible reason:
- Suggested fallback:

Step 3:下载视频或使用本地视频

优先使用 yt-dlp:

bash
yt-dlp \
  --cookies-from-browser chrome \
  --write-info-json \
  --write-thumbnail \
  --write-subs \
  --write-auto-subs \
  --sub-lan

YARA rule 'info_stealer': Information stealer patterns (credential harvesting, browser data theft) [malware]

High
Category
YARA Match
Confidence
91% confidence
Finding

The YARA hit is justified by the repeated use of --cookies-from-browser chrome, which matches credential-access behavior seen in infostealer patterns. While the surrounding skill appears aimed at content extraction rather than outright malware, instructing an agent to harvest browser cookies for automated use is still dangerous because it normalizes access to authenticated secrets and can expose account/session data beyond the minimum needed.

Content

Scanner excerpt · video_to_skill_extractor_SKILL.md (reported line 269)May include surrounding context.

��。

示例:

视频主题:

text
Vibecoding 遇到 Bug 怎么修?新手必看的 AI 改bug指南

自动生成 Skill 名称:

text
vibecoding_bugfix_debug_skill

Step 2:获取视频元信息

优先尝试获取:

  • 标题
  • 作者
  • 发布时间
  • 视频时长
  • 视频简介
  • 分 P 信息
  • 标签
  • 封面
  • 字幕信息

推荐命令:

bash
yt-dlp \
  --cookies-from-browser chrome \
  --write-info-json \
  --write-thumbnail \
  --skip-download \
  -o "video_to_skill_workspace/raw/%(id)s.%(ext)s" \
  "<VIDEO_URL>"

如果失败,记录错误到:

text
output/debug_report.md

错误记录格式:

markdown
## Video Metadata Fetch Failed

- URL:
- Command:
- Error:
- Possible reason:
- Suggested fallback:

Step 3:下载视频或使用本地视频

优先使用 yt-dlp:

bash
yt-dlp \
  --cookies-from-browser chrome \
  --write-info-json \
  --write-thumbnail \
  --write-subs \
  --write-auto-subs \
  --sub-lan

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrases are broad enough to match ordinary requests like understanding or summarizing a video, which can cause the skill to activate unexpectedly on generic user prompts. In context, unexpected activation is risky because this skill may fetch external content, run multiple tools, and process large media inputs without the user clearly intending those actions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill describes commands that may access browser cookies and retrieve external media, but it does not provide a clear warning to users that authenticated browser data may be read and used. This lack of disclosure weakens informed consent and makes accidental exposure of session tokens or unauthorized content access more likely.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill says it must not bypass login or paywall restrictions, yet it recommends using yt-dlp --cookies-from-browser chrome, which imports a user's authenticated browser session into another tool. That creates a clear contradiction and can enable access to content that would otherwise be gated, while also exposing sensitive session material to the workflow.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The download workflow again defaults to importing browser cookies for video, subtitle, and metadata retrieval. Repeating this as the primary path normalizes authenticated scraping and undermines the stated compliance rules, increasing the chance that the skill will process restricted content using the user's active web session.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The prompt template explicitly says '最终 Skill 使用中文', which imposes a fixed output language. Elsewhere the file includes an 'output_language' input field, so forcing Chinese here conflicts with a user-selectable locale and violates the requirement not to force a specific language without opt-in.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The trigger phrases are broad enough to activate on ordinary requests like 'help me understand this video' or 'summarize this video,' causing a high-risk skill to run in contexts where the user may not expect downloading media, OCR, ASR, or use of external tools/services. This increases the chance of unintended data processing and over-collection.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill does not clearly warn users that it may access browser cookies and may process video-derived content through external ASR, OCR, vision, or model services. This lack of disclosure can lead to unauthorized handling of private session data and sensitive video/transcript content, especially if the video is non-public or contains confidential material.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill prohibits bypassing access restrictions, yet its recommended commands explicitly read authenticated browser cookies via --cookies-from-browser chrome. That can silently use the user's logged-in session to access resources and broadens the skill's access to sensitive browser-stored credentials/tokens beyond what is clearly disclosed.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The instruction “最终 Skill 使用中文” mandates a single output language in natural-language guidance. This conflicts with the policy requirement to avoid forcing a specific language or locale unless the user explicitly opts in or the constraint is clearly justified.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.