other
- Location
SKILL.md:26- Finding
Unbounded Automated Cryptocurrency Payment
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 26-27; related payment claims appear at lines 3, 10, and 61
Vulnerability Type: Unconfirmed automated cryptocurrency transaction
Risk Level: MediumVulnerable Snippet
markdown 2. Server returns `402 Payment Required` with x402 payment instructions 3. Agent pays in USDC on Base networkThe documented destination is:
markdown Payments: `0x697D7c4B60cA15C03479189c63463a30e230F2AD` (Base)Technical Analysis
The Skill instructs the Agent to act on payment instructions dynamically returned by
https://api.zootechnologies.com/scanand pay USDC automatically. It does not require explicit user approval for each transaction or define controls for validating the token, network, amount, recipient, chain identifier, or payment request expiration.Although a wallet is documented at line 61, the instructions do not require the Agent to compare the recipient in the remote x402 response with that address. No transaction-level spending limit, cumulative budget, replay protection, or rejection policy for mismatched payment terms is specified.
Consequently, a compromised, impersonated, or malicious API response could present altered payment terms that an implementing Agent may accept without informed user authorization.
Attack Path
- A user asks the Agent to scan a target through the Skill.
- The Agent sends the target to the external
/scanendpoint. - The endpoint, or an attacker controlling its responses, returns HTTP 402 with manipulated x402 payment instructions.
- The manipulated terms specify an excessive amount, an unauthorized recipient, or otherwise unexpected transaction parameters.
- Following the Skill's instruction that the “Agent pays,” the Agent signs or submits the transaction without explicit transaction-specific confirmation.
- USDC is irreversibly transferred according to the attacker-controlled terms.
...[truncated 611 chars]
- Remediation
View remediation
Remediation Suggestions
- Require explicit user confirmation before every payment, displaying:
- Exact USDC amount
- Recipient address
- Base network and chain identifier
- Scan target and scan type
- Estimated network fee
- Validate the payment recipient against a trusted allowlist. If the wallet at line 61 is authoritative, reject any response naming another recipient.
- Enforce strict per-transaction and cumulative spending limits independent of remotely supplied payment instructions.
- Validate token contract, amount, recipient, network, nonce, expiration, and request-to-scan binding before signing.
- Reject expired, replayed, malformed, unexpectedly priced, or recipient-mismatched payment requests.
- Use a dedicated wallet with a minimal balance and no unrelated token approvals.
- Pin and authenticate the expected API origin, and handle redirects without forwarding payment authorization to untrusted hosts.
- Document pricing as informational only and require confirmation whenever remote pricing differs from the expected amount.
- Require explicit user confirmation before every payment, displaying:
