Back to skill

Security audit

Secret Portal

Security checks for vulnerabilities and agentic risk

Overview

The skill matches its stated secret-entry purpose, but it asks users to run unpinned external code and an auto-downloaded tunnel while handling API keys, so it needs review before installation.

Install only if you are comfortable trusting the external `secret-portal` package and the tunnel binary that may be downloaded at runtime. Prefer pinning a reviewed package version, verifying `cloudflared` from an official source, using the narrowest env-file path needed, and avoiding production secrets unless the executable code and download path have been audited.

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 Runtime Dependency and Automatically Downloaded Tunnel Binary

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 30–49 and 65–67
Vulnerability Type: Unverified third-party package and binary execution
Risk Level: High

Vulnerable Code

bash
# Single key with cloudflared tunnel (recommended)
uv run --with secret-portal secret-portal \
  -k API_KEY_NAME \
  -f ~/.secrets/target-env-file \
  --tunnel cloudflared

# With guided instructions and a link to the key's console
uv run --with secret-portal secret-portal \
  -k OPENAI_API_KEY \
  -f ~/.env \
  -i '<strong>Get your key:</strong><ol><li>Go to platform.openai.com</li><li>Click API Keys</li><li>Create new key</li></ol>' \
  -l "https://platform.openai.com/api-keys" \
  --link-text "Open OpenAI dashboard →" \
  --tunnel cloudflared

# Multi-key mode (no -k flag, user enters key names and values)
uv run --with secret-portal secret-portal \
  -f ~/.secrets/keys.env \
  --tunnel cloudflared
text
Use `--tunnel cloudflared` — it's free, requires no account, has no interstitial pages, provides HTTPS, and auto-downloads the binary if missing.

Technical Analysis

Every documented workflow uses uv run --with secret-portal, which dynamically resolves and executes the third-party secret-portal package without an exact version constraint, cryptographic hash, reviewed lockfile, or vendored implementation. Consequently, the code executed when a user follows the instructions may differ from the code that existed when the skill was reviewed.

The recommended cloudflared mode can also automatically download and execute a binary. The document does not specify an immutable release, trusted download URL, checksum, or signature-verification procedure. Both components operate in a security-sensitive workflow that receives API keys and environment variables and writes them to local files.

The repository contains only SKILL.md; ...[truncated 1858 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin secret-portal to an exact, reviewed version rather than allowing unconstrained runtime resolution.
  2. Commit a dependency lockfile containing cryptographic hashes for the package and all transitive dependencies.
  3. Prefer distributing reviewed implementation code with the skill or referencing an immutable source commit so the audited code corresponds to the executed code.
  4. Pin cloudflared to a specific approved release and platform artifact.
  5. Download binaries only from an explicitly trusted HTTPS origin and verify an official cryptographic signature or published SHA-256 checksum before execution.
  6. Fail closed if package or binary integrity verification cannot be completed; do not silently fall back to an unverified download.
  7. Document the exact package version, binary version, download origin, and verification procedure in SKILL.md.
  8. Run the portal with least privilege and isolate it from unrelated user files, credentials, and environment variables where practical.
  9. Include auditable tests or implementation evidence for secret-output suppression, one-time token enforcement, timeout behavior, and owner-only destination-file permissions.
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Rogue AgentSelf-Modification, Session Persistence
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (2)

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 40)May include surrounding context.

md
# With guided instructions and a link to the key's console
uv run --with secret-portal secret-portal \
  -k OPENAI_API_KEY \
  -f ~/.env \
  -i '<strong>Get your key:</strong><ol><li>Go to platform.openai.com</li><li>Click API Keys</li><li>Create new key</li></ol>' \
  -l "https://platform.openai.com/api-keys" \
  --link-text "Open OpenAI dashboard →" \

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · SKILL.md (reported line 41)May include surrounding context.

md
uv run --with secret-portal secret-portal \
  -k OPENAI_API_KEY \
  -f ~/.env \
  -i '<strong>Get your key:</strong><ol><li>Go to platform.openai.com</li><li>Click API Keys</li><li>Create new key</li></ol>' \
  -l "https://platform.openai.com/api-keys" \
  --link-text "Open OpenAI dashboard →" \
  --tunnel cloudflared

Static analysis

No suspicious patterns detected.