Back to skill

Security audit

ReelTalk

Security checks for vulnerabilities and agentic risk

Overview

This video-summary skill is mostly purpose-aligned, but its instructions create real review-worthy risk through unsafe URL handling, broad temporary-file deletion, and under-scoped external/media handling.

Install only if you are comfortable with a Review-level skill that runs local media tools on remote URLs. Use it in a contained workspace, avoid untrusted or attacker-supplied URLs, and prefer a version that uses a per-run temp directory, structural URL parsing, explicit trust boundaries for downloaded text, and clear consent for the fxtwitter API fallback.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • 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
  • 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
SKILL.md:58
Finding

Shell Command Injection Through Unsafe URL Interpolation

Content
View full analysis
" # Reject shell metacharacters if printf '%s' "$URL" | grep -qE '[;|&`$()]'; then echo "Invalid URL: contains disallowed characters" exit 1 fi ``` The value is subsequently passed to commands such as: ```bash yt-dlp --print title --print description --print uploader "$URL" \ 2>/dev/null > /tmp/reeltalk_work/metadata.txt ``` ### Technical Analysis The instructions require the agent to substitute the user-provided value directly into the shell assignment `URL=""`. Validation occurs only after the shell has parsed and executed that assignment. Consequently, the validation cannot protect against syntax introduced during interpolation. The denylist rejects several common shell metacharacters but does not reject double quotes, backslashes, carriage returns, newlines, or other control characters. An input containing a double quote followed by a newline can terminate the assignment and inject a separate shell command before the `grep` validation is reached. The documented requirement to accept only `http://`, `https://`, or `www.` prefixes is also not implemented in the displayed validation code. Moreover, downstream utilities are not given an explicit `--` option terminator, creating additional argument-confusion risk if a non-URL value reaches them. ### Attack Path 1. An attacker supplies a purported video URL containing a double quote and newline. 2. The agent replaces the literal `` placeholder with that value. 3. The injected quote terminates the `URL` assignment. 4. The newline introduces a new shell command. 5. The shell executes the injected command before reaching the validation block. 6. The injected command runs with the same operating-system privileges and environment access as the skill process. For example, a payl ...[truncated 660 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:52
Finding

Destructive Wildcard Cleanup in a Shared Temporary Directory

Content
View full analysis
Remediation
View remediation

T01 · Skill Instruction Hijacking

Warning
Location
SKILL.md:139
Finding

Indirect Prompt Injection Through Untrusted Metadata, Transcripts, and OCR Output

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (7)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

The startup cleanup uses a broad wildcard deletion in /tmp, which can remove any directory matching /tmp/reeltalk_* regardless of which process or user created it. In shared or multi-run environments, this can cause unintended data loss or let an attacker influence cleanup targets via symlink/path tricks if surrounding execution safeguards are weak.

Content

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

0. Fresh start

bash
rm -rf /tmp/reeltalk_*
mkdir -p /tmp/reeltalk_work

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

The startup cleanup uses a broad wildcard deletion in /tmp, which can remove any directory matching /tmp/reeltalk_* regardless of which process or user created it. In shared or multi-run environments, this can cause unintended data loss or let an attacker influence cleanup targets via symlink/path tricks if surrounding execution safeguards are weak.

Content

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

0. Fresh start

bash
rm -rf /tmp/reeltalk_*
mkdir -p /tmp/reeltalk_work

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This markdown file describes downloading media, generating transcripts, and deleting /tmp/reeltalk_*, but only warns about processing time for long videos. Because these behaviors affect user data and local system state, the skill description should explicitly disclose temporary storage and cleanup/deletion behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

Both Whisper commands specify --language en, which imposes an English-only locale choice in the skill instructions. The policy allows locale constraints only when the user can opt in or when the limitation is clearly documented and justified, neither of which is present here.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The manifest describes a helper that takes a URL, downloads the audio track, creates a transcript, and produces a summary. In contrast, the documented workflow also downloads full video, extracts frames, and runs Tesseract OCR when speech is absent, which is a distinct content-extraction path not reflected in the manifest description.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The skill sends derived identifiers from user-supplied X/Twitter links to a third-party API not disclosed in the main description, creating an external data flow and trust dependency outside the declared toolchain. Even if only the user and status ID are sent, this can leak user activity and exposes the workflow to manipulated API responses that may redirect downloads to attacker-controlled content.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
87% confidence
Finding

The direct call to api.fxtwitter.com transmits data derived from a user-provided link to an external service outside the core declared functionality and dependency set. This creates privacy exposure and a supply-chain style risk because the service can influence the subsequent download target, potentially steering the workflow to untrusted media URLs.

Content

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

  • X/Twitter: use fxtwitter API (yt-dlp fails). Extract the user and status ID from the original URL, then call the API with a constructed URL (do not pass the raw user URL to curl):
    bash
    curl -sL "https://api.fxtwitter.com/<user>/status/<id>" | jq -r '.media.videos[0].url'
    
    Validate the returned video URL (must start with https://) before downloading with curl.
  • TikTok: yt-dlp handles fine.

Static analysis

No suspicious patterns detected.