Back to skill

Security audit

Agent Wallet

Security checks for vulnerabilities and agentic risk

Overview

This skill openly provides an agent-controlled crypto wallet, but its default unrestricted transaction authority needs careful review before use.

Install only if you are comfortable using a remote service to create and operate an agent wallet. Claim the wallet immediately, set restrictive policies before funding it, require human approval for transactions, keep the API key secret, and avoid mainnet or valuable assets until limits and approvals are verified.

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

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:135
Finding

Wallet Transactions Are Unrestricted by Default

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 135–151
Vulnerability Type: Default-allow authorization policy for financially sensitive operations
Risk Level: High

markdown
## Policies

The wallet owner controls what the agent can do by setting policies via the claim URL. If a transaction violates a policy, the API will reject it or require human approval via Telegram.

| Policy | What it does |
|--------|-------------|
| **Address allowlist** | Only allow transfers/calls to specific addresses |
| **Token allowlist** | Only allow transfers of specific ERC-20 tokens |
| **Function allowlist** | Only allow calling specific contract functions (by 4-byte selector) |
| **Spending limit (per tx)** | Max USD value per transaction |
| **Spending limit (daily)** | Max USD value per rolling 24 hours |
| **Spending limit (weekly)** | Max USD value per rolling 7 days |
| **Require approval** | Every transaction needs human approval via Telegram |
| **Approval threshold** | Transactions above a USD amount need human approval |

If no policies are set, all actions are allowed by default. Once the owner claims the wallet and adds policies, the agent operates within those boundaries.

Technical Analysis

The wallet uses an insecure default-allow authorization model. Until the owner claims the wallet and configures policies, the bearer API key can authorize every documented operation, including token transfers, swaps, and arbitrary smart-contract calls.

This creates a vulnerable period between wallet creation and policy configuration. The design relies on the owner completing an optional, out-of-band claim process rather than enforcing safe restrictions at wallet creation. Because the same bearer credential controls financially sensitive operations, compromise or misuse of that credential during this period can result in unrestricted transaction execution.

The risk is amplified by the documented arb ...[truncated 1813 chars]

Remediation
View remediation

Remediation Suggestions

  1. Replace the default-allow model with a default-deny policy. Reject all state-changing wallet operations until the wallet has been claimed and explicitly configured.
  2. Require mandatory human approval for every transaction before policy setup is complete.
  3. Prevent funding or clearly mark the wallet as inactive until ownership claim and policy initialization have succeeded.
  4. Apply conservative policies automatically at creation, including zero or minimal spending limits, empty destination and function allowlists, and disabled arbitrary contract calls.
  5. Issue narrowly scoped credentials rather than one bearer key with access to every wallet operation. Separate read-only balance access from transfer, swap, and arbitrary-call permissions.
  6. Support credential rotation, revocation, expiration, and secure server-side audit logging.
  7. Require explicit confirmation when enabling arbitrary transaction functionality and validate destination addresses, function selectors, calldata, value, and chain identifiers against owner-approved rules.
  8. Clearly instruct users not to deposit assets until the wallet has been claimed and all intended restrictions have been verified.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 30)May include surrounding context.

Create a new smart account wallet for your agent. This generates a private key server-side (you never see it), creates a ZeroDev smart account, and returns an API key for the agent plus a claim URL for the wallet owner.

bash
curl -X POST "${SAFESKILLS_API_URL:-https://safeskill-production.up.railway.app}/api/secrets" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "EVM_WALLET",

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill documents transfer, swap, and arbitrary transaction capabilities that can directly move funds or invoke smart contracts, but it does not prominently warn that these actions are irreversible and may cause total loss of assets. In an agent context, operators may treat these examples as routine API calls rather than financially dangerous operations, increasing the chance of unsafe autonomous use.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The statement that all actions are allowed by default if no policies are set is a significant security risk because it creates a fail-open wallet configuration for an autonomous agent capable of transfers, swaps, and arbitrary calldata execution. Without a highly visible warning, users may deploy the wallet assuming protections exist, leaving funds exposed to prompt injection, agent mistakes, or misuse of the API key.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.