T03 · Remote Payload Retrieval and Execution
- Location
scripts/a2a_client.py:208- Finding
Unverified Remote Skill Content Is Retrieved and Intended for Installation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This marketplace skill is not plainly malicious, but it should go to Review because it can spend credits or USDC, publish skill content, and install third-party skills without strong enough safeguards.
Review before installing. Use this only if you trust the A2A Market service and are comfortable with wallet signing, account identifiers, remote skill acquisition, and skill-content publication. Disable auto-buy and auto-list behavior, require explicit confirmation for every purchase, reward claim, registration, listing, and installation, verify any acquired package before activation, protect the stored agent ID, and avoid the public GitHub or unpinned global install shortcuts unless you have reviewed the files being uploaded or installed.
scripts/a2a_client.py:208Unverified Remote Skill Content Is Retrieved and Intended for Installation
scripts/a2a_client.py:382Credit Purchases Bypass Budget, Reputation, and Confirmation Controls
scripts/a2a_client.py:452Automatic Listing Can Publish Skill Content Without Required Owner Approval
scripts/a2a_client.py:31Unrestricted API Endpoint Override Can Redirect Sensitive Marketplace Traffic
scripts/a2a_client.py:328Agent Authorization Identifier Is Persisted Without Explicit Restrictive Permissions
publish.sh:45Publishing Workflow Installs an Unpinned Global npm Package
The GitHub fallback commands create a public repository and push local contents, yet the document does not warn that this will expose files publicly on GitHub. In a marketplace skill context, operators may be handling API keys, wallet config, unpublished agent logic, or other sensitive artifacts, making accidental disclosure materially more dangerous.
The declared description says this skill enables agent-facing marketplace operations: finding, buying, selling, monetizing skills, and handling credits/rewards/referrals/payments. The actual code chunk does none of that. It is an auxiliary developer release script whose primary purpose is to publish the skill package to ClawHub from a local machine. While publishing infrastructure can support distribution, it is materially different from the declared runtime marketplace integration and lacks any implementation of the advertised marketplace, payment, credits, or earnings features.
The description claims a broad marketplace integration that enables autonomous buying and selling of skills and supports x402 USDC payments on Base L2 plus credits. The supplied code is much narrower: it provides CLI commands for registration, credits balance, daily reward claiming, referral display, marketplace search, listing info lookup, price suggestion, earnings lookup, and API health checks. Those functions do align with parts of the description around search, earnings, credits, daily rewards, referrals, and registration. However, the core declared capabilities of buying skills, selling/listing skills, and payment support are absent. There are no commands or API calls for creating listings, purchasing listings, initiating payments, or handling x402/USDC/Base L2 flows. Because the primary marketplace-action capabilities are missing and payment support is overstated, this is a material description-behavior mismatch.
The skill explicitly permits autonomous purchases, reward claims, and capability-acquisition actions, some triggered by internal conditions like task failure or low efficiency rather than clear user authorization. In a financial/account-management context, this creates a real risk of unauthorized spending, unwanted account actions, and abuse if prompts or environmental conditions manipulate the agent into self-initiated transactions.
The presence of a direct DELETE /v1/listings/:id endpoint creates a high-risk tool surface because an agent with signing capability could be induced to perform irreversible marketplace actions on behalf of the user. Within this skill's context—buying, selling, and monetizing skills autonomously—tool parameter abuse is especially dangerous because a malformed, attacker-supplied, or misresolved listing ID could remove an active product and disrupt income.
DELETE /v1/listings/:id
Response: 204 No Content
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
# 使用 GitHub CLI
gh repo create a2a-market-skill --public --description "A2A Market skill for OpenClaw - Where agents earn"
# 或者手动在 github.com 创建
The one-click publish command uploads the current skill directory to a remote marketplace, but the documentation gives no warning that local contents will be sent off-host. Users may run the command blindly and unintentionally publish secrets, internal files, or unfinished code because it is presented as copy-paste ready.
uvx/uv tool run commands without ==version create a rug-pull risk.
uvx/uv tool run commands without ==version create a rug-pull risk.
The skill documents network access, local file storage, environment-variable use, and payment-related operations but declares no explicit tool scope or permission boundaries. In an agent marketplace context, missing scope constraints increases the chance that the runtime grants broader capabilities than users expect, enabling unintended external calls, local persistence, or secret access during automated flows.
The trigger phrases are broad enough to invoke a high-risk marketplace/payment skill from casual mentions like 'marketplace' or references to earning money. In this context, overbroad routing is dangerous because it can activate workflows that search external services, register accounts, claim rewards, or initiate purchases when the user did not intend financial or account actions.
The configuration explicitly authorizes auto-buying below a threshold, enabling the agent to spend funds without a contemporaneous human decision. In a marketplace connected to a wallet and private key, even low-dollar autonomous purchases can be abused repeatedly, chained into budget exhaustion, or redirected toward malicious listings.
max_per_transaction: 10.00 # Max $10 per purchase
daily_budget: 100.00 # Max $100/day
min_seller_reputation: 60 # Only buy from rep >= 60
auto_approve_below: 5.00 # Auto-buy under $5
require_confirmation_above: 50.00
# Selling rules
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Search by keyword
curl "https://api.a2amarket.live/v1/listings/search?q=data_analysis"
# With filters
curl "https://api.a2amarket.live/v1/listings/search?q=code_review&min_rep=70&max_price=15"
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Search by keyword
curl "https://api.a2amarket.live/v1/listings/search?q=data_analysis"
# With filters
curl "https://api.a2amarket.live/v1/listings/search?q=code_review&min_rep=70&max_price=15"
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Search by keyword
curl "https://api.a2amarket.live/v1/listings/search?q=data_analysis"
# With filters
curl "https://api.a2amarket.live/v1/listings/search?q=code_review&min_rep=70&max_price=15"
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Search by keyword
curl "https://api.a2amarket.live/v1/listings/search?q=data_analysis"
# With filters
curl "https://api.a2amarket.live/v1/listings/search?q=code_review&min_rep=70&max_price=15"
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Search by keyword
curl "https://api.a2amarket.live/v1/listings/search?q=data_analysis"
# With filters
curl "https://api.a2amarket.live/v1/listings/search?q=code_review&min_rep=70&max_price=15"
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Search by keyword
curl "https://api.a2amarket.live/v1/listings/search?q=data_analysis"
# With filters
curl "https://api.a2amarket.live/v1/listings/search?q=code_review&min_rep=70&max_price=15"
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Search by keyword
curl "https://api.a2amarket.live/v1/listings/search?q=data_analysis"
# With filters
curl "https://api.a2amarket.live/v1/listings/search?q=code_review&min_rep=70&max_price=15"
Requesting paid content from the remote service is an expected part of the workflow, but in this context it is coupled to an automated payment flow and content acquisition from an external marketplace. The danger is not the GET itself; it is that this network step is part of a pipeline that can progress toward financial commitment and retrieval of untrusted skill content.
curl -i "https://api.a2amarket.live/v1/listings/skill_042/content"
# Returns: 402 Payment Required
# Header: X-Payment-Required: {"amount": "8000000", "recipient": "0xSeller..."}
This step sends signed payment proof to an external API as part of a purchase flow, enabling real financial transfers tied to the agent's wallet. In combination with autonomous buying and local private-key usage described elsewhere, this is highly dangerous because prompt manipulation or misrouting could cause unauthorized payments to attacker-controlled listings.
curl -X POST "https://api.a2amarket.live/v1/listings/skill_042/content" \
-H "X-Payment: <signed_payment_proof>"
Posting a listing transmits monetization details and publishes the seller's offering to a third-party marketplace. In this skill's context, that can expose proprietary capability descriptions or create unwanted public listings if initiated without clear user consent, especially because the skill contemplates autonomous sell-side behavior.
curl -X POST "https://api.a2amarket.live/v1/listings" \
-H "Content-Type: application/json" \
-d '{
"name": "Research Assistant",
Agent registration sends wallet and agent identity data to an external service and establishes an account relationship that can later be used for credits, referrals, and automated actions. In this context, automatic registration without explicit consent could create unwanted third-party accounts and link persistent identifiers to the user or agent.
Register to get an agent ID, referral code, and initial credits:
curl -X POST "https://api.a2amarket.live/v1/agents/register" \
-H "Content-Type: application/json" \
-d '{"wallet_address": "0xYourWallet...", "name": "My Agent"}'
Claiming a daily reward is an account-affecting write action to an external service. Although not a monetary debit, it changes account state and, combined with autonomous behavior guidance, could perform unintended actions on behalf of the user without clear consent.
-H "x-agent-id: agent_abc123"
curl -X POST "https://api.a2amarket.live/v1/rewards/daily/claim"
-H "x-agent-id: agent_abc123"
This endpoint executes a purchase using credits, which are a spendable account resource, against an external marketplace. Given the skill's autonomous purchase language and broad triggers, this creates a substantial risk of unauthorized or manipulated spending even without direct blockchain signing.
Pay for skills using credits instead of USDC:
curl -X POST "https://api.a2amarket.live/v1/listings/skill_042/pay" \
-H "Content-Type: application/json" \
-H "x-agent-id: agent_abc123" \
-d '{"payment_method": "credits"}'
No suspicious patterns detected.