Back to skill

Security audit

A2A Payments

Security checks for vulnerabilities and agentic risk

Overview

This payments skill is coherent, but it installs unpinned executable payment tooling and describes automatic USDC spending without enough user confirmation or trust controls.

Review this carefully before installing. Use it only with strict wallet spending limits, trusted services, and independent confirmation of each payment. Prefer a version-pinned, provenance-verified plugin release and avoid using automatic x402 payment against untrusted URLs.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Error
Location
SKILL.md:8
Finding
Unpinned Third-Party Plugin with Financial Transaction Capabilities## Vulnerability Details **File Location**: `SKILL.md`, lines 8–15 **Vulnerability Type**: Unpinned third-party dependency **Risk Level**: High ### Vulnerable Code ```json "install": [ { "id": "plugin", "kind": "node", "package": "@a2a/openclaw-plugin", "label": "Install A2A Corp plugin", }, ], ``` ### Technical Analysis The skill installs the third-party Node.js package `@a2a/openclaw-plugin` without specifying an exact version or integrity hash. The project contains no package lockfile or plugin source code with which to verify the resolved implementation. Consequently, installation may retrieve a future or compromised package version whose behavior differs from the version originally reviewed. This creates a supply-chain risk because the plugin is advertised as providing financially sensitive operations, including signed USDC payments, funded streaming channels, and automatic payments in response to HTTP 402 requests. The available evidence does not establish that the current package is malicious. The vulnerability is the absence of dependency pinning and verifiable integrity controls around executable third-party code. ### Attack Path 1. An attacker compromises the package publisher account, package distribution channel, or a future release of `@a2a/openclaw-plugin`. 2. The attacker publishes a malicious version under the same package name. 3. A user installs the skill, and the unconstrained dependency resolves to the malicious version. 4. The plugin executes in the agent environment with whatever tool, wallet, network, or payment privileges have been granted to it. 5. The malicious implementation abuses those privileges, such as by redirecting transactions, submitting unauthorized payments, or exposing payment-related information. Successful exploitation depends on compromise or malicious control of the dependency and on the runtime privileges granted to the installed plugin. ### Impact Assessment A malicious resolved depende ...[truncated 697 chars]
Remediation
## Remediation Suggestions 1. Pin `@a2a/openclaw-plugin` to a specific, reviewed version rather than allowing unconstrained resolution. 2. Commit and enforce a package lockfile containing registry-resolved integrity metadata. 3. Verify package publisher ownership, provenance, signatures, and release history before installation. 4. Include or otherwise make available the exact plugin source corresponding to the pinned artifact for security review. 5. Use a trusted registry and enforce integrity or cryptographic digest verification during installation. 6. Run the plugin with least privilege, separating balance queries from transaction-signing authority. 7. Require explicit user confirmation for each payment, channel deposit, and x402 transaction. 8. Validate chain ID, token contract, recipient, service identity, amount, and total fees before signing. 9. Enforce strict per-transaction and cumulative spending limits outside the plugin so that a compromised dependency cannot bypass them. 10. Isolate private keys in a dedicated signer or wallet service that applies independent policy controls and never exposes raw key material to the plugin.
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)

External Transmission

Medium
Category
Data Exfiltration
Content
For services using the HTTP 402 payment protocol:

```
Use apay_x402_fetch with url "https://api.example.com/premium/data" and maxPayment "1.00"
```

The tool automatically detects 402 responses, pays the required amount, and retries the request.
Confidence
80% confidence
Finding
The example instructs fetching an external URL and the surrounding text describes automatic payment and retry behavior against remote services. While external transmission is expected for this skill's purpose, sending requests to arbitrary third-party endpoints in combination with payment automation increases exposure to untrusted services that can trigger charges, collect request metadata, or influence agent behavior.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill explicitly states that `apay_x402_fetch` will automatically pay on HTTP 402 responses and retry the request, but it does not present a strong user-facing warning or require explicit confirmation at the point of spend. In a payments skill handling real USDC, this can lead to unintended fund expenditure, especially if a remote endpoint returns unexpected 402 challenges or manipulates pricing within the user's max payment threshold.

Static analysis

No suspicious patterns detected.