Back to skill

Security audit

YouTube Memberships Level

Security checks for vulnerabilities and agentic risk

Overview

This skill appears purpose-aligned, but it should be reviewed because it combines an unpinned third-party CLI with locally stored YouTube OAuth credentials and limited credential-safety guidance.

Review this before installing. Use a non-privileged account, install a pinned and verified yutu release where possible, keep client_secret.json and youtube.token.json outside source-controlled folders, restrict their file permissions, and revoke or rotate the OAuth token if either file is exposed.

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

Warning
Location
SKILL.md:17
Finding
Unpinned Third-Party CLI Installation Creates a Supply-Chain Risk## Vulnerability Details **File Location**: `SKILL.md:17-21`; `references/setup.md:36-53` **Vulnerability Type**: Unpinned and mutable third-party dependencies **Risk Level**: Medium The Skill installs and executes the third-party `yutu` CLI without pinning an audited version, immutable commit, checksum, or cryptographic signature. ### Vulnerable Code `SKILL.md:17-21`: ```yaml install: - kind: node package: "@eat-pray-ai/yutu" bins: [yutu] ``` `references/setup.md:36-53`: ```bash # Node.js (all platforms) npm i -g @eat-pray-ai/yutu # macOS brew install yutu # Linux brew install yutu # Windows winget install yutu # Gopher go install github.com/eat-pray-ai/yutu@latest ``` ```markdown ### Other platforms Download a prebuilt binary from the [releases page](https://github.com/eat-pray-ai/yutu/releases/latest) and place it in your PATH. ``` ### Technical Analysis The npm package declaration and installation command omit an exact version. The Go installation explicitly uses the mutable `@latest` reference, while the binary download points to a mutable latest-release URL. Package-manager installations likewise do not identify an audited release. Consequently, the artifact installed when a user follows these instructions can differ from the artifact that existed when the Skill was audited. If the package registry account, source repository, release pipeline, package-manager formula, or publisher credentials are compromised, an attacker could distribute a modified executable under the expected package name. A global npm installation may also run package lifecycle scripts with the installing user's privileges. This finding does not establish that the current `yutu` package is malicious. It identifies the absence of controls that bind installation to a reviewed artifact. ### Attack Path 1. An attacker compromises an upstream publisher account, package registry entry, source rep ...[truncated 1560 chars]
Remediation
## Remediation Suggestions 1. Pin the npm dependency to a specific audited version, such as `@eat-pray-ai/yutu@X.Y.Z`, rather than allowing implicit latest-version resolution. 2. Replace `go install github.com/eat-pray-ai/yutu@latest` with an exact release tag or, preferably, an immutable commit. 3. Replace the mutable `/releases/latest` download with a version-specific release URL. 4. Publish SHA-256 checksums for supported binaries and document checksum verification before execution. 5. Verify signed release tags, package provenance, or cryptographic artifact signatures where supported. 6. Lock package-manager installation instructions to reviewed versions when the relevant manager supports version pinning. 7. Review npm lifecycle scripts and use `--ignore-scripts` where compatible with installation requirements. 8. Perform installation and initial validation with a non-privileged account in an isolated environment. 9. Restrict OAuth scopes to the minimum required for listing membership levels and protect token files with owner-only filesystem permissions. 10. Maintain a documented update process in which each new dependency version is reviewed, checksummed, and explicitly approved before the pin is changed.
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 (5)

Credential Access

High
Category
Privilege Escalation
Content
bins:
        - yutu
      config:
        - client_secret.json
        - youtube.token.json
    primaryEnv: YUTU_CREDENTIAL
    emoji: "\U0001F3AC\U0001F430"
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
bins:
        - yutu
      config:
        - client_secret.json
        - youtube.token.json
    primaryEnv: YUTU_CREDENTIAL
    emoji: "\U0001F3AC\U0001F430"
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
bins:
        - yutu
      config:
        - client_secret.json
        - youtube.token.json
    primaryEnv: YUTU_CREDENTIAL
    emoji: "\U0001F3AC\U0001F430"
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
bins:
        - yutu
      config:
        - client_secret.json
        - youtube.token.json
    primaryEnv: YUTU_CREDENTIAL
    emoji: "\U0001F3AC\U0001F430"
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The setup guide instructs users to store an OAuth client secret and a cached OAuth token in local files but does not warn that these artifacts are sensitive and should be protected from accidental disclosure, source control commits, or unsafe file permissions. In a skill that helps manage YouTube resources, these tokens could enable unauthorized API access to the user's YouTube account if another local user, malware, or a leaked repository obtains them.

Static analysis

No suspicious patterns detected.