Back to skill

Security audit

Youtube Podcast summarizer via Elevenlabs

Security checks for vulnerabilities and agentic risk

Overview

The skill does what it claims, but it asks users to run an unpinned external backend with API keys, which needs careful review before installation.

Review the external GitHub backend before installing, pin it to a known commit, prefer npm ci with a lockfile, and run it in a restricted environment with narrowly scoped, revocable API keys and spending limits. Avoid submitting private or sensitive YouTube links unless you accept that URLs, transcripts, summaries, and generated audio may be handled by the named third-party services.

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

T08 · Insecure Dependencies

Error
Location
SKILL.md:30
Finding
Unpinned Remote Backend Installation and Execution## Vulnerability Details **File Location**: `SKILL.md`, lines 30–35 **Vulnerability Type**: Untrusted and unpinned third-party dependency execution **Risk Level**: High ```bash git clone https://github.com/Franciscomoney/elevenlabs-moltbot.git cd elevenlabs-moltbot npm install cp .env.example .env # Add your API keys to .env npm start ``` ### Technical Analysis The skill instructs users to clone a mutable personal GitHub repository, install its dependencies, configure service API keys, and execute the resulting backend. The repository is not pinned to a reviewed commit or signed release, and the instructions do not require checksum, signature, lockfile, or provenance verification. Both `npm install` and `npm start` can execute code that is not present in the audited skill package. In particular, package lifecycle scripts may run during installation. Because the remote repository and its dependency graph can change after this skill has been reviewed, subsequent installations may execute materially different code. The backend is expected to receive `ELEVENLABS_API_KEY`, `SUPADATA_API_KEY`, and `OPENROUTER_API_KEY`. Consequently, malicious or compromised backend code would execute in an environment containing valuable credentials. ### Attack Path 1. An attacker compromises the referenced GitHub account, repository, package dependency, or dependency publishing account. 2. The attacker adds malicious code to the backend, an installation lifecycle script, or a transitive dependency. 3. A user follows the documented instructions and clones the repository without pinning a known-good revision. 4. The user runs `npm install`, potentially executing malicious lifecycle scripts. 5. The user places the required API keys in the backend environment and runs `npm start`. 6. The malicious code executes with the user's operating-system privileges and can read the configured API keys, access files available to that account, make outbound network requests, or alter local da ...[truncated 865 chars]
Remediation
## Remediation Suggestions 1. Pin the backend to a specific, reviewed commit hash or cryptographically signed release rather than cloning the mutable default branch. 2. Publish expected checksums or signatures and require users to verify them before installation. 3. Commit and maintain a dependency lockfile, and use `npm ci` to install the exact reviewed dependency versions. 4. Disable package lifecycle scripts with `npm ci --ignore-scripts` where operationally feasible. Review and explicitly allow any scripts that are genuinely required. 5. Add automated dependency, provenance, and integrity scanning to the release process. 6. Run the backend in a restricted container or dedicated low-privilege account with a read-only filesystem where possible. 7. Restrict outbound network access to the explicitly required service endpoints. 8. Use narrowly scoped, revocable API keys with spending limits and rotate them if compromise is suspected. 9. Avoid exposing unrelated credentials or sensitive host directories to the backend process. 10. Document the exact reviewed backend version and provide a reproducible deployment artifact.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (8)

Credential Access

High
Category
Privilege Escalation
Content
git clone https://github.com/Franciscomoney/elevenlabs-moltbot.git
cd elevenlabs-moltbot
npm install
cp .env.example .env
# Add your API keys to .env
npm start
```
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
git clone https://github.com/Franciscomoney/elevenlabs-moltbot.git
cd elevenlabs-moltbot
npm install
cp .env.example .env
# Add your API keys to .env
npm start
```
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
git clone https://github.com/Franciscomoney/elevenlabs-moltbot.git
cd elevenlabs-moltbot
npm install
cp .env.example .env
# Add your API keys to .env
npm start
```
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The README instructs users to submit YouTube links for processing by Supadata, OpenRouter, and ElevenLabs, but it does not clearly warn that video URLs, transcript content, and generated summaries may be transmitted to multiple third-party services. This creates a real privacy and data-handling risk because users may provide links to sensitive or non-public content without understanding the external disclosure involved.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The skill explicitly sends user-supplied YouTube URLs and derived transcript content to multiple third-party services (Supadata, OpenRouter, ElevenLabs), but the user-facing description does not warn about this data sharing. This creates a privacy and consent issue because users may reasonably assume processing is local or limited to the agent environment.

External Transmission

Medium
Category
Data Exfiltration
Content
### Step 1: Start the voice summary job

```bash
curl -s -X POST http://127.0.0.1:3050/api/summarize \
  -H "Content-Type: application/json" \
  -d '{"url":"YOUTUBE_URL","length":"short","voice":"podcast"}'
```
Confidence
91% confidence
Finding
This step instructs the agent to transmit user-provided YouTube URLs to a local backend that in turn relies on external providers for transcript extraction, summarization, and TTS. While the immediate endpoint is localhost, the overall workflow causes external data transmission without an inline warning, which can expose user-request content and derived data to third parties.

External Transmission

Medium
Category
Data Exfiltration
Content
1. Start job:
```bash
curl -s -X POST http://127.0.0.1:3050/api/summarize \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ","length":"short","voice":"podcast"}'
```
Confidence
89% confidence
Finding
The example flow repeats the same behavior of sending a YouTube URL for backend processing that depends on third-party APIs. Example commands normalize the external transmission pattern and may cause developers or agents to adopt it without adding consent, privacy notice, or input validation.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The manifest explicitly routes user-supplied YouTube URLs through multiple external API-backed services (ElevenLabs, Supadata, OpenRouter) but does not disclose that video metadata, transcripts, summaries, or derived content may be transmitted to third parties. This creates a privacy and transparency risk because users may unknowingly send content to external processors, which is especially relevant if links are private, sensitive, or business-related.

Static analysis

No suspicious patterns detected.