Back to skill

Security audit

ClawPump

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent ClawPump API guide, but it asks users to sign opaque third-party Solana transactions and send funds without enough validation or warning.

Review this skill carefully before installing. Use it only with explicit user confirmation for any launch, swap, arbitrage, wallet update, or SOL transfer, and do not sign server-generated transactions unless they are decoded, simulated, and verified against the intended action. Prefer a narrowly funded wallet rather than a primary wallet.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:190
Finding
Unvalidated Signing of a Server-Controlled Solana Transaction## Vulnerability Details **File Location**: `SKILL.md`, lines 190–222 **Vulnerability Type**: Unvalidated signing and execution of an opaque, remotely supplied blockchain transaction **Risk Level**: High ### Vulnerable Code ```json { "swapTransaction": "base64-encoded-versioned-transaction...", "quote": { "inAmount": "...", "outAmount": "...", "platformFee": "..." }, "usage": { "platformFeeBps": 50, "defaultSlippageBps": 300, "note": "Sign the swapTransaction with your wallet and submit to Solana" } } ``` ```javascript import { VersionedTransaction, Connection } from "@solana/web3.js"; // 1. Get the transaction from ClawPump const res = await fetch("https://clawpump.tech/api/swap", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ inputMint: "So11111111111111111111111111111111111111112", outputMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", amount: "100000000", userPublicKey: wallet.publicKey.toBase58(), }), }); const { swapTransaction } = await res.json(); // 2. Deserialize, sign, and send const tx = VersionedTransaction.deserialize(Buffer.from(swapTransaction, "base64")); tx.sign([wallet]); const connection = new Connection("https://api.mainnet-beta.solana.com"); const txHash = await connection.sendRawTransaction(tx.serialize()); ``` ### Technical Analysis The Skill instructs the client to retrieve an opaque serialized transaction from `https://clawpump.tech`, decode it from base64, deserialize it, and immediately authorize it with the user's wallet. No validation is performed on the transaction's instructions, program IDs, account keys, recipients, token mints, transfer amounts, fee recipients, signer requirements, writable accounts, or expected balance changes. Base64 decoding and transaction deserialization are normal Solana operations and do not represent local shell-code execution. The vulnerability is the trust-boundary failure created by signing remotely c ...[truncated 1989 chars]
Remediation
## Remediation Suggestions 1. Decode and inspect every transaction instruction before requesting a signature. 2. Allowlist the Solana program IDs required for the intended swap and reject all unexpected program invocations. 3. Verify that the transaction uses the requested input and output mints. 4. Enforce the requested maximum input amount and an independently calculated minimum output amount. 5. Validate all source, destination, fee-recipient, signer, and writable accounts against locally derived expectations. 6. Reject instructions that change authorities, approve delegates, close accounts, create unrelated accounts, or transfer unrelated assets. 7. Validate address lookup tables and all resolved account keys rather than inspecting only static message keys. 8. Simulate the transaction through a trusted RPC endpoint and compare predicted balance changes with the displayed quote. 9. Present a human-readable transaction summary and require explicit user confirmation before signing. 10. Bind quotes to transactions using a short-lived, integrity-protected quote identifier and verify all quoted parameters locally. 11. Use a narrowly funded, task-specific wallet instead of a primary wallet to limit the impact of a malicious transaction. 12. Treat the remote API response as untrusted even when HTTPS is used; TLS protects transport but does not protect against a compromised or malicious server.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (5)

Vague Triggers

Medium
Confidence
93% confidence
Finding
The skill description is extremely broad and includes multiple high-risk financial actions such as token launches, swaps, arbitrage, earnings checks, and domain searches. Broad activation phrasing can cause the agent to invoke this skill for loosely related requests, increasing the chance that users are routed into external financial workflows or on-chain actions they did not explicitly intend.

External Transmission

Medium
Category
Data Exfiltration
Content
### 1. Upload an image

```bash
curl -X POST https://clawpump.tech/api/upload \
  -F "image=@logo.png"
```
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The self-funded launch flow instructs users to send 0.03 SOL to a platform wallet and then proceed, but does not clearly warn that blockchain transfers are irreversible and depend on trusting the destination address and service. In a skill context focused on financial operations, this omission materially increases the chance of accidental loss or social-engineering-style misuse.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
This section provides instructions for deserializing, signing, and submitting a Solana transaction returned by a third-party API without prominent warnings that signing can authorize irreversible on-chain transfers or other state changes. Because the transaction is opaque base64 data from an external service, users may sign actions they have not independently reviewed, creating real risk of fund loss or unintended approvals.

External Transmission

Medium
Category
Data Exfiltration
Content
import { VersionedTransaction, Connection } from "@solana/web3.js";

// 1. Get the transaction from ClawPump
const res = await fetch("https://clawpump.tech/api/swap", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.