Back to skill

Security audit

Clawphunks

Security checks for vulnerabilities and agentic risk

Overview

This NFT skill matches its stated purpose, but it asks agents to handle real wallet keys and sign payments without enough local safeguards.

Review before installing or deploying. Use only a low-balance wallet, do not reuse a primary wallet private key, verify every USDC amount and recipient before signing, avoid running mutable remote scripts blindly, and fix the facilitator, Supabase policy, and dependency issues before operating this as a public service.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
Findings (4)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
src/server.ts:634
Finding

Unauthenticated Facilitator Endpoint Allows Unauthorized Gas Sponsorship

Content
View full analysis
{ try { const { paymentPayload, paymentRequirements } = req.body; const result = await facilitatorSettle(paymentPayload, paymentRequirements); res.json(result); } catch (err: any) { res.json({ success: false, error: err.message, }); } }); ``` ```ts // src/facilitator.ts:218-259 export async function settle( paymentPayload: PaymentPayload, paymentRequirements: PaymentRequirements ): Promise { try { const { walletClient, publicClient } = getSignerWallet(); const { authorization, signature } = paymentPayload.payload; const { v, r, s } = parseSignature(signature); console.log('[facilitator] Settling payment...'); console.log(` From: ${authorization.from}`); console.log(` To: ${authorization.to}`); console.log(` Value: ${authorization.value} (${Number(authorization.value) / 1e6} USDC)`); const hash = await walletClient.writeContract({ address: USDC_ADDRESS, abi: TRANSFER_WITH_AUTH_ABI, functionName: 'transferWithAuthorization', args: [ authorization.from as `0x${string}`, authorization.to as `0x${string}`, BigInt(authorization.value), BigInt(authorization.validAfter), BigInt(authorization.validBefore), authorization.nonce as `0x${string}`, v, r, s, ], }); console.log(`[facilitator] Tx submitted: ${hash}`); const receipt = await publicClient.waitForTransactionReceipt({ hash }); if (receipt.status === 'success') { console.log(`[facilitator] ✓ Payment settled: ${hash}`); return { success: true, txHash: hash }; } else { console. ...[truncated 2310 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
mcp/src/index.ts:219
Finding

Generated Mint Scripts Sign Unbounded Server-Controlled Payment Terms

Content
View full analysis
Remediation
View remediation

T03 · Remote Payload Retrieval and Execution

Warning
Location
integrations/langchain/clawphunks_tool.py:115
Finding

Agent Integrations Retrieve Mutable Executable Instructions from an External Domain

Content
View full analysis
str: """Get skills/scripts.""" try: response = requests.get(SKILLS_URL) if response.status_code == 200: return response.text return f"Error: {response.status_code}" except Exception as e: return f"Error: {str(e)}" async def _arun(self, query: str = "") -> str: return self._run(query) ``` ```ts // integrations/agentkit/clawphunks_action.ts:94-110 export const clawphunksSkillsAction: ActionDefinition = { name: 'clawphunks_skills', description: 'Get complete executable scripts for listing, buying, transferring, and rescuing ClawPhunks on L1.', schema: z.object({}), handler: async () => { const response = await fetch(SKILLS_URL); if (!response.ok) { throw new Error(`Failed to fetch skills: ${response.status}`); } return await response.json(); }, }; ``` ### Technical Analysis Both integrations advertise a tool that returns complete executable wallet and trading scripts, but obtain those scripts from `chainhost.online` at invocation time. The response is returned directly to the agent without: - Pinning a specific immutable version. - Verifying a cryptographic digest or signature. - Validating the response against an approved instruction set. - Separating remote content from trusted tool instructions. - Warning the agent that the content is untrusted and mutable. The external domain is separate from the primary mint API domain. Its content can change after package review without any change t ...[truncated 1492 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
supabase/schema.sql:58
Finding

Supabase Write Policy Is Not Restricted to the Service Role

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (72)

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 24)May include surrounding context.

Run Server

