Back to skill

Security audit

YouTube Video Downloader

Security checks for vulnerabilities and agentic risk

Overview

The skill largely does what it claims, but it can send non-YouTube or sensitive URLs to a third-party API and lacks enough safeguards around download legality and unbounded output.

Install only if you are comfortable sending submitted video URLs and your RedFox API key to redfox.hk. Use it only with YouTube links you own or are authorized to download, avoid private or tokenized URLs, and be aware that long or unexpected API responses may be printed without limits.

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 (1)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/downloader.py:154
Finding

Arbitrary URLs Are Disclosed to a Third-Party API Without YouTube Domain Validation

Content
View full analysis
Remediation
View remediation
` format. 7. Reject malformed URLs, nonstandard ports, fragments, and unexpected hostnames before making the API request. 8. Avoid logging the complete URL when it may contain sensitive query parameters; redact query values where practical. 9. Clearly disclose in the documentation that accepted video URLs are sent to the RedFox third-party service. Example validation approach: ```python from urllib.parse import urlsplit ALLOWED_HOSTS = { "youtube.com", "www.youtube.com", "m.youtube.com", "youtu.be", } def validate_youtube_url(value): parsed = urlsplit(value) if parsed.scheme != "https": raise ValueError("Only HTTPS YouTube URLs are allowed") hostname = (parsed.hostname or "").lower().rstrip(".") if hostname not in ALLOWED_HOSTS: raise ValueError("The URL must use an approved YouTube hostname") if parsed.username is not None or parsed.password is not None: raise ValueError("URLs containing embedded credentials are not allowed") if parsed.port not in (None, 443): raise ValueError("Nonstandard ports are not allowed") return parsed.geturl() ``` Apply this validation before displaying the URL or calling `session.post`. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (12)

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

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

md
- **Content Type**: Video/Audio (MP4 / WebM / M4A and other formats; resources may include video and audio files)
- **Input**: Paste a YouTube video link (one link per request; batch upload not supported)
- **Output**: Returns the video download URL directly — copy it into your browser or download tool to save
- **Link Display Rule**: Download and cover links must be displayed in full; never use `...` or any form of truncation
- **Field Display Rule**: The returned result must fully display the following fields:
  - Description (desc): full text displayed line by line, no truncation
  - Resource list: for each resource object, display its type, duration (durationSeconds), download link (downloadUrl), and cover link (coverUrl)

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

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

md
- **Content Type**: Video/Audio (MP4 / WebM / M4A and other formats; resources may include video and audio files)
- **Input**: Paste a YouTube video link (one link per request; batch upload not supported)
- **Output**: Returns the video download URL directly — copy it into your browser or download tool to save
- **Link Display Rule**: Download and cover links must be displayed in full; never use `...` or any form of truncation
- **Field Display Rule**: The returned result must fully display the following fields:
  - Description (desc): full text displayed line by line, no truncation
  - Resource list: for each resource object, display its type, duration (durationSeconds), download link (downloadUrl), and cover link (coverUrl)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill prominently promotes downloading watermark-free YouTube media for remixing, backup, and competitor analysis but omits warnings about copyright, authorization, or platform-policy restrictions. In context, this omission makes the capability more dangerous because it normalizes potentially infringing or terms-violating acquisition of third-party content without informed user consent about legal risk.

Content

No source excerpt is available for this finding.

Unbounded Output

Medium
Category
Output Handling
Confidence
82% confidence
Finding

Advertising that full descriptions are shown 'line by line without truncation' indicates potentially unbounded output from third-party content. This can enable denial-of-service style behavior in agent contexts through excessively large responses, token exhaustion, log bloat, or propagation of untrusted text returned from remote sources.

Content

Scanner excerpt · README.en.md (reported line 29)May include surrounding context.

md
### Core Features

- **Video Parsing**: paste a YouTube video link to parse out watermark-free video download URLs (returned resources may include video and audio files in various formats).
- **Complete Information**: displays resource type, duration, download link, and cover link for every resolution; full description shown line by line without truncation.
- **Multi-Format Support**: recognizes regular videos, Shorts, and short links (youtu.be).

---

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill invites activation through unrestricted natural language ('Just describe what you want') without defining narrow trigger boundaries or requiring explicit confirmation before acting. In an agent setting, broad triggers increase the chance of unintended invocation or misuse from ambiguous user phrasing, especially for a skill that facilitates downloading third-party content.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The example phrase 'Help me save this Short' is vague and overlaps with normal conversation, making accidental routing to this skill more likely. Because the skill performs potentially sensitive content-acquisition actions, ambiguous activation language raises the risk of unintended use or prompt-trigger collisions with other agent behaviors.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill promotes downloading and reusing third-party YouTube content, including for backup and secondary creation, but omits warnings about copyright, platform terms, and authorization requirements. This makes misuse more likely by normalizing potentially infringing behavior and failing to inform users about legal and policy constraints in a context centered on extracting direct download links.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The README says users can invoke the skill with unrestricted natural language, but it does not clearly bound the activation conditions to explicit YouTube download requests. In an agent environment, broad invocation guidance can cause the skill to trigger in ambiguous contexts and increase the chance of handling requests it should not, including requests involving copyrighted or unauthorized content.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill instructs users to paste YouTube links into a workflow backed by a third-party service, but it does not clearly warn that those links will be transmitted to redfox.hk for processing. Even if the input is 'just a URL,' it may reveal user interests, internal/private video references, or sensitive browsing intent, so the omission creates a privacy and consent issue.

Content

No source excerpt is available for this finding.

Unbounded Output

Medium
Category
Output Handling
Confidence
84% confidence
Finding

The skill requires full, untruncated display of description text and all resource links, which can force the agent to emit arbitrarily large third-party content. This increases risk of prompt injection propagation, excessive output, denial-of-service via oversized responses, and accidental disclosure of harmful or unwanted content returned by the API.

Content

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

md
- **Output**: Returns the video download URL directly — copy it into your browser or download tool to save
- **Link Display Rule**: Download and cover links must be displayed in full; never use `...` or any form of truncation
- **Field Display Rule**: The returned result must fully display the following fields:
  - Description (desc): full text displayed line by line, no truncation
  - Resource list: for each resource object, display its type, duration (durationSeconds), download link (downloadUrl), and cover link (coverUrl)
  - When the API does not return a resources array, automatically fall back to extracting top-level fields with the same names for compatibility

Unbounded Output

Medium
Category
Output Handling
Confidence
91% confidence
Finding

The script prints untrusted API response fields such as description, raw JSON, and resource URLs without size limits or sanitization. A malicious or compromised upstream API could return extremely large content or terminal control sequences, causing log flooding, terminal manipulation, or reduced availability in interactive and automated environments.

Content

Scanner excerpt · scripts/downloader.py (reported line 222)May include surrounding context.

python
print(f"\n{GREEN}{BOLD}✓ Parsed successfully!{RESET}")

    # Full description (original text, no truncation)
    if desc:
        print(f"\n{CYAN}{BOLD}📝 Description:{RESET}")
        for line in str(desc).splitlines():

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The request payload hard-codes the source string as "youtube视频下载-ClawHub", which imposes a specific language/locale in natural-language content sent to the external service. The file does not offer the user a language choice or explain a justified region-specific requirement, so this conflicts with the policy against forced language without opt-in.

Content

No source excerpt is available for this finding.