Back to skill

Security audit

Agent Economy Starter Kit

Security checks for vulnerabilities and agentic risk

Overview

The skill contains no local code or persistence, but it asks users to enroll an agent in a third-party paid task, wallet, and commerce service without enough security, privacy, or authorization detail.

Review this carefully before installing. Use it only if you trust the ClawSwarm/onlyflies.buzz service, treat any returned api_key as a secret, start with a test agent and non-sensitive capability descriptions, and do not allow automatic task handling, purchases, wallet actions, or escrow activity without explicit per-task approval and a clear revocation path.

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

other

Warning
Location
SKILL.md:3
Finding
External Agent Registration Exposes Identity and Capability Metadata to an Unverified Service<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 3-15 and 20-30 **Vulnerability Type**: External agent registration and control exposure **Risk Level**: Medium ### Vulnerable Code ```markdown **Give your agent a wallet, a reputation, and actual income — in 60 seconds.** ## What This Does Connects your OpenClaw agent to ClawSwarm — the open agent economy. Your agent gets: - 💰 **A real treasury** — earn HBAR + SOL for completing tasks - 🤝 **Negotiation protocol** — offer/counter/accept with escrow - 🔍 **Skill discovery** — register skills, get matched to paid tasks - 🌍 **Global presence** — country flag on the swarm map - 📊 **Reputation** — earned through delivery, not gaming - 🎯 **Auto task matching** — work finds YOU - 🛒 **Commerce** — save for hardware, request real purchases ``` ```bash # 1. Register (save the agent_id + api_key!) curl -X POST https://onlyflies.buzz/clawswarm/api/v1/agents/register \ -H "Content-Type: application/json" \ -d '{"name":"YourAgent","capabilities":["coding","research"]}' # 2. Register a skill (start getting matched to tasks) curl -X POST https://onlyflies.buzz/clawswarm/api/v1/skills/register \ -H "X-Agent-ID: YOUR_AGENT_ID" \ -d '{"agent_id":"YOUR_AGENT_ID","skill_name":"code_review","description":"Expert code review","tags":["code","security"],"confidence":0.8}' # 3. Check your treasury curl https://onlyflies.buzz/clawswarm/api/v1/treasury/YOUR_AGENT_ID ``` ### Technical Analysis The documented workflow directs users to transmit an agent name, capability list, agent identifier, skill metadata, tags, and confidence rating to the external `onlyflies.buzz` service. It also advertises automatic matching to paid tasks, escrow, cryptocurrency earnings, and real-world commerce. The project contains no local implementation, privacy notice, service identity verification procedure, data-retention policy, authorization model, task-validation boundary, or mechanism requiring explicit user ...[truncated 1776 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Clearly identify the service operator and publish verifiable privacy, retention, deletion, and incident-response policies. 2. Document every data field transmitted during registration, skill publication, matching, negotiation, treasury use, and commerce workflows. 3. Require explicit informed consent before enrollment and separate consent before enabling task matching. 4. Require per-task user approval rather than automatically accepting or executing externally selected work. 5. Display the task origin, requested tools, required data, financial terms, and expected side effects before approval. 6. Enforce a deny-by-default capability model so remote tasks cannot access local files, secrets, network destinations, wallets, or execution tools unless specifically authorized. 7. Authenticate and integrity-protect all task offers and negotiation messages. 8. Provide account revocation, metadata deletion, task rejection, and service-disconnection procedures. 9. Explain the custody and authorization model for wallets, escrow, cryptocurrency transfers, and real-world purchases. 10. Add warnings that users must not submit confidential capability descriptions, credentials, personal information, or internal infrastructure details. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:20
Finding
Agent-Specific API Examples Omit Credential-Based Authentication<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 20-30 **Vulnerability Type**: T09: Insecure Skill Coding Practices **Risk Level**: Medium ### Vulnerable Code ```bash # 1. Register (save the agent_id + api_key!) curl -X POST https://onlyflies.buzz/clawswarm/api/v1/agents/register \ -H "Content-Type: application/json" \ -d '{"name":"YourAgent","capabilities":["coding","research"]}' # 2. Register a skill (start getting matched to tasks) curl -X POST https://onlyflies.buzz/clawswarm/api/v1/skills/register \ -H "X-Agent-ID: YOUR_AGENT_ID" \ -d '{"agent_id":"YOUR_AGENT_ID","skill_name":"code_review","description":"Expert code review","tags":["code","security"],"confidence":0.8}' # 3. Check your treasury curl https://onlyflies.buzz/clawswarm/api/v1/treasury/YOUR_AGENT_ID ``` ### Technical Analysis The registration comment instructs the user to save both an `agent_id` and an `api_key`. However, the subsequent state-changing skill-registration request does not send the API key or another demonstrated authentication credential. Instead, it supplies the agent ID in both a request header and the JSON body. The treasury request similarly places only the agent ID in the URL. An identifier is not an authentication secret and must not be treated as proof that the caller controls the corresponding agent. Because the audited project contains only documentation and no server implementation, it is not possible to confirm whether the remote service applies undocumented authentication or authorization controls. Nevertheless, the prescribed client workflow omits those controls. If the server accepts the requests as documented, the API would be vulnerable to broken object-level authorization and agent impersonation. ### Attack Path 1. An attacker obtains or guesses a target agent ID through logs, shared command history, API responses, public profiles, predictable identifiers, or other information disclosure. 2. The attacker constructs the doc ...[truncated 1113 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Require authentication for every agent-specific endpoint, including read-only treasury requests. 2. Send the issued API key through an authorization header, for example `Authorization: Bearer <token>`, over HTTPS. 3. Bind each credential to exactly one agent identity and derive the authorized agent server-side rather than trusting an agent ID supplied by the client. 4. Reject requests when an agent ID in the path or body does not match the identity associated with the authenticated credential. 5. Use scoped credentials so skill management, treasury reads, negotiation, and financial operations have separate permissions. 6. Require stronger authorization, replay protection, and transaction confirmation for wallet, escrow, purchase, or withdrawal operations. 7. Generate cryptographically random, revocable credentials and support secure rotation. 8. Avoid putting secrets in URLs, examples, shell history, logs, or repository files. Demonstrate loading credentials from a protected environment variable or secret manager. 9. Apply rate limiting, audit logging, anomaly detection, and alerts for profile changes and treasury access. 10. Update the Quick Start examples to demonstrate the mandatory authentication mechanism and document expected authorization failures. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (2)

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The quick-start instructs users to register with a third-party service and explicitly tells them to save an api_key, but it provides no guidance on treating that credential as secret, avoiding logging/screen capture, or storing it securely. In an agent-skill context, normalizing immediate credential issuance and use against an external service increases the chance of accidental key exposure or unsafe operational setup.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# 1. Register (save the agent_id + api_key!)
curl -X POST https://onlyflies.buzz/clawswarm/api/v1/agents/register \
  -H "Content-Type: application/json" \
  -d '{"name":"YourAgent","capabilities":["coding","research"]}'
Confidence
76% confidence
Finding
The skill directs the user to send data to an external domain using curl, establishing a trust relationship with a third-party service outside the local agent environment. While external registration can be legitimate, this is still security-relevant because it causes outbound transmission and onboarding to an unvetted remote platform with financial and identity-like functionality, which can expose agent metadata and lead to downstream credential issuance.

Static analysis

No suspicious patterns detected.