bash
cp .env.example .env
# Edit .env with your keys
npm run dev

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 25)May include surrounding context.

bash
cp .env.example .env
# Edit .env with your keys
npm run dev

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 · mcp/src/index.ts (reported line 185)May include surrounding context.

ts
```bash
cp .env.example .env
# Edit .env with your keys
npm run dev
```

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 · mcp/src/index.ts (reported line 186)May include surrounding context.

ts
```bash
cp .env.example .env
# Edit .env with your keys
npm run dev
```

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 · mcp/src/index.ts (reported line 256)May include surrounding context.

ts
```bash
cp .env.example .env
# Edit .env with your keys
npm run dev
```

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 · mcp/src/index.ts (reported line 267)May include surrounding context.

ts
```bash
cp .env.example .env
# Edit .env with your keys
npm run dev
```

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 · mcp/src/index.ts (reported line 322)May include surrounding context.

ts
```bash
cp .env.example .env
# Edit .env with your keys
npm run dev
```

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 · mcp/src/index.ts (reported line 323)May include surrounding context.

ts
```bash
cp .env.example .env
# Edit .env with your keys
npm run dev
```

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 · mcp/src/index.ts (reported line 392)May include surrounding context.

ts
```bash
cp .env.example .env
# Edit .env with your keys
npm run dev
```

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 · src/server.ts (reported line 412)May include surrounding context.

ts
```bash
cp .env.example .env
# Edit .env with your keys
npm run dev
```

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The skill claims minting and trading, yet the file mainly documents generic transaction construction and use of a signer key without clearly constrained permissions. In the context of blockchain actions, vague capability descriptions are dangerous because they can normalize giving a skill broad signing authority for actions beyond what users expect.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The skill claims minting and trading, yet the file mainly documents generic transaction construction and use of a signer key without clearly constrained permissions. In the context of blockchain actions, vague capability descriptions are dangerous because they can normalize giving a skill broad signing authority for actions beyond what users expect.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding

The skill claims minting and trading, yet the file mainly documents generic transaction construction and use of a signer key without clearly constrained permissions. In the context of blockchain actions, vague capability descriptions are dangerous because they can normalize giving a skill broad signing authority for actions beyond what users expect.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill claims minting and trading, yet the file mainly documents generic transaction construction and use of a signer key without clearly constrained permissions. In the context of blockchain actions, vague capability descriptions are dangerous because they can normalize giving a skill broad signing authority for actions beyond what users expect.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
89% confidence
Finding

The skill claims minting and trading, yet the file mainly documents generic transaction construction and use of a signer key without clearly constrained permissions. In the context of blockchain actions, vague capability descriptions are dangerous because they can normalize giving a skill broad signing authority for actions beyond what users expect.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: express-rate-limit==8.2.1 — 1 advisory(ies): CVE-2026-30827 (express-rate-limit: IPv4-mapped IPv6 addresses bypass per-client rate limiting o)

High
Category
Supply Chain
Confidence
91% confidence
Finding

express-rate-limit 8.2.1 is reported vulnerable to bypass when clients use IPv4-mapped IPv6 addresses, which can defeat per-client throttling. Because the MCP SDK includes HTTP server components, this weakness can materially reduce protections against brute force, abuse, or resource exhaustion if rate limiting is relied upon.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: fast-uri==3.1.0 — 7 advisory(ies): CVE-2026-13676 (fast-uri vulnerable to host confusion via failed IDN canonicalization); CVE-2026-18446 (fast-uri vulnerable to host confusion via backslash authority introducer); CVE-2026-75975 (fast-uri vulnerable to server-side request forgery via malformed IPv6 normalizat) +4 more

High
Category
Supply Chain
Confidence
80% confidence
Finding

