Back to skill

Security audit

Solpaw

Security checks for vulnerabilities and agentic risk

Overview

This skill is for launching Solana tokens, but it asks for high-impact wallet/private-key authority and has inconsistent token-creator claims around a real fund-moving workflow.

Review carefully before installing. Use only a dedicated low-balance wallet, do not provide a main-wallet private key, confirm every fee payment and signed transaction manually, and verify whether the actual launch path preserves your wallet as the on-chain creator before paying the 0.1 SOL fee.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (3)

T09 · Insecure Skill Coding Practices

Warning
Location
solpaw-skill.ts:83
Finding

API Credentials Can Be Transmitted to an Arbitrary Configured Endpoint

Content
View full analysis
( method: string, path: string, body?: Record, headers?: Record ): Promise { const url = `${this.config.apiEndpoint}${path}`; const response = await fetch(url, { method, headers: { "Content-Type": "application/json", Authorization: `Bearer ${this.config.apiKey}`, ...headers, }, body: body ? JSON.stringify(body) : undefined, signal: AbortSignal.timeout(120000), }); ``` ### Technical Analysis The constructor accepts any nonempty `apiEndpoint` and performs no scheme, origin, or host validation. The common request function then attaches the SolPaw API key as a Bearer credential to every request made against that endpoint. Consequently, the API key can be disclosed if the endpoint is changed to an attacker-controlled server through a malicious configuration, configuration injection, deployment mistake, or compromised agent configuration. The code also does not require HTTPS, so a configured plaintext HTTP endpoint could expose credentials and request bodies to network interception. The outbound request body may additionally contain the creator wallet, payment transaction signature, CSRF token, token metadata, social links, and fee parameters. Most of those fields are necessary for the hosted launch service, but they must only be s ...[truncated 1212 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
SKILL.md:6
Finding

Wallet Private-Key Access and Raw Command Execution Exceed Implemented Requirements

Content
View full analysis
Remediation
View remediation

other

Warning
Location
solpaw-skill.ts:217
Finding

Implemented Launch Mode Contradicts the Claimed On-Chain Creator Ownership

Content
View full analysis
("POST", "/tokens/launch", { name: params.name, symbol: params.symbol.toUpperCase(), description: params.description, image_url: params.image_url, creator_wallet: params.creator_wallet || this.config.defaultCreatorWallet, twitter: params.twitter, telegram: params.telegram, website: params.website, initial_buy_sol: params.initial_buy_sol || 0, slippage: params.slippage || 10, priority_fee: params.priority_fee || 0.0005, launch_fee_signature: params.launch_fee_signature, csrf_token: csrfToken, }); ``` ### Conflicting Skill Claim ```yaml description: Launch Solana tokens on Pump.fun via the SolPaw platform. 0.1 SOL one-time fee. Your wallet is the onchain creator. ``` ```markdown ### Using the TypeScript SDK (Easier) const keypair = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PRIVATE_KEY)); // One-call launch: pays fee + uploads + signs + submits const result = await solpaw.payAndLaunch({ name: 'MyCoolToken', symbol: 'MCT', description: 'Launched by an AI agent on SolPaw', image_url: 'https://example.com/logo.png', initial_buy_sol: 0.5, }, keypair); ``` ```markdown - ALWAYS use Local Mode (pass `signer_keypair`) so the agent's wallet is the onchain creator - The 0.1 SOL platform fee is non-refundable once the launch succeeds ``` ### Conflicting API Reference ```markdown ### POST /token ...[truncated 2545 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (30)

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 · README.md (reported line 241)May include surrounding context.

bash
git clone https://github.com/LvcidPsyche/solpaw.git
cd solpaw
cp .env.example .env
# Edit .env with your values
docker compose up -d

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 · README.md (reported line 242)May include surrounding context.

git clone https://github.com/LvcidPsyche/solpaw.git cd solpaw cp .env.example .env

Edit .env with your values

docker compose up -d

text

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The README promotes autonomous token launches and agent-driven registration/transactions without a prominent warning that launching a token and paying the 0.1 SOL fee are irreversible on-chain actions. In an agent skill context, missing consent and risk disclosures materially increase the chance of unintended spending, unauthorized launches, or reputational harm from creating public tokens automatically.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · README.md (reported line 66)May include surrounding context.

3. Register Your Agent

bash
curl -X POST https://api.solpaw.fun/api/v1/agents/register \
  -H "Content-Type: application/json" \
  -d '{
    "agent_name": "MyCoolAgent",

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill is configured to invoke a raw exec tool and requires sensitive environment variables, including a Solana private key, while declaring no explicit tool restrictions or permission scope. In this context, missing scope boundaries is dangerous because the skill can initiate network calls and influence fund-moving operations without machine-readable guardrails limiting what tools or actions are permitted.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

Step 1: Register (one-time)

bash
curl -s -X POST https://api.solpaw.fun/api/v1/agents/register \
  -H "Content-Type: application/json" \
  -d '{"agent_name":"MyAgent","default_fee_wallet":"YOUR_WALLET_ADDRESS"}' | jq .

External Transmission

Medium
Category
Data Exfiltration
Confidence
72% confidence
Finding

Uploading an image to a third-party service is expected for token metadata, but it still transmits local file contents off-host. In an agent setting using raw exec, file upload can become risky if the file path is influenced by untrusted input, potentially causing unintended disclosure of local files rather than only a token logo.

Content

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

Step 4: Upload token image (optional but recommended)

bash
IMAGE_ID=$(curl -s -X POST https://api.solpaw.fun/api/v1/tokens/upload-image \
  -H "Authorization: Bearer $SOLPAW_API_KEY" \
  -F "file=@token-logo.png" | jq -r '.data.image_id')

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

The endpoint URL marks a critical trust boundary where launch parameters and credentials are sent to an external service that constructs transaction data later signed by the user's wallet. In this skill context, that dependency is more dangerous than ordinary web API use because it sits directly in the path of financial and on-chain actions.

Content

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

bash
# Build unsigned transaction
TX_DATA=$(curl -s -X POST https://api.solpaw.fun/api/v1/tokens/launch-local \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SOLPAW_API_KEY" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

The endpoint URL marks a critical trust boundary where launch parameters and credentials are sent to an external service that constructs transaction data later signed by the user's wallet. In this skill context, that dependency is more dangerous than ordinary web API use because it sits directly in the path of financial and on-chain actions.

Content

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

bash
# Build unsigned transaction
TX_DATA=$(curl -s -X POST https://api.solpaw.fun/api/v1/tokens/launch-local \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SOLPAW_API_KEY" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

Submitting the signed transaction to the third-party API involves transmitting a wallet-authorized transaction blob that can result in irreversible on-chain effects. Because blockchain transactions are final and value-bearing, any ambiguity about what was signed or where it is submitted creates substantial risk of unauthorized or misunderstood fund movement.

Content

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

md
# Sign the transaction with your private key, then submit
SIGNED_TX="..." # sign the base64 transaction from TX_DATA
curl -s -X POST https://api.solpaw.fun/api/v1/tokens/submit \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SOLPAW_API_KEY" \
  -d '{"signed_transaction": "'$SIGNED_TX'", "mint": "MINT_FROM_TX_DATA"}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
90% confidence
Finding

The SDK example configures a remote API endpoint and loads a private key into process memory for a one-call flow that pays fees, signs, and submits transactions. In an agent skill, this tight coupling of remote service use and hot-wallet signing increases the blast radius of mistakes, prompt misuse, or compromised dependencies.

Content

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

md
import { Keypair } from '@solana/web3.js';

const solpaw = new SolPawSkill({
  apiEndpoint: 'https://api.solpaw.fun/api/v1',
  apiKey: process.env.SOLPAW_API_KEY,
  defaultCreatorWallet: process.env.SOLPAW_CREATOR_WALLET,
});

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The one-call SDK example performs fee payment, transaction signing, and submission using the wallet private key, but the example does not prominently warn that it will spend funds and exercise direct control over signing material. In an agent skill, that omission materially increases the risk of accidental wallet use or unintended token launches by users or higher-level agents that treat the sample as safe boilerplate.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · README.md (reported line 51)May include surrounding context.

md
# SolPaw API Reference

Base URL: `https://api.solpaw.fun/api/v1`

## Authentication

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · README.md (reported line 66)May include surrounding context.

md
# SolPaw API Reference

Base URL: `https://api.solpaw.fun/api/v1`

## Authentication

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · README.md (reported line 82)May include surrounding context.

md
# SolPaw API Reference

Base URL: `https://api.solpaw.fun/api/v1`

## Authentication

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · README.md (reported line 268)May include surrounding context.

md
# SolPaw API Reference

Base URL: `https://api.solpaw.fun/api/v1`

## Authentication

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
# SolPaw API Reference

Base URL: `https://api.solpaw.fun/api/v1`

## Authentication

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
# SolPaw API Reference

Base URL: `https://api.solpaw.fun/api/v1`

## Authentication

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · references/api-docs.md (reported line 3)May include surrounding context.

md
# SolPaw API Reference

Base URL: `https://api.solpaw.fun/api/v1`

## Authentication

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · skill.json (reported line 8)May include surrounding context.

json
# SolPaw API Reference

Base URL: `https://api.solpaw.fun/api/v1`

## Authentication

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · solpaw-skill.ts (reported line 61)May include surrounding context.

ts
# SolPaw API Reference

Base URL: `https://api.solpaw.fun/api/v1`

## Authentication

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · solpaw-skill.ts (reported line 314)May include surrounding context.

ts
# SolPaw API Reference

Base URL: `https://api.solpaw.fun/api/v1`

## Authentication

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The description advertises token launch capability and a 0.1 SOL fee, but does not clearly warn that token creation is an irreversible on-chain action and may incur additional network or platform costs. Users may invoke the skill without understanding that it can permanently create assets and spend funds, which is especially risky in an automated agent context.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest explicitly requires a raw private key via the SOLANA_PRIVATE_KEY environment variable, but provides no user-facing warning about the sensitivity of that secret or safe handling expectations. In a skill that performs on-chain actions, this increases the risk of users pasting high-value wallet keys into an unvetted integration, which could lead to irreversible asset loss if the broader skill later mishandles or transmits the key.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The manifest advertises a skill that launches tokens, charges a one-time SOL fee, uses an API key, and references a creator wallet, but it provides no explicit user-facing warning that actions may spend funds, be irreversible, or create on-chain assets tied to the user's wallet. In a crypto-launch context, omission of these warnings increases the risk of accidental financial loss or unintended token deployment by operators who may treat the command like a routine automation step.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.