Back to skill

Security audit

YouTube Live Broadcast Checking

Security checks for vulnerabilities and agentic risk

Overview

This skill appears to do what it claims: check YouTube live and upcoming broadcasts, while storing a local watchlist and using a YouTube API key.

Install only if you are comfortable providing a YouTube Data API key to the skill and having your watched channel list stored locally in watchlist.json. Review dependency updates before production use, and be aware that some live/full-status helper behavior and timezone labeling may be confusing.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (12)

Possible Typosquatting: 'gaxios' resembles popular package 'axios'

High
Category
Supply Chain
Confidence
70% confidence
Finding

Package name closely resembles a popular package, suggesting possible typosquatting. Attackers publish malicious packages with similar names to trick developers into installing them.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The tool named check_live_status is described as deprecated with instructions to use check_upcoming_broadcasts instead, but check_upcoming_broadcasts fetches upcoming broadcasts rather than live status. This is an active contradiction in the inline documentation because it directs callers from a live-status function to a non-live-status function.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The deprecated function says "Use check_upcoming_broadcasts instead," but this is not an equivalent replacement for checking live status. check_upcoming_broadcasts only queries upcoming broadcasts, while live status is implemented separately by get_live_broadcast, so the inline guidance actively misdirects callers about what the code actually does.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The helper functions and wrapper hard-code HKT as the local time context and attach it to tool results without any user choice or documented region-specific justification. This is a natural-language/locale policy issue because the skill imposes a specific locale on all outputs rather than offering opt-in or respecting user settings.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

The changelog entry at L130-L137 says the documentation was updated to describe in-memory watchlist storage with no file I/O, while the current Storage Behavior section at L97-L99 states the watchlist is persisted to disk in watchlist.json. This is an active contradiction in the file's own documentation about whether the skill performs file persistence.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

This code reads a credential-like environment variable (YOUTUBE_API_KEY) but provides no confirmation prompt, logging, comment about handling sensitive data, or other user-facing disclosure beyond a generic module comment. For code files, access to sensitive environment variables should include some form of warning or explanation unless clearly documented elsewhere.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

This JSON manifest is a manifest file, so only SQP-1 and SQP-3 strictly do not apply here, but the tool descriptions themselves expose behavior relevant to user impact. The add_channel tool states that it adds a channel to a watchlist, yet the manifest provides no disclosure that user-supplied channel IDs, handles, or URLs will be persisted as tracked data.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
74% confidence
Finding

The list_channels tool returns all watched channels with names and timestamps, which reveals retained watchlist contents and metadata. The manifest does not warn users that the skill maintains and can disclose this stored tracking list.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: qs==6.15.1 — 3 advisory(ies): CVE-2026-82417 (qs: Denial of Service via Attacker Controlled isBuffer); CVE-2026-8723 (qs has a remotely triggerable DoS: qs.stringify crashes with TypeError on null/u); CVE-2026-82562 (qs array-limit bypass via bracket-key comma parsing)

Low
Category
Supply Chain
Confidence
60% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: uuid==9.0.1 — 1 advisory(ies): CVE-2026-41907 (uuid: Missing buffer bounds check in v3/v5/v6 when buf is provided)

Low
Category
Supply Chain
Confidence
60% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 27)May include surrounding context.

json
},
  "homepage": "https://github.com/StevenHo1394/openclaw/tree/main/skills/youtube-live-broadcast-checking",
  "dependencies": {
    "googleapis": "^126.0.0"
  },
  "devDependencies": {
    "nock": "^13.5.6"

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 30)May include surrounding context.

json
"googleapis": "^126.0.0"
  },
  "devDependencies": {
    "nock": "^13.5.6"
  }
}

Static analysis

Detected: suspicious.exposed_secret_literal

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
skill.js:10