Back to skill

Security audit

PullThatUpJamie

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent podcast research API skill, but its optional paid wallet workflow documents unpinned local package execution with a sensitive wallet credential.

Use the free tier or a normal wallet first. If using paid access, treat L402 and NWC values as bearer credentials, use a low-balance wallet with strict limits, avoid the unpinned `npx` command unless you have independently verified and pinned the package, and do not upload sensitive/private research material into sessions or public share links.

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:107
Finding
Unpinned Third-Party Package Execution with a Sensitive Wallet Credential<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 107-111 **Vulnerability Type**: Unpinned npm dependency execution and command-line credential exposure **Risk Level**: Medium ### Vulnerable Code ```markdown **NWC (programmatic):** If using [Alby CLI](https://github.com/getAlby/alby-cli) or any NWC-compatible wallet: ```bash npx @getalby/cli pay-invoice -c "NWC_CONNECTION_STRING" -i "BOLT11_INVOICE" ``` Returns `preimage`. ``` ### Technical Analysis The documented payment workflow uses `npx` to execute `@getalby/cli` without specifying an exact, audited version or verifying package integrity. Depending on the local npm configuration and cache state, `npx` may retrieve and execute the package and its dependency graph from the npm registry at invocation time. This creates a mutable supply-chain execution path whose effective code can change after the Skill has been reviewed. The invoked process also receives `NWC_CONNECTION_STRING`, a sensitive Nostr Wallet Connect credential, through a command-line argument. Package code necessarily gains access to that argument. On some systems, command-line arguments may additionally be visible through process inspection, diagnostic tooling, terminal logs, or shell history. The surrounding documentation states that this command is optional, requires operator approval, and is never automatically executed. Those controls reduce likelihood but do not remove the risk when an operator follows the documented programmatic payment procedure. ### Attack Path 1. An operator chooses the optional programmatic NWC payment workflow. 2. The operator runs the documented unversioned `npx @getalby/cli` command. 3. `npx` resolves the package and dependencies available from the configured npm registry. 4. A compromised package release, compromised transitive dependency, registry substitution, or unsafe registry configuration causes attacker-controlled code to execute with the operator's local privileges. 5. The mali ...[truncated 1185 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Avoid runtime package retrieval for wallet operations. Prefer an independently installed and reviewed wallet application or a preapproved client distributed through a trusted channel. 2. If the CLI remains documented, pin it to an exact audited version rather than invoking the floating package name: ```bash npx --yes @getalby/cli@EXACT_AUDITED_VERSION ... ``` Version pinning reduces mutability but should not be treated as sufficient integrity protection by itself. 3. Maintain a lockfile and verify package integrity, provenance, publisher identity, and signatures where supported. Review both the direct package and its transitive dependencies. 4. Configure npm to use an explicitly trusted registry and disable unexpected lifecycle scripts where compatible with the selected client. 5. Do not pass `NWC_CONNECTION_STRING` directly on the command line. Use a secure secret-input facility supported by the wallet client, such as protected standard input, a restricted file descriptor, or an operating-system credential store. 6. Run wallet tooling in a sandbox or dedicated low-privilege environment with narrowly restricted filesystem and network access. 7. Create a dedicated NWC connection with strict payment limits, short expiration, minimal methods, and no permissions unrelated to invoice payment. 8. Use a low-balance wallet and require explicit operator confirmation for every payment. Rotate the NWC credential immediately if command history, logs, or process inspection may have exposed it. 9. Add a prominent warning immediately above the command explaining that it may download and execute third-party code and that operators must verify the exact package version before use. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (11)

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
description: "Jamie API — podcast search, research sessions, corpus browsing, RSS feed ingestion, clip generation (all endpoints proxied for security)"
    externalTools:
      - name: "Lightning wallet (any)"
        description: "For paid tier only: Any Lightning wallet (Zeus, BlueWallet, Phoenix, Alby extension, etc.) to pay BOLT-11 invoices. NO CLI tools are required or auto-executed by this skill."
        required: false
---
Confidence
85% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
description: "Jamie API — podcast search, research sessions, corpus browsing, RSS feed ingestion, clip generation (all endpoints proxied for security)"
    externalTools:
      - name: "Lightning wallet (any)"
        description: "For paid tier only: Any Lightning wallet (Zeus, BlueWallet, Phoenix, Alby extension, etc.) to pay BOLT-11 invoices. NO CLI tools are required or auto-executed by this skill."
        required: false
---
Confidence
85% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
description: "Jamie API — podcast search, research sessions, corpus browsing, RSS feed ingestion, clip generation (all endpoints proxied for security)"
    externalTools:
      - name: "Lightning wallet (any)"
        description: "For paid tier only: Any Lightning wallet (Zeus, BlueWallet, Phoenix, Alby extension, etc.) to pay BOLT-11 invoices. NO CLI tools are required or auto-executed by this skill."
        required: false
---
Confidence
85% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

External Transmission

Medium
Category
Data Exfiltration
Content
#### 1. Hit any protected endpoint
```bash
curl -s -D- -X POST -H "Content-Type: application/json" \
  -d '{"query": "bitcoin energy consumption"}' \
  "https://www.pullthatupjamie.ai/api/search-quotes"
```
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Rp1

Medium
Category
MCP Rug Pull
Confidence
78% confidence
Finding
The skill documentation recommends running `npx @getalby/cli` without pinning a specific version. This creates a supply-chain risk because a future compromised or malicious package version could be fetched and executed at runtime on the operator's machine. The risk is somewhat reduced because the command is presented as optional manual usage rather than auto-executed by the skill.

External Transmission

Medium
Category
Data Exfiltration
Content
#### Step 1 — Hit the endpoint (or purchase credits for a custom amount)

```bash
curl -X POST https://www.pullthatupjamie.ai/api/make-clip \
  -H "Content-Type: application/json" \
  -d '{"clipId": "1015378_guid_p123"}'
```
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
### Usage

```bash
curl -s -X POST \
  -H "Authorization: L402 MACAROON:PREIMAGE" \
  -H "Content-Type: application/json" \
  -d '{"query": "that time Jim talked about the AI monolith", "smartMode": true, "limit": 10}' \
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# Step 1: Find the feed
curl -s "API_BASE/api/corpus/feeds?search=News+and+Guidance"
# Returns: feedId (e.g., 7648986)

# Step 2: Search episode titles within that feed
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
### Create a Session
```bash
curl -s -X POST \
  -H "Authorization: L402 MACAROON:PREIMAGE" \
  -H "Content-Type: application/json" \
  -d '{
Confidence
79% confidence
Finding
The session-creation workflow instructs clients to upload full clip metadata, including transcript text, audio URLs, listen links, dates, images, and a client identifier derived from a payment hash, to an external service. In context this is expected product behavior, but it still creates a real data-transfer risk because user-curated research content and identifiers are sent off-platform and could expose sensitive or proprietary material if agents include private data or misuse credentials.

Static analysis

No suspicious patterns detected.