Back to skill

Security audit

Solpaw-Launcher

Security checks for vulnerabilities and agentic risk

Overview

This paid Solana token-launch skill is mostly on-purpose, but it asks for a wallet private key and claims local signing while the shipped code uses a server-signed launch path.

Review this carefully before installing. Use only a dedicated low-balance wallet, do not provide a main wallet private key, and require explicit human confirmation for every fee payment and launch. The publisher should remove raw exec dispatch, remove SOLANA_PRIVATE_KEY unless local signing is actually implemented, and make the server-signed fallback versus local-signing behavior explicit before this is treated as routine to install.

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 (4)

T09 · Insecure Skill Coding Practices

Error
Location
solpaw-skill.ts:72
Finding

Bearer API Credential Can Be Sent 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), // 2 min timeout for launches }); ``` ### Technical Analysis The constructor accepts an arbitrary `apiEndpoint` and only removes a trailing slash. It does not require HTTPS or validate the destination against a trusted hostname or origin. The shared request function unconditionally attaches the SolPaw API key as a bearer credential. Consequently, anyone who can modify Skill configuration can direct authenticated requests to an attacker-controlled HTTP or HTTPS service. Plain HTTP endpoints would additionally expose the credential to network interception. Allowing caller-provided headers to override default headers through `...headers` also weakens control over authentication and content-type behavior, although the primary issue is the unrestricted credential destination. ### Attack Path 1. An attacker modifies the Skill configuration or supplies a malicious `apiEndpoint`, such as `https://attack ...[truncated 998 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:6
Finding

Skill Uses Raw Shell Command Dispatch Without a Structured Argument Boundary

Content
View full analysis
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
SKILL.md:9
Finding

Skill Requests Access to a Solana Private Key That the Shipped Implementation Does Not Use

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
solpaw-skill.ts:194
Finding

Implemented Launch Method Uses Server-Signed Fallback Despite Local-Creator Security Claims

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, }); ``` `SKILL.md` presents an SDK method that does not exist in the shipped class: ```ts 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); ``` The bundled API reference describes the endpoint used by the implementation as server-signed: ```md ### POST /tokens/launch (Auth required) — Fallback Lightning mode: server signs the transaction. Platform wallet is the onchain creator (not recommended). ``` ### Technical Analysis The project repeatedly claims that the user's wallet is the on-chain creator and recommends Local Mode. However, the exported TypeScript class does not i ...[truncated 2036 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 242)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 243)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
91% confidence
Finding

The README promotes autonomous token launches and fee-spending on Solana without a prominent warning that these actions incur real financial cost and may be irreversible once submitted on-chain. In an agent skill context, this increases the risk that operators enable or invoke the skill without understanding that it can trigger live transactions and token creation against a real wallet.

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 67)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 exposes powerful capabilities through command-tool: exec with raw arguments and relies on environment variables and network access, but it does not declare any explicit tool scope such as permissions or allowed-tools. This weakens policy enforcement and increases the chance that a caller or surrounding agent framework can invoke shell/network behavior more broadly than intended, especially in a skill that can trigger financial transactions.

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 60)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
86% confidence
Finding

The CSRF retrieval request sends an API bearer token to an external service and obtains a launch-enabling token. In a skill that can initiate paid blockchain actions, dependence on externally issued anti-replay tokens increases the security boundary around the remote service; if the endpoint or token handling is compromised, attackers may facilitate unauthorized launches.

Content

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

bash
CSRF=$(curl -s -H "Authorization: Bearer $SOLPAW_API_KEY" \
  https://api.solpaw.fun/api/v1/agents/csrf | jq -r '.data.csrf_token')

Step 3: Send 0.1 SOL launch fee

External Transmission

Medium
Category
Data Exfiltration
Confidence
78% confidence
Finding

Uploading arbitrary token images to an external API is an intentional feature, but it still transmits user-provided files off-host. In this context, the risk is moderate because the skill encourages outbound transfer of local file content, which could be abused if file selection is not tightly controlled or if a malicious prompt tricks the agent into uploading unintended files.

Content

Scanner excerpt · SKILL.md (reported line 84)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
88% confidence
Finding

This duplicate endpoint finding corresponds to the same token launch flow and remains high risk because it sends launch parameters and credentials to a third-party API involved in financial operations. The skill context makes this more dangerous than ordinary web API use because the response is meant to be signed and committed on-chain, creating irreversible consequences.

Content

Scanner excerpt · SKILL.md (reported line 93)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

This duplicate endpoint finding corresponds to the same token launch flow and remains high risk because it sends launch parameters and credentials to a third-party API involved in financial operations. The skill context makes this more dangerous than ordinary web API use because the response is meant to be signed and committed on-chain, creating irreversible consequences.

Content

Scanner excerpt · SKILL.md (reported line 93)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
91% confidence
Finding

Submitting a signed transaction to an external API is security-sensitive because the signed payload can trigger irreversible blockchain state changes and fund expenditure. Even if the private key is not transmitted, the signed transaction itself is valuable and can be abused, replayed within allowed semantics, or misrepresented to the user if the service is untrusted or the transaction contents were not independently verified.

Content

Scanner excerpt · SKILL.md (reported line 112)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
72% confidence
Finding

The SDK example configures a remote API endpoint and loads secrets from environment variables for a one-call flow that pays fees, uploads content, signs, and submits. This consolidates several sensitive actions behind a high-trust helper, which raises risk if the SDK behavior is not auditable or if the endpoint can be changed, especially in an agent environment handling wallet material.

Content

Scanner excerpt · SKILL.md (reported line 125)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,
});

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 52)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 67)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 83)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 269)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 53)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 60)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.yml (reported line 21)May include surrounding context.

yaml
# 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
92% confidence
Finding

The documentation exposes a fallback mode where the server signs the launch transaction and becomes the onchain creator, but the warning is minimal and does not clearly explain the custody, impersonation, and trust consequences. In a wallet- and token-launching skill, this can mislead integrators into using a centrally signed path that changes who controls or is attributed as creator, increasing risk of unauthorized launches, operator abuse, or user confusion about asset provenance.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
91% confidence
Finding

This skill is explicitly configured to use an external API while requiring highly sensitive secrets, including a Solana private key. In the context of a token-launching skill, external transmission materially increases risk because a downstream implementation could send wallet secrets or sign transactions without clear user approval, potentially leading to irreversible on-chain asset loss or unauthorized token launches.

Content

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

json
"SOLPAW_API_KEY": "",
    "SOLPAW_CREATOR_WALLET": "",
    "SOLANA_PRIVATE_KEY": "",
    "SOLPAW_API_URL": "https://api.solpaw.fun/api/v1"
  },
  "dependencies": ["curl"],
  "install": {

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest requires a secret API key but does not disclose to users what privileges that key grants, where it will be sent, or what actions it can authorize. In a crypto-launching skill, hidden credential use is security-relevant because the key may enable token launches, billing, or account operations against a third-party service without clear user understanding.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.