fast-uri 3.1.0 has multiple URI parsing and canonicalization advisories, including host confusion and SSRF-related cases. This is a real concern when untrusted URLs are parsed for allowlisting, routing, callback validation, or outbound fetch decisions, although the lockfile alone does not show direct use of those code paths.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: hono==4.12.5 — 16 advisory(ies): CVE-2026-56762 (Hono missing validation of cookie name on write path in setCookie()); CVE-2026-47676 (Hono: app.mount() strips mount prefix using undecoded path, causing incorrect ro); CVE-2026-47675 (Hono: Cookie helper does not sanitize sameSite and priority, allowing Set-Cookie) +13 more

High
Category
Supply Chain
Confidence
88% confidence
Finding

hono 4.12.5 is listed with many advisories affecting cookies, routing, and request handling. Since this package underpins the server stack brought in by the MCP SDK, unresolved framework flaws can expose the service to bypasses, header/cookie issues, or routing mistakes even if the application code itself appears minimal.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: ip-address==10.0.1 — 2 advisory(ies): CVE-2026-69192 (ip-address: Address4 decodes leading-zero octets as decimal while resolvers deco); CVE-2026-42338 (ip-address has XSS in Address6 HTML-emitting methods)

High
Category
Supply Chain
Confidence
80% confidence
Finding

ip-address 10.0.1 is reported vulnerable to parsing inconsistencies and XSS in HTML-emitting helpers. The parsing issue is more relevant here because this library is used by express-rate-limit; inconsistent IP interpretation can undermine security decisions such as client identification or allow/deny logic.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: path-to-regexp==8.3.0 — 2 advisory(ies): CVE-2026-4923 (path-to-regexp vulnerable to Regular Expression Denial of Service via multiple w); CVE-2026-4926 (path-to-regexp vulnerable to Denial of Service via sequential optional groups)

High
Category
Supply Chain
Confidence
84% confidence
Finding

path-to-regexp 8.3.0 has reported ReDoS/DoS weaknesses in route pattern processing. In a server context, expensive route matching can let remote attackers consume CPU and degrade availability if crafted paths hit vulnerable patterns or framework internals.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The documentation instructs use of a wallet private key and describes minting and trading flows for irreversible blockchain transactions, but it does not prominently warn about key-handling risk, transaction finality, cross-chain payment complexity, or the possibility of permanent fund loss. In this context, the omission is especially dangerous because the skill is designed for AI agents and directly interfaces with a signing wallet, making user misunderstanding more likely to result in real financial loss.

Content

No source excerpt is available for this finding.

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 · mcp/src/index.ts (reported line 198)May include surrounding context.

ts
// Main
const privateKey = process.env.AGENT_PRIVATE_KEY;
if (!privateKey) { console.error('Set AGENT_PRIVATE_KEY in .env'); process.exit(1); }

const account = privateKeyToAccount(privateKey);
console.log('Wallet:', account.address);

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 · src/server.ts (reported line 148)May include surrounding context.

ts
// Main
const privateKey = process.env.AGENT_PRIVATE_KEY;
if (!privateKey) { console.error('Set AGENT_PRIVATE_KEY in .env'); process.exit(1); }

const account = privateKeyToAccount(privateKey);
console.log('Wallet:', account.address);

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 · src/server.ts (reported line 193)May include surrounding context.

ts
// Main
const privateKey = process.env.AGENT_PRIVATE_KEY;
if (!privateKey) { console.error('Set AGENT_PRIVATE_KEY in .env'); process.exit(1); }

const account = privateKeyToAccount(privateKey);
console.log('Wallet:', account.address);

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 · src/server.ts (reported line 250)May include surrounding context.

ts
// Main
const privateKey = process.env.AGENT_PRIVATE_KEY;
if (!privateKey) { console.error('Set AGENT_PRIVATE_KEY in .env'); process.exit(1); }

const account = privateKeyToAccount(privateKey);
console.log('Wallet:', account.address);

Static analysis

Detected: suspicious.env_credential_access, suspicious.exposed_secret_literal

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
mcp/src/index.ts:257

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
src/server.ts:147

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
public/llms.txt:34

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
public/skill.md:221

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
SKILL.md:221

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
src/server.ts:605