T01 · Skill Instruction Hijacking
- Location
youtubeUtils.ts:70- Finding
Indirect Prompt Injection Through Untrusted YouTube Metadata
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly matches its YouTube reporting purpose, but it automatically writes/posts externally and under-discloses an Anthropic analysis path, so it should be reviewed before installation.
Install only after you are comfortable with the configured Google Sheet and Discord channel receiving the report automatically. Use tightly scoped service-account and bot permissions, update/audit dependencies, add a real dry-run or confirmation path, disclose or disable the Anthropic call, and sanitize/limit Discord output with mentions disabled.
youtubeUtils.ts:70Indirect Prompt Injection Through Untrusted YouTube Metadata
youtubeUtils.ts:31YouTube API Key Embedded in Request Query Strings
index.ts:72Untrusted Report Content Sent to Discord Without Mention Controls
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).
ending YouTube videos by niche keyword, analyzes main concepts, and stores to Google Sheet. Posts summary to Discord.
niche (single or comma-separated list)Via Discord or API call:
/ytoutlier AI news
Add to your Discord/OpenClaw config, or copy below to your skill manifest:
commands:
- name: ytoutlier
description: Find trending YouTube outlier videos in a niche.
usage: /ytoutlier <niche>
handler: youtube-outlier-skill
See .env.example for all required variables.
Skill created for Danny by Soma 🧘♂️ (OpenClaw)
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
import { getYoutubeOutlierVideos, extractVideoMetadata } from './youtubeUtils'; // <-- implement these helpers
import dotenv from 'dotenv';
dotenv.config({ path: __dirname + '/.env' });
// Environment vars
const SHEET_ID = process.env.GOOGLE_SHEET_ID;
The lockfile pins axios 1.13.6, and the supplied advisories include high-risk issues such as SSRF-related proxy bypass and prototype-pollution-assisted credential or response compromise. In this skill context, axios is a top-level dependency and is likely used for outbound API access, which increases the relevance of SSRF, header handling, and redirect/proxy issues.
brace-expansion 2.0.2 is reported with multiple denial-of-service issues involving pathological expansion input. Although it is a transitive utility dependency rather than application logic, a vulnerable parser in the dependency tree can still be abused if attacker-controlled patterns ever reach it during file/path processing or tooling execution.
form-data 4.0.5 is reported vulnerable to CRLF injection via unescaped multipart field names/filenames. If this skill uploads files or forwards user-supplied metadata to external APIs, an attacker may be able to manipulate multipart boundaries or inject unexpected headers/content into outbound requests.
Package name closely resembles a popular package, suggesting possible typosquatting. Attackers publish malicious packages with similar names to trick developers into installing them.
lodash 4.17.23 is associated with known prototype pollution and code-injection history. Here it appears as a transitive dependency of @sapphire/shapeshift rather than a directly used package, which reduces immediate exploitability, but prototype pollution remains dangerous if untrusted objects or path expressions can flow into affected functions.
undici 6.21.3 is flagged for multiple high-severity HTTP parsing and request/response handling issues including smuggling, queue poisoning, and CRLF-related problems. This is especially relevant because the skill depends on network-heavy libraries like discord.js and Google/OpenAI clients, so malformed upstream or intermediary traffic could have meaningful security impact.
ws 8.19.0 is reported vulnerable to memory disclosure and memory-exhaustion conditions. Because discord.js relies on websocket connectivity, a flaw in ws can be relevant in a long-lived bot or agent process, particularly if it maintains persistent connections and processes high volumes of fragmented frames.
The manifest includes axios 1.13.6, which the finding identifies as affected by multiple known advisories, including SSRF- and MITM-related issues. Because this skill also depends on network-facing libraries and likely performs outbound HTTP requests, a vulnerable HTTP client can materially increase the risk of request smuggling, proxy bypass, credential leakage, or response tampering depending on how axios is used elsewhere in the project.
The README explicitly describes sending collected YouTube-derived data to external services like Google Sheets and Discord, but it does not warn users about data disclosure, retention, or privacy implications. In an agent skill context, silent exfiltration to third-party platforms is security-relevant because users may invoke the skill assuming local analysis, while transcripts, metadata, or summaries are being transmitted off-platform.
The skill description states that it stores results to Google Sheets and posts summaries to Discord, but it does not clearly warn users up front that invoking the skill causes external writes and message posting. This can lead to unintended data disclosure, unwanted side effects, or misuse in environments where users expect read-only analysis rather than outbound actions.
The code reads Google Sheets credentials from an environment variable and uses them to authenticate, but there is no user-facing disclosure, confirmation, or explanatory comment warning that sensitive credentials are being accessed. Under the code-file criteria, access to sensitive environment variables should have some visible warning unless clearly disclosed elsewhere in the skill description, which is not present in this file.
The code advertises a dry-run path but hard-codes DRY_RUN = false, guaranteeing that execution will write to Google Sheets and post to Discord. In an agent skill context, this can mislead operators into believing the action is non-destructive or preview-only, increasing the risk of unintended data disclosure and external side effects.
The skill appends collected data to a Google Sheet without any explicit user disclosure or confirmation at runtime. In an agent environment, silent transmission of processed content to third-party storage can expose sensitive or proprietary information and violates least-surprise expectations.
The code posts a summary containing titles, ideas, and thumbnail URLs to Discord without explicit user awareness or consent. This creates a data-exfiltration path to an external chat platform, which is more dangerous in a skill because users may not expect content to be redistributed beyond the immediate task.
The function sends video title, description, and potentially transcript content to Anthropic, which is a third-party AI provider, without any visible consent, disclosure, minimization, or policy enforcement. If transcripts later include private, copyrighted, or regulated content, this creates a data-sharing/privacy risk and may violate user expectations or compliance requirements.
follow-redirects 1.15.11 is flagged for leaking custom authentication headers across cross-domain redirects. In this project, it is pulled in via axios, so any code that follows redirects while sending bearer tokens, API keys, or cookies could unintentionally disclose credentials to attacker-controlled endpoints.
qs 6.15.0 is flagged for several denial-of-service issues. In this skill, qs arrives through googleapis-common, so the practical risk depends on whether attacker-controlled query structures are serialized or parsed; absent that, the issue is real but likely lower impact than network-facing direct dependencies.
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
{
"dependencies": {
"axios": "^1.13.6",
"discord.js": "^14.25.1",
"dotenv": "^17.3.1",
"googleapis": "^171.4.0",
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
{
"dependencies": {
"axios": "^1.13.6",
"discord.js": "^14.25.1",
"dotenv": "^17.3.1",
"googleapis": "^171.4.0",
"openai": "^6.25.0"
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
"dependencies": {
"axios": "^1.13.6",
"discord.js": "^14.25.1",
"dotenv": "^17.3.1",
"googleapis": "^171.4.0",
"openai": "^6.25.0"
},
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
"axios": "^1.13.6",
"discord.js": "^14.25.1",
"dotenv": "^17.3.1",
"googleapis": "^171.4.0",
"openai": "^6.25.0"
},
"devDependencies": {
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
"discord.js": "^14.25.1",
"dotenv": "^17.3.1",
"googleapis": "^171.4.0",
"openai": "^6.25.0"
},
"devDependencies": {
"ts-node": "^10.9.2",
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
"openai": "^6.25.0"
},
"devDependencies": {
"ts-node": "^10.9.2",
"typescript": "^5.9.3"
}
}
Detected: suspicious.env_credential_access