Back to skill

Security audit

YouTube Summarizer

Security checks for vulnerabilities and agentic risk

Overview

The skill does what it claims, but its install and transcript-fetch workflow give too much unsafe execution and data-sharing authority without enough controls.

Install only if you are comfortable running unpinned third-party Node code and storing full transcripts locally. Treat YouTube IDs or URLs as untrusted input, avoid private or sensitive videos, confirm Telegram destinations before sending files, and prefer a version that pins dependencies, validates video IDs with a strict allowlist, uses unique temporary files, and offers transcript retention controls.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (3)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:42
Finding

Command Injection Through Unvalidated YouTube Video ID

Content
View full analysis
/tmp/yt-transcript.json ``` The instructions direct the Agent to replace `VIDEO_ID` with a value extracted from user input. They accept a direct video ID based only on its length: ```markdown - Direct video ID: `VIDEO_ID` (11 characters) ``` ### Technical Analysis The user-controlled video ID is inserted into a shell command enclosed by double quotes. Shell expansions, including command substitution using `$()`, remain active inside a double-quoted shell string. The JavaScript single quotes surrounding `VIDEO_ID` do not protect against shell interpretation because they are characters inside the outer double-quoted shell argument. Checking only that the input contains 11 characters is insufficient. An 11-character value such as: ```text $(id>/x)#xx ``` causes the shell to execute `id>/x` before Node.js starts. The trailing `#xx` can also alter the resulting JavaScript source. ### Attack Path 1. An attacker submits a crafted 11-character direct video ID containing shell metacharacters or command substitution. 2. The Agent accepts the input because it meets the documented length requirement. 3. The Agent performs textual substitution of the value into the documented shell command. 4. The shell evaluates the injected `$()` expression while constructing the argument passed to Node.js. 5. The injected operating-system command executes with the privileges of the Agent process. ### Impact Assessment Successful exploitation permits arbitrary command execution as the account running the Skill. The hard-coded `/root/claw ...[truncated 439 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:23
Finding

Unpinned Third-Party Repository Is Downloaded and Executed

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:42
Finding

Predictable Shared Temporary File Enables Symlink Overwrite

Content
View full analysis
/tmp/yt-transcript.json ``` The workflow subsequently instructs the Agent to read the same fixed path: ```markdown Replace `VIDEO_ID` with the extracted ID. Read the output from `/tmp/yt-transcript.json`. ``` ### Technical Analysis The workflow uses a fixed, predictable filename in the globally writable `/tmp` directory. Shell redirection opens the destination before launching Node.js and ordinarily follows symbolic links. A local attacker who can write to `/tmp` may pre-create `/tmp/yt-transcript.json` as a symbolic link to another file. If the Skill is then run by a more privileged account, shell redirection may truncate and overwrite the link target with transcript JSON. The fixed name also creates race conditions between concurrent Skill invocations. One run can overwrite another run's data, causing transcript disclosure, data corruption, or incorrect summaries. ### Attack Path 1. A local attacker predicts the documented temporary filename. 2. The attacker creates `/tmp/yt-transcript.json` as a symbolic link to a file writable by the privileged Skill process. 3. The Agent invokes the documented command. 4. Shell redirection follows the symbolic link and truncates the target. 5. The transcript output is written into the target file, corrupting its previous contents. For a concurrency attack, two invocations write to and read from the same path, allowing one user's transcript to replace or contaminate another user's result. ### Impact Assessment The symlink attack can overwrite or corrupt files accessible ...[truncated 423 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (6)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The README explicitly states that full YouTube transcripts are saved to disk and may be sent to Telegram, but it does not clearly warn users that this creates persistent local copies and transmits potentially sensitive content to a third-party messaging platform. In an agent context, users may paste private, unlisted, internal, or sensitive video links, so automatic storage and forwarding can unintentionally expose data beyond the immediate chat interaction.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill instructs cloning and building third-party code from GitHub at runtime to satisfy its functionality. This expands the trust boundary to unpinned external code and introduces supply-chain risk that is not disclosed or constrained, so a compromised repository or dependency could execute arbitrary code in the agent environment.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill directs shell and Node command execution to fetch transcripts and write output to the filesystem, which gives the skill operational code-execution behavior beyond simple summarization. Even if intended for transcript retrieval, this creates risk from command misuse, unsafe parameter substitution, environment abuse, and broader host interaction than users would expect from a summarizer.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill stores full transcripts on disk and may send them to Telegram without any explicit user-facing consent, retention notice, or warning about third-party sharing. Transcripts can contain sensitive or copyrighted content, so silent persistence and external transmission create privacy, compliance, and data-handling risks.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The sample output explicitly says transcripts are saved locally and, on some platforms, retained on disk without any warning, consent flow, retention limit, or sensitivity guidance. Video transcripts can contain sensitive, copyrighted, or regulated content, so silent local persistence increases the risk of unintended disclosure through shared hosts, backups, logs, or later access by other users/processes.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

Automatically falling back to English can produce a transcript in a language the user did not request and may misalign with user expectations or regional/privacy preferences. While not severe by itself, it is a quality and consent issue because language fallback changes processing behavior without opt-in.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.